Strategi ini menggunakan sasaran keuntungan dinamik dan menghentikan kerugian yang menyesuaikan berdasarkan harga semasa dan turun naik.
Logikanya ialah:
Mengira Julat Benar Purata (ATR) dalam tempoh (contohnya 20 hari)
Dalam trend menaik, sasaran keuntungan / berhenti adalah harga tertinggi dikurangkan ATR kelipatan
Dalam trend menurun, sasaran keuntungan/berhenti adalah harga terendah ditambah kelipatan ATR
Perdagangan terbalik apabila harga melebihi sasaran keuntungan/berhenti
Perubahan trend apabila harga melanggar sasaran keuntungan / berhenti
Penyesuaian sasaran keuntungan/berhenti berdasarkan keadaan trend baru
Strategi ini memanfaatkan ATR untuk menetapkan sasaran keuntungan dan berhenti yang dinamik secara automatik. Ini membolehkan kunci keuntungan tepat pada masanya dan mencegah kerugian berlebihan.
ATR secara automatik mengira tahap keuntungan/henti
Laluan penyesuaian dinamik harga dalam masa nyata
Pengendalian risiko mengambil keuntungan dan menghentikan masa
Parameter ATR memerlukan pengoptimuman
Berhenti terlalu dekat risiko akan dihentikan
Perlu memantau perubahan ATR masa nyata
Strategi ini menggunakan ATR untuk menetapkan tahap keuntungan / henti secara dinamik untuk pengunduran automatik. Penyesuaian ATR boleh meningkatkan prestasi henti. Tetapi henti yang terlalu ketat memerlukan berhati-hati.
/*backtest start: 2023-01-01 00:00:00 end: 2023-09-13 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("Dhananjay Volatility stop strategy v1.0", overlay=true) length = input(20) mult = input(1) atr_ = atr(length) max1 = max(nz(max_[1]), close) min1 = min(nz(min_[1]), close) is_uptrend_prev = nz(is_uptrend[1], true) stop = is_uptrend_prev ? max1 - mult * atr_ : min1 + mult * atr_ vstop_prev = nz(vstop[1]) vstop1 = is_uptrend_prev ? max(vstop_prev, stop) : min(vstop_prev, stop) is_uptrend = close - vstop1 >= 0 is_trend_changed = is_uptrend != is_uptrend_prev max_ = is_trend_changed ? close : max1 min_ = is_trend_changed ? close : min1 vstop = is_trend_changed ? is_uptrend ? max_ - mult * atr_ : min_ + mult * atr_ : vstop1 plot(vstop, color = is_uptrend ? green : red, style=line, linewidth=2) bearish = close < vstop bullish = close > vstop if (bullish) strategy.entry("Buy", strategy.long, 1) if (bearish) strategy.entry("Sell", strategy.short, 1)