이 전략은 가격 트렌드를 파악하기 위해 평균 진정한 범위 (ATR) 를 사용하며 트렌드를 따르는 ATR을 기반으로 정지점을 설정합니다.
ATR 값을 계산합니다.
ATR을 기반으로 스톱 손실 수준을 결정합니다.
가격 경류 정지 수준에 따라 긴 / 짧은 입력합니다.
역동적으로 정지를 조정하여 수익을 차단합니다.
이 전략은 ATR을 사용하여 트렌드를 효과적으로 잡으며 동적 스톱으로 수익을 잠금합니다. 미세 조정 매개 변수는 성능을 향상시킬 수 있습니다. 그러나 ATR 지연은 완전히 제거 할 수 없습니다. 전반적으로 간단하고 실용적인 트렌드 다음 솔루션입니다.
/*backtest start: 2022-09-14 00:00:00 end: 2023-09-20 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ strategy(title="ATR Strategy", overlay = true, commission_type=strategy.commission.percent,commission_value=0.075) //credits to HPotter for the orginal code nATRPeriod = input(5) nATRMultip = input(3.5) xATR = ta.atr(nATRPeriod) nLoss = nATRMultip * xATR xATRTrailingStop = iff(close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), math.max(nz(xATRTrailingStop[1]), close - nLoss), iff(close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), math.min(nz(xATRTrailingStop[1]), close + nLoss), iff(close > nz(xATRTrailingStop[1], 0), close - nLoss, close + nLoss))) pos = iff(close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0), 1, iff(close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0))) color = pos == -1 ? color.red: pos == 1 ? color.green : color.blue plot(xATRTrailingStop, color=color, title="ATR Trailing Stop") barbuy = close > xATRTrailingStop barsell = close < xATRTrailingStop strategy.entry("Long", strategy.long, when = barbuy) strategy.entry("Short", strategy.short, when = barsell) barcolor(barbuy? color.green:color.red)