Strategi ini yang dinamakan
Strategi ini menggunakan penunjuk ATR untuk menetapkan harga stop loss. ATR mencerminkan turun naik pasaran dan boleh digunakan untuk menetapkan jarak stop loss secara dinamik. Strategi ini mengira nilai ATR berdasarkan tempoh dan pengganda input pengguna ATR, dan menggunakan nilai ATR dikalikan dengan pengganda sebagai jarak stop loss. Khususnya, formula pengiraan stop trailing ATR adalah:
ATR Line = Prior ATR Line ± nLoss (nLoss = nATRMultip * ATR value)
If close > ATR Line, adjust ATR Line up to close - nLoss
If close < ATR Line, adjust ATR Line down to close + nLoss
Dengan cara ini, garis ATR boleh menyesuaikan secara dinamik berdasarkan turun naik harga untuk mencapai trend selepas stop loss.
Sebagai tambahan kepada hentian trailing ATR, strategi ini juga menggunakan saluran penyimpangan standard untuk menentukan isyarat masuk.
Middle Line = ATR Trailing Stop Line
Upper Band = Middle Line + n * Standard Deviation
Lower Band = Middle Line - n * Standard Deviation
Pergi panjang apabila harga melangkau garisan tengah ke atas. Pergi pendek apabila harga melangkau garisan tengah ke bawah.
Kelebihan terbesar strategi ini ialah ia menggunakan penunjuk ATR untuk menetapkan stop loss secara dinamik berdasarkan turun naik pasaran, membolehkan trend selepas stop loss dan kawalan risiko yang berkesan.
Di samping itu, menggunakan saluran penyimpangan standard untuk isyarat masuk mengelakkan kerap membuka kedudukan kerana turun naik harga yang kecil.
Risiko utama ialah jika jarak stop loss terlalu besar ia tidak dapat mengawal risiko dengan berkesan, tetapi jika terlalu kecil ia boleh dengan mudah dihentikan oleh bunyi pasaran.
Risiko lain adalah parameter saluran penyimpangan piawai yang tidak sesuai yang membawa kepada frekuensi masuk yang terlalu tinggi / rendah.
Strategi ini boleh ditingkatkan dari aspek berikut:
Mengoptimumkan tempoh ATR dan pengganda untuk mencapai kesan stop loss yang lebih baik.
Mengoptimumkan parameter saluran penyimpangan standard untuk isyarat kemasukan yang lebih baik.
Tambahkan penunjuk lain untuk penapisan, contohnya purata bergerak, corak candlestick dan lain-lain, untuk membantu menilai arah trend dan meningkatkan keuntungan.
Mengoptimumkan logik masuk dan keluar, contohnya kedudukan terbuka hanya selepas mengesahkan corak lilin apabila harga mencapai jalur saluran.
Strategi ini mencapai trend mengikuti stop loss berdasarkan penunjuk ATR dan menggunakan saluran penyimpangan standard untuk isyarat kemasukan. Kelebihannya terletak pada keupayaan kawalan risiko yang baik untuk perdagangan trend. Risiko dan penambahbaikan juga dianalisis dengan jelas. Strategi ini bernilai ujian dan pengoptimuman lanjut dan mempunyai nilai perdagangan praktikal.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version = 2 strategy(title="Average True Range Strategy", overlay = true) nATRPeriod = input(11) //Hur många perioder ATR är på nATRMultip = input(0.5) //Hur många gånger nuvarande ATR multipliceras med xATR = atr(nATRPeriod) nLoss = nATRMultip * xATR xATRTrailingStop = iff(close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), close - nLoss), iff(close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), 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))) stdev3 = 14*stdev(xATR, nATRPeriod) band1 = xATRTrailingStop+stdev3 //Översta stdev bandet band2 = xATRTrailingStop-stdev3 //Nedersta stdev bandet // Datum och tid FromMonth = input(defval = 8, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 18, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2013, title = "From Year", minval = 2013) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 2020, title = "To Year", minval = 2017) start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest slut startTimeOk() => true initial_capital = 100000 take = close > xATRTrailingStop if( startTimeOk() ) and (pos == 1) //if (pos == 1) strategy.entry("Long", strategy.long, comment = "KOP") strategy.exit("Long", when = take) if( startTimeOk() ) and (pos == -1) //if (pos == -1) strategy.entry("Short", strategy.short, comment = "SALJ") barcolor(pos == -1 ? red: pos == 1 ? green : blue ) plot(xATRTrailingStop, color=red, title="ATR Trailing Stop") //Mittersta linjen som är triggerlinjen för köp/sälj plot(band1, color=red) plot(band2, color=blue)