Dual Donchian Channel Breakout Strategy adalah strategi perdagangan breakout yang didasarkan pada Donchian Channels. Strategi ini menggunakan saluran Donchian cepat dan lambat untuk membangun sinyal perdagangan panjang dan pendek. Ketika harga menembus saluran lambat, buka posisi panjang atau pendek. Ketika harga menembus kembali saluran cepat, tutup posisi. Strategi ini juga menetapkan kondisi mengambil keuntungan dan stop loss.
Dual Donchian Channel Breakout Strategy didasarkan pada dua parameter:Periode Saluran Donchian yang lambatdanPeriode Saluran Donchian CepatStrategi pertama menghitung band atas dan bawah dari dua saluran Donchian.
Sinyal masuk panjang adalahpecah di atas pita atasdenganvolatilitas lebih besar dari ambang batas. Sinyal masuk pendek adalahPembagian di bawah band bawahdenganvolatilitas lebih besar dari ambang batas.
Sinyal keluar stop loss panjang adalahPembagian di bawah band bawah. Sinyal keluar stop loss pendek adalahpecah di atas pita atas.
Strategi ini juga menetapkanmengambil keuntunganKondisi keluar. rasio mengambil keuntungan default adalah 2%, yaitu mengambil keuntungan setengah posisi ketika pergerakan harga mencapai 2%.
Dual Donchian Channel Breakout Strategy memiliki keuntungan berikut:
Desain saluran ganda dapat menangkap sinyal tren dari jangka waktu yang lebih panjang dan lebih pendek, memungkinkan entri yang lebih akurat.
Kondisi volatilitas menghindari perdagangan yang sering di pasar yang terikat rentang.
Pengaturan mengambil keuntungan dan stop loss yang komprehensif mengunci keuntungan parsial dan mengurangi kerugian.
Logika strategi yang sederhana dan jelas, mudah dipahami dan diimplementasikan.
Parameter yang dapat disesuaikan sesuai dengan produk dan preferensi perdagangan yang berbeda.
Strategi Penembusan Saluran Dual Donchian juga memiliki beberapa risiko:
Desain saluran ganda sensitif dan dapat menghasilkan sinyal palsu. saluran yang lebih luas atau parameter volatilitas disesuaikan dapat mengurangi sinyal palsu.
Dalam pasar yang tidak stabil, stop loss dapat diaktifkan terlalu sering.
Persentase tetap mengambil keuntungan gagal untuk memaksimalkan keuntungan. Pertimbangkan intervensi dinamis atau manual untuk harga mengambil keuntungan optimal.
Kinerja perdagangan yang sebenarnya mungkin berbeda dari harapan backtest.
Dual Donchian Channel Breakout Strategy dapat dioptimalkan dalam beberapa aspek:
Uji lebih banyak kombinasi periode untuk menemukan parameter optimal.
Cobalah ukuran volatilitas yang berbeda seperti ATR untuk menemukan metrik yang paling stabil.
Tetapkan batas jumlah entri untuk menghindari kerugian pada akhir tren.
Cobalah mengambil keuntungan dinamis untuk keuntungan perdagangan tunggal yang lebih tinggi.
Masukkan indikator lain untuk menyaring entri dan meningkatkan akurasi, misalnya volume.
Mengoptimalkan model manajemen uang seperti ukuran posisi pecahan tetap untuk kontrol risiko yang lebih baik.
Sebagai kesimpulan, Dual Donchian Channel Breakout Strategy adalah strategi trend berikut yang sangat baik. Ini menggabungkan kemampuan identifikasi tren dan perlindungan pembalikan. Dengan optimasi parameter dan penyempurnaan aturan, strategi ini dapat menguntungkan di sebagian besar produk dan kondisi pasar. Strategi ini sederhana dan praktis, layak dipelajari dan diterapkan untuk pedagang kuantitatif.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © omererkan //@version=5 strategy(title="Double Donchian Channel Breakout", overlay=true, initial_capital = 1000, commission_value = 0.05, default_qty_value = 100, default_qty_type = strategy.percent_of_equity) // Donchian Channels slowLen = input.int(50, title="Slow Donchian", group = "Conditions") fastLen = input.int(30, title="Fast Donchian", group = "Conditions") // Volatility Calculated as a percentage volatility = input.int(3, title="Volatility (%)", group = "Conditions") // Long positions long = input.bool(true, "Long Position On/Off", group = "Strategy") longProfitPerc = input.float(2, title="Long TP1 (%)", group = "Strategy", minval=0.0, step=0.1) * 0.01 // Short positions short = input.bool(true, "Short Position On/Off", group = "Strategy") shortProfitPerc = input.float(2, title="Short TP1 (%)", group = "Strategy", minval=0.0, step=0.1) * 0.01 // First take profit point for positions TP1Yuzde =input.int(50, title = "TP1 Position Amount (%)", group = "Strategy") // Slow Donchian Calculated ubSlow = ta.highest(high, slowLen)[1] lbSlow = ta.lowest(low, slowLen)[1] // Fast Donchian Calculated ubFast = ta.highest(high, fastLen)[1] lbFast = ta.lowest(low, fastLen)[1] // Plot Donchian Channel for entries plot(ubSlow, color=color.green, linewidth=2, title="Slow DoCh - Upperband") plot(lbSlow, color=color.green, linewidth=2, title="Slow DoCh - Lowerband") plot(ubFast, color=color.blue, linewidth=2, title="Fast DoCh - Upperband") plot(lbFast, color=color.blue, linewidth=2, title="Fast DoCh - Lowerband") // This calculation, the strategy does not open position in the horizontal market. fark = (ubSlow - lbSlow) / lbSlow * 100 // Take profit levels longExitPrice = strategy.position_avg_price * (1 + longProfitPerc) shortExitPrice = strategy.position_avg_price * (1 - shortProfitPerc) // Code long trading conditions longCondition = ta.crossover(close, ubSlow) and fark > volatility if longCondition and long == true strategy.entry("Long", strategy.long) // Code short trading conditions shortCondition = ta.crossunder(close, lbSlow) and fark > volatility if shortCondition and short == true strategy.entry("Short", strategy.short) // Determine long trading conditions if strategy.position_size > 0 and ta.crossunder(close, lbFast) strategy.close_all("Close All") // Determine short trading conditions if strategy.position_size < 0 and ta.crossover(close, ubFast) strategy.close_all("Close All") // Take Profit Long if strategy.position_size > 0 strategy.exit("TP1", "Long", qty_percent = TP1Yuzde, limit = longExitPrice) // Take Profit Short if strategy.position_size < 0 strategy.exit("TP1", "Short", qty_percent = TP1Yuzde, limit = shortExitPrice)