
이 전략은 ADX 지표를 사용하여 브레이크 신호를 필터링하는 짧은 라인 거래 전략입니다. 가격이 볼링거 부린을 뚫고 궤도에 올랐을 때, ADX가 내려갈 때, 공백; 가격이 볼링거 부린을 뚫고 궤도에 내려갈 때, ADX가 올라갈 때, 더 많이하십시오. 이 전략은 동시에 중지 손실과 중지, 완전히 자동 거래합니다.
이 전략은 Bollinger Bollinger Bands를 주요 돌파 신호로 사용한다. 부린 밴드 상향 경로는 가격의 두 배 표준 차이를 나타냅니다. 부린 밴드 상향 경로는 일반적으로 가격의 강력한 트렌드 단계에 들어가는 것을 나타냅니다. 또한, 가짜 돌파를 방지하기 위해 이 전략은 ADX 지표를 필터링 조건으로 추가했습니다. 부린 밴드 상향 경로는 ADX가 하락했을 때만 고려되며, ADX가 상승했을 때만 부린 밴드 하향 경로는 고려됩니다.
구체적으로, 이 전략은 33주기 길이의 종전 가격을 계산하는 부린 띠를 사용합니다. 부린 띠의 중간 궤도는 종전 가격의 33주기 간단한 이동 평균이며, 상하 궤도는 중하 궤도의 아래 두 표준 차입니다. 지표 파라미터는 종전 가격이 궤도를 벗어나면 8주기 ADX가 15주기 ADX보다 작을 때 공백으로 설정되며, 종전 가격이 궤도를 벗어나면 8주기 ADX가 15주기 ADX보다 클 때 공백을 합니다. 평평한 포지션은 800 점의 정지, 400 점의 손실로 설정됩니다.
이것은 트렌드 및 주파수 지표 필터링 신호를 결합한 획기적인 전략으로 다음과 같은 장점이 있습니다.
이 전략에는 몇 가지 위험도 있습니다.
이러한 위험을 줄이기 위해, 우리는 브린 대역을 조정하여 브린 대역 범위를 축소할 수 있습니다. ADX 주기 변수를 조정하여 과도한 오버라이드 신호를 방지하고, 단독 손실을 제어하기 위해 스톱 레이스를 적절히 축소합니다. 물론, 이러한 최적화는 재검토 검증이 필요하며, 과도한 적합성을 방지합니다.
이 전략에는 더 많은 최적화 가능성은 있습니다:
이 전략은 전체적으로 간단하고 실용적인 돌파구 필터링 전략이다. 브린 띠를 통해 트렌드를 판단하고, ADX 필터링 신호를 통해, 흔들리는 시장의 잡음을 어느 정도 회피하고, 트렌드 기회를 잡을 수 있다. 최적화 공간이 넓고, 추가 테스트 및 개선에 가치가 있다.
/*backtest
start: 2023-12-27 00:00:00
end: 2024-01-03 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Hizbullah XAUUSD Sniper", overlay=true)
Price = close
Length = input(33)
Mult = input(2)
Basis = sma(Price, Length)
StdDev = Mult * stdev(Price, Length)
Upper = Basis + StdDev
Lower = Basis - StdDev
ADX_Length = input(4)
TrueRange = max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1])))
SmoothedTrueRange = sma(TrueRange, ADX_Length)
DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? max(high-nz(high[1]), 0): 0
DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? max(nz(low[1])-low, 0): 0
SmoothedDirectionalMovementPlus = sma(DirectionalMovementPlus, ADX_Length)
SmoothedDirectionalMovementMinus = sma(DirectionalMovementMinus, ADX_Length)
DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100
DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100
DX = abs(DIPlus - DIMinus) / (DIPlus + DIMinus)*100
SmoothedADX1 = ema(DX, input(8))
SmoothedADX2 = ema(DX, input(15))
Condition1 = crossunder(Price, Upper) and SmoothedADX1 < SmoothedADX2
Take_Profit = input(800)
Stop_Loss = input(400)
strategy.entry("ShortEntry", true, when = Condition1)
strategy.exit("ShortExit", "ShortEntry", profit = Take_Profit, loss = Stop_Loss)