적응형 가격 구역 역전 거래 전략

저자:차오장, 날짜: 2023-12-13 16:33:33
태그:

img

1. 전략 개요

이 전략은적응형 가격 구역 역전 거래 전략. 가격 영역을 식별하기 위해 적응 가격 영역 (APZ) 지표를 사용하며 가격이 영역을 벗어날 때 거래 신호를 생성합니다. APZ 지표는 이중 기하급수적인 이동 평균과 변동성을 기반으로 상부 및 하부 영역 경계를 계산합니다. 가격이 경계를 넘어서면 잠재적 인 가격 반전과 거래 기회를 나타냅니다.

이 전략은 주로 범위 제한 시장, 특히 통합 시장에 적합합니다. 자동 거래 시스템의 일부로 내일 또는 단기 거래에 사용할 수 있으며 모든 거래 가능한 자산에 적용됩니다. 요약하면 APZ 지표의 도움을 활용하고 가격 구역 경계에 반전 거래를합니다.

2. 전략 논리

이 전략은 APZ 지표를 사용하여 가격 구역을 결정하고 다음과 같은 구체적인 계산을 합니다.

  1. 지난 n 기간 동안 가장 높은 최고와 가장 낮은 최저 사이의 차이를 계산합니다 (전산 20 기간), xHL라고 불립니다.
  2. 이중 지수 이동 평균을 사용하여 xVal1라고 불리는 평형 폐쇄 가격 xVal1과 xHL 평형화 기간을 계산합니다. 평형화 기간은 n의 제곱근의 둥근 정수입니다. (20의 제곱근 = 4)
  3. 상단 대역 = xVal1 + nBandPct * xVal2를 계산합니다.
  4. 하위 대역 = xVal1 - nBandPct * xVal2를 계산합니다.

상단 및 하단은 적응 가격 구역을 구성합니다. 가격은 이 구역을 통과 할 때 거래 신호가 생성됩니다. 신호 규칙은 다음과 같습니다.

  1. 가격이 하위 밴드 아래로 떨어지면 긴 신호가 생성됩니다.
  2. 가격이 상단 범위를 넘으면 짧은 신호가 생성됩니다.

또한, 역 거래 스위치 매개 변수 reverse가 포함되어 있습니다. 역 거래가 활성화되면 긴 신호와 짧은 신호는 위의 규칙의 반대 방식으로 작동합니다.

요약하자면, 이 전략은 적응 가격 영역을 결정하기 위해 APZ 지표를 사용하며, 가격이 영역 경계를 벗어날 때 반전 거래 신호를 생성합니다. 이것은 전형적인 트렌드 반전 추적 전략에 속합니다.

3. 이점 분석

이 전략의 주요 장점은 다음과 같습니다.

  1. APZ 지표는 수동 지원 및 저항 설정을 피하여 가격 영역을 적응적으로 결정할 수 있습니다.
  2. 가격이 지역 경계를 넘어서면 반전 거래를 할 수 있으며, 단기 가격 조정 기회를 잡습니다.
  3. 역거래 매개 변수를 통해 하향 거래를 허용합니다.
  4. 더 많은 단기 기회를 잡기 위해 상대적으로 높은 거래 빈도를 가지고 있습니다.
  5. 리스크를 제어하기 위해 스톱 로스 전략과 유연하게 결합될 수 있습니다.

4. 위험 분석

또한 이 전략에는 다음과 같은 영역에서 몇 가지 위험이 있습니다.

  1. 잘못된 APZ 매개 변수 설정은 가격 반전 기회를 놓칠 수 있습니다.
  2. 다양한 시장에서 여러 개의 가짜 브레이크의 가능성이 있습니다.
  3. 스톱 로스 전략의 부재로 인해 엄청난 손실이 발생할 수 있습니다

제안된 완화 방안은 다음과 같습니다.

  1. 적절한 평형 기간을 찾기 위해 APZ 매개 변수를 조정
  2. 거짓 유출을 필터링하기 위해 다른 지표를 사용
  3. 단일 트레이드에서 손실을 제어하기 위해 이동 스톱 손실을 추가합니다.

5. 최적화 방향

이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.

  1. 변동성 지표와 결합하여 최저 매입과 최저 매출을 결정합니다.
  2. 중량 부피와 같은 파열 강도에 대한 요구 사항을 추가하십시오.
  3. 특정 세션에서만 거래합니다. 미국 정오처럼.
  4. 전체 시장 동향을 결정하기 위해 이동 평균 시스템을 통합합니다.
  5. 불필요한 구매 및 판매를 피하는 입점 가격 구역을 설정

6. 요약

요약하자면, 이것은 APZ 지표를 사용하여 가격 영역을 캡처하고 구역 경계에 반전 거래를하는 단기 반전 전략입니다. 장점은 높은 거래 빈도와 가격 영역을 적응적으로 조정 할 수있는 능력입니다. 그러나 최적화 및 추가 도구로 해결해야하는 잘못된 브레이크의 위험도 있습니다.


/*backtest
start: 2023-12-05 00:00:00
end: 2023-12-11 08:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 15/01/2020
//
// The adaptive price zone (APZ) is a volatility-based technical indicator that helps investors 
// identify possible market turning points, which can be especially useful in a sideways-moving 
// market. It was created by technical analyst Lee Leibfarth in the article “Identify the 
// Turning Point: Trading With An Adaptive Price Zone,” which appeared in the September 2006 issue 
// of the journal Technical Analysis of Stocks and Commodities.
// This indicator attempts to signal significant price movements by using a set of bands based on 
// short-term, double-smoothed exponential moving averages that lag only slightly behind price changes. 
// It can help short-term investors and day traders profit in volatile markets by signaling price 
// reversal points, which can indicate potentially lucrative times to buy or sell. The APZ can be 
// implemented as part of an automated trading system and can be applied to the charts of all tradeable assets.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////

strategy(title="Adaptive Price Zone Backtest", shorttitle="APZ", overlay = true)
nPeriods = input(20, minval=1)
nBandPct = input(2, minval=0)
reverse = input(false, title="Trade reverse")
xHL = high - low
nP = ceil(sqrt(nPeriods))
xVal1 = ema(ema(close,nP), nP)
xVal2 = ema(ema(xHL,nP), nP)
UpBand = nBandPct * xVal2 + xVal1
DnBand = xVal1 - nBandPct * xVal2
pos = 0
pos := iff(low < DnBand , 1,
	   iff(high > UpBand, -1, pos[1])) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1 , 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )

더 많은