La stratégie de rupture du double canal de Donchian est une stratégie de rupture basée sur les canaux de Donchian. Elle utilise des canaux de Donchian rapides et lents pour construire des signaux de trading longs et courts.
La stratégie de rupture du double canal Donchian est basée sur deux paramètres:Période du canal de Donchian lentetPériode rapide du canal de DonchianLa stratégie calcule d'abord les bandes supérieure et inférieure des deux canaux de Donchian.
Le signal d'entrée long est unéruption au-dessus de la bande supérieureavecvolatilité supérieure au seuilLe signal d'entrée court est unventilation inférieure à la bande inférieureavecvolatilité supérieure au seuil.
Le signal de sortie stop-loss long est unventilation inférieure à la bande inférieureLe signal de sortie de stop-loss court est unéruption au-dessus de la bande supérieure.
La stratégie définit égalementfaire des profitsLe ratio de prise de profit par défaut est de 2%, c'est-à-dire la position de prise de profit à moitié lorsque le mouvement des prix atteint 2%.
La stratégie de rupture du double canal de Donchian présente les avantages suivants:
La conception à double canal peut capturer des signaux de tendance à partir de délais plus longs et plus courts, permettant des entrées plus précises.
La condition de volatilité permet d'éviter une négociation fréquente sur des marchés à fourchette.
Les paramètres complets de prise de bénéfices et de stop-loss permettent d'obtenir des bénéfices partiels et de réduire les pertes.
Une logique stratégique simple et claire, facile à comprendre et à mettre en œuvre.
Les paramètres personnalisables s'adaptent aux différents produits et aux préférences commerciales.
La stratégie de rupture du double canal de Donchian comporte également des risques:
La conception à double canal est sensible et peut générer de faux signaux.
Dans les marchés volatils, le stop loss peut être déclenché trop fréquemment.
L'intervention dynamique ou manuelle est envisagée pour une tarification optimale des bénéfices.
Les performances commerciales réelles peuvent différer des attentes des tests antérieurs, nécessitant une validation approfondie et des ajustements de paramètres si nécessaire.
La stratégie de rupture du double canal de Donchian peut être optimisée sous plusieurs aspects:
Testez plus de combinaisons de périodes pour trouver des paramètres optimaux.
Essayez différentes mesures de volatilité comme ATR pour trouver la métrique la plus stable.
Définir une limite sur le nombre d'entrées pour éviter les pertes à la fin des tendances.
Essayez de prendre des profits dynamiques pour un profit plus élevé.
Incorporer d'autres indicateurs pour filtrer les entrées et améliorer la précision, par exemple le volume.
Optimiser les modèles de gestion de l'argent tels que la taille des positions fractionnaires fixes pour un meilleur contrôle des risques.
En conclusion, la stratégie de rupture de canal double Donchian est une excellente stratégie de suivi de tendance. Elle combine à la fois l'identification de tendance et les capacités de protection contre l'inversion. Avec l'optimisation des paramètres et le raffinement des règles, elle peut être rentable sur la plupart des produits et des conditions du marché.
/*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)