이 전략은 ATR 지표와 함께 설계된 동적 트래일링 스톱 로스 메커니즘을 기반으로 실시간으로 스톱 로스를 조정하며 수익을 극대화하기 위해 효과적인 스톱 로스를 보장합니다.
이 전략은 빠른 ATR 기간 5과 느린 ATR 기간 10을 사용하여 이중 계층 동적 트레일링 스톱 손실을 구축합니다. 가격이 유리한 방향으로 움직일 때 빠른 계층은 먼저 트레일링 스톱을 활성화하여 스톱 손실을 강화합니다. 단기적 인 인퇴가있을 때 느린 계층 스톱 손실은 조기 중단을 피할 수 있습니다. 한편, 빠르고 느린 계층 사이의 크로스오버는 거래 신호로 사용됩니다.
특히, 빠른 계층의 스톱 손실 거리는 5 기간 ATR의 0.5 배이며 느린 계층의 스톱 손실 거리는 10 기간 ATR의 3 배입니다. 빠른 계층이 느린 계층 위에 넘어가면 구매 신호가 생성되며 빠른 계층이 느린 계층 아래에 넘어가면 판매 신호가 생성됩니다. 스톱 손실 라인은 또한 실시간으로 업데이트되며 가격 곡선 아래에 그래프됩니다.
이 전략의 가장 큰 장점은 효과적인 스톱 손실을 보장하면서 수익을 극대화하기 위해 스톱 손실 위치를 동적으로 조정할 수 있다는 것입니다. 고정 스톱 손실 거리와 비교하면 동적 ATR 스톱 손실 라인은 시장의 변동에 따라 조정하여 스톱 손실이 발생할 가능성을 줄일 수 있습니다.
또한, 이중 계층 ATR 디자인은 스톱 손실의 민감성을 균형 잡습니다. 빠른 계층은 신속하게 반응하고 느린 계층은 조기 스톱 손실을 피하기 위해 단기 잡음을 필터링 할 수 있습니다.
이 전략의 주요 위험은 스톱 로스 거리의 설정이 합리적인지 여부에 있다. ATR 멀티플라이저가 너무 높게 설정되면 스톱 로스 범위는 가격 움직임에 따라가지 않을 것이다. ATR 멀티플라이저가 너무 작으면 단기 소음으로 인해 중단될 가능성이 있다. 따라서 매개 변수를 다른 품종의 특성에 따라 조정해야 한다.
또한, 범위에 묶인 시장에서 ATR 값은 작고 스톱 로스 라인은 더 가깝고, 이는 종종 스톱 로스로 이어질 수 있습니다. 따라서이 전략은 특정 변동성을 가진 품종에 더 적합합니다.
최적의 균형을 찾기 위해 ATR 사이클 매개 변수의 다른 조합을 시도 할 수 있습니다. 또한 시장 단계를 판단하기 위해 트렌드 지표와 같은 다른 지표와 결합하는 것을 고려 할 수 있습니다.
또한 ATR 지표의 대안을 연구 할 수 있습니다. DKVOL, HRANGE 또는 ATR 비율 등으로 ATR을 대체하면 더 나은 스톱 손실 효과를 얻을 수 있습니다.
이 전략은 과도한 스톱 손실을 피하면서 수익을 극대화하기 위해 ATR 지표를 기반으로 한 이층 동적 추적 메커니즘을 설계합니다. 이 전략은 스톱 손실에 대한 요구 사항이 높은 사용자에게 적합합니다. 이 전략은 최적의 스톱 손실 효과를 달성하기 위해 시장 및 품종 특성에 따라 매개 변수를 유연하게 조정할 수 있습니다.
/*backtest start: 2022-12-04 00:00:00 end: 2023-12-10 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("ATR Trailing Stop Strategy by ceyhun", overlay=true) /////////notes//////////////////////////////////////// // This is based on the ATR trailing stop indicator // // width addition of two levels of stops and // // different interpretation. // // This is a fast-reacting system and is better // // suited for higher volatility markets // ////////////////////////////////////////////////////// SC = input(close, "Source", input.source) // Fast Trail // AP1 = input(5, "Fast ATR period", input.integer) // ATR Period AF1 = input(0.5, "Fast ATR multiplier", input.float) // ATR Factor SL1 = AF1 * atr(AP1) // Stop Loss Trail1 = 0.0 Trail1 := iff(SC > nz(Trail1[1], 0) and SC[1] > nz(Trail1[1], 0), max(nz(Trail1[1], 0), SC - SL1), iff(SC < nz(Trail1[1], 0) and SC[1] < nz(Trail1[1], 0), min(nz(Trail1[1], 0), SC + SL1), iff(SC > nz(Trail1[1], 0), SC - SL1, SC + SL1))) // Slow Trail // AP2 = input(10, "Slow ATR period", input.integer) // ATR Period AF2 = input(3, "Slow ATR multiplier", input.float) // ATR Factor SL2 = AF2 * atr(AP2) // Stop Loss Trail2 = 0.0 Trail2 := iff(SC > nz(Trail2[1], 0) and SC[1] > nz(Trail2[1], 0), max(nz(Trail2[1], 0), SC - SL2), iff(SC < nz(Trail2[1], 0) and SC[1] < nz(Trail2[1], 0), min(nz(Trail2[1], 0), SC + SL2), iff(SC > nz(Trail2[1], 0), SC - SL2, SC + SL2))) // Bar color for trade signal // Green = Trail1 > Trail2 and close > Trail2 and low > Trail2 Blue = Trail1 > Trail2 and close > Trail2 and low < Trail2 Red = Trail2 > Trail1 and close < Trail2 and high < Trail2 Yellow = Trail2 > Trail1 and close < Trail2 and high > Trail2 // Signals // Bull = barssince(Green) < barssince(Red) Buy = crossover(Trail1, Trail2) Sell = crossunder(Trail1, Trail2) TS1 = plot(Trail1, "Fast Trail", style=plot.style_line, color=Trail1 > Trail2 ? color.blue : color.yellow, linewidth=2, display=display.none) TS2 = plot(Trail2, "Slow Trail", style=plot.style_line, color=Trail1 > Trail2 ? color.green : color.red, linewidth=2) fill(TS1, TS2, Bull ? color.new(color.green, 90) : color.new(color.red, 90)) plotcolor = input(true, "Paint color on chart", input.bool) bcl = iff(plotcolor == 1, Blue ? color.blue : Green ? color.lime : Yellow ? color.yellow : Red ? color.red : color.white, na) barcolor(bcl) if Buy strategy.entry("Buy", strategy.long, comment="Buy") if Sell strategy.close("Buy")