Strategi ini menggunakan Average True Range (ATR) untuk menangkap tren harga dan menetapkan berhenti berdasarkan ATR untuk mengikuti tren.
Menghitung nilai ATR.
Tentukan tingkat stop loss berdasarkan ATR.
Masukkan panjang/pendek ketika harga melanggar stop level.
Mengunci keuntungan dengan menyesuaikan berhenti secara dinamis.
Strategi ini secara efektif menangkap tren menggunakan ATR dan mengunci keuntungan dengan berhenti dinamis. Parameter penyesuaian halus dapat meningkatkan kinerja.
/*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)