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.
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.
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.
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.
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.
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)