Strategi perdagangan mengikuti tren berdasarkan saluran ATR dan deviasi standar


Tanggal Pembuatan: 2024-01-05 16:34:27 Akhirnya memodifikasi: 2024-01-05 16:34:27
menyalin: 0 Jumlah klik: 931
1
fokus pada
1617
Pengikut

Strategi perdagangan mengikuti tren berdasarkan saluran ATR dan deviasi standar

Ringkasan

Strategi ini disebut dengan strategi pelacakan tren ATR. Strategi ini adalah strategi perdagangan pelacakan tren berdasarkan stop loss yang ditetapkan berdasarkan rata-rata real volatilitas (ATR) dan menggunakan saluran standar deviasi untuk menentukan waktu masuk ke pasar. Strategi ini berlaku untuk produk keuangan yang memiliki tren yang jelas seperti indeks saham, mata uang asing, dan komoditas.

Prinsip Strategi

Strategi ini menggunakan indikator ATR untuk mengatur harga stop loss. Indikator ATR mencerminkan tingkat fluktuasi pasar, dan jarak stop loss dapat diatur secara dinamis. Strategi ini menghitung nilai ATR dengan memasukkan siklus dan kelipatan ATR, lalu kalikan dengan kelipatan sebagai jarak stop loss.

ATR线 = 前一日ATR线 ± nLoss(nLoss = nATRMultip * ATR值)

若收盘价 > ATR线,ATR线上调至收盘价 - nLoss 
若收盘价 < ATR线,ATR线下调至收盘价 + nLoss

Dengan demikian, ATR dapat secara dinamis menyesuaikan dengan fluktuasi harga, sehingga memungkinkan stop loss yang mengikuti tren.

Selain stop loss ATR, strategi ini juga menggunakan saluran standar deviasi untuk menentukan waktu masuk ke pasar. Rumus perhitungan saluran standar deviasi adalah:

中线 = ATR止损线
上轨 = 中线 + n倍标准差
下轨 = 中线 - n倍标准差  

Ketika harga dari bawah ke atas menembus garis tengah, lakukan lebih banyak; ketika harga dari atas ke bawah menembus garis tengah, lakukan lebih sedikit.

Keunggulan Strategis

Keuntungan terbesar dari strategi ini adalah bahwa menggunakan indikator ATR sebagai alat stop loss, dapat secara dinamis menyesuaikan jarak stop loss sesuai dengan tingkat fluktuasi pasar, memungkinkan trend tracking stop loss, dan pengendalian risiko yang efektif.

Selain itu, dengan mengkombinasikan penilaian waktu masuk ke pasar dengan channel standar deviasi, dapat dihindari seringnya pembukaan posisi karena lonjakan harga yang kecil.

Risiko dan Solusi

Risiko utama dari strategi ini adalah bahwa stop loss yang terlalu lama tidak dapat mengontrol risiko secara efektif; stop loss yang terlalu lama dapat terganggu oleh kebisingan pasar. Untuk risiko ini, siklus ATR dan ATR dapat disesuaikan untuk mencari kombinasi parameter yang optimal.

Risiko lain adalah bahwa parameter saluran standar deviasi yang tidak tepat dapat menyebabkan frekuensi pembukaan posisi yang terlalu tinggi atau terlalu rendah. Parameter optimal dapat ditemukan dengan mengoptimalkan parameter.

Arah optimasi

Strategi ini dapat dioptimalkan dalam beberapa hal:

  1. ATR siklus dan penggandaan dioptimalkan. Mengatur kedua parameter ini dapat memberikan efek stop loss yang lebih baik.

  2. Optimasi parameter saluran standar deviasi. Optimasi parameter saluran, untuk mendapatkan efek penarikan yang lebih baik.

  3. Tambahkan filter indikator lain. Anda dapat menambahkan indikator seperti moving average, K-line, dan lain-lain untuk membantu menentukan arah tren dan meningkatkan tingkat keuntungan.

  4. Mengoptimalkan logika posisi terbuka dan aman. Anda dapat mengatur harga untuk mencapai saluran standar deviasi dan membuka posisi setelah mengkonfirmasi bentuk K-line lagi.

Meringkaskan

Strategi ini didasarkan pada indikator ATR untuk mencapai trend tracking stop loss, dan dengan bantuan saluran standar deviasi untuk menentukan waktu masuk ke pasar. Keuntungan dari strategi ini adalah bahwa pengendalian risiko stop loss bekerja dengan baik, cocok untuk perdagangan tren. Risiko dan arah pengoptimalan juga dianalisis dengan jelas.

Kode Sumber Strategi
/*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)