Strategi ini didasarkan pada mekanisme stop loss trailing dinamis yang dirancang dengan indikator ATR untuk menyesuaikan stop loss secara real time sambil memastikan stop loss yang efektif untuk memaksimalkan keuntungan.
Strategi ini menggunakan periode ATR cepat 5 dan periode ATR lambat 10 untuk membangun stop loss trailing dinamis dua lapisan. Ketika harga berjalan ke arah yang menguntungkan, lapisan cepat akan mengaktifkan stop trailing pertama untuk memperketat stop loss; ketika ada pullback jangka pendek, stop loss lapisan lambat dapat menghindari stop out prematur. Sementara itu, persilangan antara lapisan cepat dan lambat berfungsi sebagai sinyal perdagangan.
Secara khusus, jarak stop loss dari lapisan cepat adalah 0,5 kali ATR 5 periode, dan jarak stop loss dari lapisan lambat adalah 3 kali ATR 10 periode. Sinyal beli dihasilkan ketika lapisan cepat pecah di atas lapisan lambat, dan sinyal jual dihasilkan ketika lapisan cepat pecah di bawah lapisan lambat.
Keuntungan terbesar dari strategi ini adalah bahwa ia dapat secara dinamis menyesuaikan posisi stop loss untuk memaksimalkan keuntungan sambil memastikan stop loss yang efektif.
Selain itu, desain ATR dua lapisan menyeimbangkan sensitivitas stop loss. lapisan cepat merespons dengan cepat dan lapisan lambat dapat menyaring kebisingan jangka pendek untuk menghindari stop loss prematur.
Risiko utama dari strategi ini terletak pada apakah pengaturan jarak stop loss wajar. Jika pengganda ATR diatur terlalu tinggi, rentang stop loss tidak akan mengikuti pergerakan harga. Jika pengganda ATR terlalu kecil, cenderung dihentikan oleh kebisingan jangka pendek. Oleh karena itu, parameter perlu disesuaikan sesuai dengan karakteristik varietas yang berbeda.
Selain itu, dalam pasar yang terikat kisaran, nilai ATR lebih kecil dan garis stop loss lebih dekat, yang dapat dengan mudah menyebabkan stop loss yang sering.
Kombinasi yang berbeda dari parameter siklus ATR dapat dicoba untuk menemukan keseimbangan yang optimal. juga dapat mempertimbangkan kombinasi dengan indikator lain, seperti indikator tren untuk menilai tahap pasar, sehingga secara dinamis menyesuaikan ukuran ATR multiplier.
Hal ini juga mungkin untuk mempelajari alternatif untuk indikator ATR, menggantikan ATR dengan DKVOL, HRANGE atau ATR Persentase, dll dapat mencapai efek stop loss yang lebih baik.
Strategi ini merancang mekanisme trailing dinamis dua lapisan berdasarkan indikator ATR untuk memaksimalkan keuntungan sambil menghindari stop loss yang berlebihan. Ini cocok untuk pengguna yang memiliki persyaratan yang lebih tinggi untuk stop loss. Strategi ini dapat menyesuaikan parameter secara fleksibel sesuai dengan karakteristik pasar dan varietas untuk mencapai efek stop loss yang optimal.
/*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")