La stratégie Double Donchian Channel Breakout est une stratégie de trading quantitative basée sur le canal de Donchian. Cette stratégie utilise une combinaison de canaux de Donchian rapides et lents pour réaliser un trading de rupture à faible risque et à haut rendement.
Cette stratégie utilise principalement deux canaux de Donchian, dont un canal plus lent avec une période plus longue et un canal plus rapide avec une période plus courte.
Le canal de Donchian lent a une période plus longue qui peut filtrer efficacement le bruit du marché, ce qui rend ses signaux de rupture plus fiables.
Le canal rapide de Donchian a une période plus courte qui peut réagir rapidement aux fluctuations de prix à court terme.
En outre, une condition de volatilité est définie comme un filtre pour les signaux d'entrée. La stratégie ne déclenchera l'entrée que lorsque le mouvement des prix dépassera un seuil de pourcentage prédéterminé. Cela évite de fréquents fléchissements lors de consolidations à plage.
Ces risques peuvent être réduits par l'optimisation des paramètres, un placement raisonnable des stops-loss, une prise de conscience des événements, etc.
La stratégie Double Donchian Channel Breakout est globalement une stratégie de suivi des tendances relativement stable et fiable. Elle combine les forces de la capture des tendances et du contrôle des risques, ce qui la rend adaptée comme module de base dans diverses stratégies de négociation d'actions.
/*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)