Trend ATR Mengikut Strategi Berdasarkan Saluran Penyimpangan Standar

Penulis:ChaoZhang, Tarikh: 2024-01-05 16:34:27
Tag:

img

Ringkasan

Strategi ini yang dinamakan ATR Trend Following Strategy adalah strategi perdagangan mengikut trend berdasarkan Julat Benar Purata (ATR) untuk stop loss dan saluran penyimpangan standard untuk isyarat kemasukan.

Logik Perdagangan

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

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 dan Penyelesaian

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.

Peluang Peningkatan

Strategi ini boleh ditingkatkan dari aspek berikut:

  1. Mengoptimumkan tempoh ATR dan pengganda untuk mencapai kesan stop loss yang lebih baik.

  2. Mengoptimumkan parameter saluran penyimpangan standard untuk isyarat kemasukan yang lebih baik.

  3. Tambahkan penunjuk lain untuk penapisan, contohnya purata bergerak, corak candlestick dan lain-lain, untuk membantu menilai arah trend dan meningkatkan keuntungan.

  4. Mengoptimumkan logik masuk dan keluar, contohnya kedudukan terbuka hanya selepas mengesahkan corak lilin apabila harga mencapai jalur saluran.

Ringkasan

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)



Lebih lanjut