Strategi Double Donchian Channel Breakout adalah strategi perdagangan kuantitatif yang didasarkan pada saluran Donchian. Strategi ini menggunakan kombinasi saluran Donchian cepat dan lambat untuk mencapai perdagangan breakout berisiko rendah dengan pengembalian tinggi.
Strategi ini terutama memanfaatkan dua saluran Donchian, termasuk saluran yang lebih lambat dengan periode yang lebih lama dan saluran yang lebih cepat dengan periode yang lebih pendek.
Saluran Donchian yang lambat memiliki periode yang lebih lama yang dapat secara efektif menyaring kebisingan pasar, membuat sinyal pecahnya lebih dapat diandalkan.
Saluran Donchian yang cepat memiliki periode yang lebih pendek yang dapat dengan cepat merespons fluktuasi harga jangka pendek.
Selain itu, kondisi volatilitas ditetapkan sebagai filter untuk sinyal masuk. Strategi hanya akan memicu masuk ketika pergerakan harga melebihi ambang persentase yang telah ditentukan sebelumnya. Ini menghindari whipsaws yang sering terjadi selama konsolidasi yang terbatas pada kisaran.
Risiko ini dapat dikurangi dengan optimalisasi parameter, penempatan stop loss yang wajar, kesadaran peristiwa dll.
Strategi Double Donchian Channel Breakout secara keseluruhan merupakan strategi trend-following yang relatif stabil dan dapat diandalkan. Strategi ini menggabungkan kekuatan penangkapan tren dan pengendalian risiko, menjadikannya cocok sebagai modul dasar dalam berbagai strategi perdagangan saham.
/*backtest start: 2024-01-04 00:00:00 end: 2024-02-03 00:00:00 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) slowLen = input.int(50, title="Slow Donchian") fastLen = input.int(30, title="Fast Donchian") volatility = input.int(3, title="Volatility (%)") longProfitPerc = input.float(2, title="Long TP1 (%)", minval=0.0, step=0.1) * 0.01 shortProfitPerc = input.float(2, title="Short TP1 (%)", minval=0.0, step=0.1) * 0.01 TP1Yuzde =input.int(50, title = "TP1 Position Amount (%)") ubSlow = ta.highest(close, slowLen)[1] lbSlow = ta.lowest(close, slowLen)[1] ubFast = ta.highest(close, fastLen)[1] lbFast = ta.lowest(close, fastLen)[1] 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") fark = (ubSlow - lbSlow) / lbSlow * 100 longExitPrice = strategy.position_avg_price * (1 + longProfitPerc) shortExitPrice = strategy.position_avg_price * (1 - shortProfitPerc) longCondition = ta.crossover(close, ubSlow) and fark > volatility if (longCondition) strategy.entry("Long", strategy.long) shortCondition = ta.crossunder(close, lbSlow) and fark > volatility if (shortCondition) strategy.entry("Short", strategy.short) if strategy.position_size > 0 and ta.crossunder(close, lbFast) strategy.close("Long", "Close All") if strategy.position_size < 0 and ta.crossover(close, ubFast) strategy.close("Short", "Close All") // Take Profit if strategy.position_size > 0 strategy.exit("TP1", "Long", qty_percent = TP1Yuzde, limit = longExitPrice) if strategy.position_size < 0 strategy.exit("TP1", "Short", qty_percent = TP1Yuzde, limit = shortExitPrice)