Strategi Pelacakan Tren Saluran Donchian

Penulis:ChaoZhangTanggal: 2023-11-06 15:52:56
Tag:

img

Gambaran umum

Strategi pelacakan tren saluran Donchian adalah strategi pelacakan tren berdasarkan indikator saluran Donchian. Strategi ini menghitung tertinggi tertinggi dan terendah terendah selama periode yang berbeda untuk membentuk band atas, bawah dan tengah untuk menentukan arah tren untuk perdagangan pelacakan tren.

Logika Strategi

Strategi pertama menetapkan rentang waktu backtesting, dan kemudian mendefinisikan aturan entri panjang dan pendek.

Untuk posisi panjang, buka panjang ketika harga menembus band atas Saluran Donchian; tutup panjang ketika harga menembus band bawah.

Untuk posisi pendek, buka pendek ketika harga melanggar band bawah Saluran Donchian; tutup pendek ketika harga melanggar band atas.

Strategi ini juga menggabungkan indikator ATR untuk mengatur mekanisme stop loss exit. Nilai ATR dikalikan dengan koefisien digunakan sebagai tingkat stop loss.

Secara khusus, stop loss panjang adalah harga masuk dikurangi nilai stop loss ATR; stop loss pendek adalah harga masuk ditambah nilai stop loss ATR.

Strategi ini juga memetakan pita atas dan bawah Saluran Donchian dan garis stop loss ATR untuk membentuk sistem perdagangan yang lengkap.

Keuntungan

  • Gunakan saluran Donchian untuk menentukan arah tren, dengan beberapa kemampuan pelacakan tren.

  • Donchian Channel smoother parameter diatur, memungkinkan optimasi parameter untuk menemukan kombinasi parameter terbaik.

  • Mekanisme stop loss dengan ATR dapat secara efektif mengendalikan risiko.

  • Aturan perdagangan panjang dan pendek sederhana dan mudah dipahami, cocok untuk pemula.

  • Struktur kode jelas dan mudah dipahami dan dimodifikasi.

Risiko

  • Saluran Donchian mungkin memiliki beberapa perdagangan whipsaw selama fluktuasi harga yang terikat kisaran.

  • Pengaturan jarak stop loss ATR yang tidak benar dapat menyebabkan stop loss yang terlalu luas atau terlalu sensitif.

  • Posisi panjang dan pendek bisa terlalu terkonsentrasi, membutuhkan aturan ukuran posisi.

  • Strategi ini perlu diuji untuk penerapan pada produk yang berbeda, dengan optimasi parameter independen.

  • Biaya perdagangan juga perlu dipertimbangkan, parameter mungkin perlu disesuaikan dalam lingkungan biaya tinggi.

Peluang Peningkatan

  • Optimalkan parameter periode Saluran Donchian untuk menemukan kombinasi parameter terbaik.

  • Cobalah koefisien ATR yang berbeda untuk menemukan rentang stop loss yang optimal.

  • Cobalah memperkenalkan stop loss trailing di atas stop loss ATR untuk mengunci keuntungan.

  • Sesuaikan rasio posisi panjang/pendek berdasarkan kondisi pasar.

  • Uji ketahanan parameter pada produk yang berbeda untuk menemukan parameter generik.

  • Studi yang menggabungkan MACD dan filter lainnya untuk meningkatkan stabilitas.

  • Uji kemampuan adaptasi parameter dalam lingkungan biaya perdagangan yang berbeda.

Ringkasan

Secara singkat, ini adalah strategi pelacakan tren yang relatif sederhana yang berpusat pada aplikasi Saluran Donchian. Keuntungannya terletak pada kesederhanaan dan kemudahan pemahaman, membuatnya cocok untuk tujuan pembelajaran, tetapi parameter dan risiko masih membutuhkan optimasi lebih lanjut. Dengan beragam teknik peningkatan, stabilitas dan profitabilitas strategi berpotensi dapat ditingkatkan.


/*backtest
start: 2022-10-30 00:00:00
end: 2023-11-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © kriswaters

//@version=4
strategy("Donchian Channels Strategy by KrisWaters", overlay=true ) 

// Date filter
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromYear  = input(defval = 2017, title = "From Year", minval = 1900)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)

start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true // create function "within window of time"

// Strategy Settings
canEnterLong = input(true, title="Can Enter Long Position")
canEnterShort = input(false, title="Can Enter Short Position")

showLongChannel = input(true, title="Show Donchian Long Channels")
showShortChannel = input(false , title="Show Donchian Short Channels")

useAtrAsStopRule = input(false, title="Enable ATR Stop Rule") 

// DonCcian Channel Lengths
longUpperLength = input(20, minval=1)
longLowerLength = input(10, minval=1)

shortUpperLength = input(10, minval=1)
shortLowerLength = input(20, minval=1)

// Donchian indicator calculations
longUpperValue = highest(high,longUpperLength)
longLowerValue = lowest(low,longLowerLength)

shortUpperValue = highest(high,shortUpperLength)
shortLowerValue = lowest(low,shortLowerLength)

// Plot Donchian Channels
uLong = plot(showLongChannel ? longUpperValue : na, color=color.green, offset=1)
lLong = plot(showLongChannel ? longLowerValue : na, color=color.green, offset=1)

uShort = plot(showShortChannel ? shortUpperValue : na, color=color.red, offset=1)
lShort = plot(showShortChannel ? shortLowerValue : na, color=color.red, offset=1)

// Styling
fill(uLong,lLong, color=color.green, transp=95, title="Long Arkaplan")
fill(uShort,lShort, color=color.red, transp=95, title="Short Arkaplan")

// Stop-loss value calculations
atrMultiplier = 2.0
atrValue = atr(20)
longStopValue = open - (atrMultiplier*atrValue)
shortStopValue = open + (atrMultiplier*atrValue)

// Plot stop-loss line
plot(useAtrAsStopRule ? longStopValue : na, color=color.red, linewidth=2, offset=1)
plot(useAtrAsStopRule ? shortStopValue : na, color=color.red, linewidth=2, offset=1)

// Long and Short Position Rules
if canEnterLong and na(longUpperValue) != true and na(longLowerValue) != true and window()
    strategy.entry("Long", true, stop=longUpperValue)
    strategy.exit("Long Exit", "Long", stop=useAtrAsStopRule ? max(longLowerValue,longStopValue) : longLowerValue)
    
if canEnterShort and na(shortUpperValue) != true and na(shortLowerValue) != true and window()
    strategy.entry("Short", false, stop=shortLowerValue)
    strategy.exit("Short Exit", "Short", stop=useAtrAsStopRule ? min(shortUpperValue,shortStopValue) : shortUpperValue)
    


Lebih banyak