Tren ATR Mengikuti Strategi Berdasarkan Saluran Penyimpangan Standar

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

img

Gambaran umum

Strategi ini bernama ATR Trend Following Strategy adalah strategi trading trend following berdasarkan Average True Range (ATR) untuk stop loss dan saluran standar deviasi untuk sinyal entry.

Logika Perdagangan

Strategi ini menggunakan indikator ATR untuk mengatur harga stop loss. ATR mencerminkan volatilitas pasar dan dapat digunakan untuk mengatur jarak stop loss secara dinamis. Strategi ini menghitung nilai ATR berdasarkan input pengguna periode ATR dan pengganda, dan menggunakan nilai ATR dikalikan dengan pengganda sebagai jarak stop loss. Secara khusus, rumus perhitungan trailing stop 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 dapat menyesuaikan secara dinamis berdasarkan fluktuasi harga untuk mencapai tren setelah stop loss.

Selain ATR trailing stop, strategi ini juga menggunakan saluran penyimpangan standar untuk menentukan sinyal masuk.

Middle Line = ATR Trailing Stop Line   
Upper Band = Middle Line + n * Standard Deviation
Lower Band = Middle Line - n * Standard Deviation

Pergi panjang saat harga menembus garis tengah ke atas. Pergi pendek ketika harga menembus garis tengah ke bawah.

Keuntungan

Keuntungan terbesar dari strategi ini adalah bahwa ia menggunakan indikator ATR untuk mengatur stop loss secara dinamis berdasarkan volatilitas pasar, memungkinkan tren setelah stop loss dan pengendalian risiko yang efektif.

Selain itu, menggunakan saluran standar deviasi untuk sinyal masuk menghindari posisi yang sering dibuka karena fluktuasi harga yang kecil.

Risiko dan Solusi

Risiko utama adalah bahwa jika jarak stop loss terlalu besar maka tidak dapat mengendalikan risiko secara efektif, tetapi jika terlalu kecil maka dapat dengan mudah dihentikan oleh kebisingan pasar.

Risiko lain adalah parameter saluran standar deviasi yang tidak tepat yang mengarah pada frekuensi masuk yang terlalu tinggi / rendah.

Peluang Peningkatan

Strategi dapat ditingkatkan dari aspek berikut:

  1. Mengoptimalkan periode ATR dan pengganda untuk mencapai efek stop loss yang lebih baik.

  2. Mengoptimalkan parameter saluran standar penyimpangan untuk sinyal masuk yang lebih baik.

  3. Tambahkan indikator lain untuk penyaringan, misalnya rata-rata bergerak, pola candlestick dll, untuk membantu menilai arah tren dan meningkatkan profitabilitas.

  4. Mengoptimalkan masuk dan keluar logika, misalnya posisi terbuka hanya setelah mengkonfirmasi pola candlestick ketika harga mencapai saluran band.

Ringkasan

Strategi ini mencapai trend setelah stop loss berdasarkan indikator ATR dan menggunakan saluran standar deviasi untuk sinyal masuk. Keuntungannya terletak pada kemampuan kontrol risiko yang baik untuk perdagangan tren. Risiko dan peningkatan juga dianalisis dengan jelas. Strategi ini layak untuk pengujian dan optimasi lebih lanjut dan memiliki nilai perdagangan praktis.


/*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 banyak