La stratégie de suivi des tendances du canal de Donchian est une stratégie de suivi des tendances basée sur l'indicateur du canal de Donchian.
La stratégie définit d'abord la plage de temps de backtesting, puis définit les règles d'entrée longues et courtes.
Pour les positions longues, ouvrir long lorsque le prix dépasse la bande supérieure du canal de Donchian; fermer long lorsque le prix dépasse la bande inférieure.
Pour les positions courtes, ouvrir court lorsque le prix dépasse la bande inférieure du canal de Donchian; fermer court lorsque le prix dépasse la bande supérieure.
La stratégie intègre également l'indicateur ATR pour définir le mécanisme de sortie de stop loss.
La valeur de la valeur de la valeur de la valeur de la valeur de la valeur de la valeur de la valeur de la valeur de la valeur de la valeur de la valeur de la valeur de la valeur de la valeur de la valeur de la valeur de la valeur de la valeur de la valeur de la valeur de la valeur de la valeur de la valeur de la valeur de la valeur de la valeur de la valeur de la valeur de la valeur de la valeur.
La stratégie trace également les bandes supérieures et inférieures du canal de Donchian et la ligne de stop loss ATR pour former un système de négociation complet.
Utilisez le canal Donchian pour déterminer la direction de la tendance, avec une certaine capacité de suivi de la tendance.
Le paramètre de fluidité du canal de Donchian est réglable, ce qui permet une optimisation des paramètres pour trouver la meilleure combinaison de paramètres.
Le mécanisme de stop loss avec ATR permet de contrôler efficacement les risques.
Les règles de trading longues et courtes sont simples et faciles à comprendre, adaptées aux débutants.
La structure du code est claire et facile à comprendre et à modifier.
Le canal de Donchian peut avoir des échanges de pioches pendant les fluctuations de prix.
Un réglage incorrect de la plage d'arrêt des pertes ATR peut entraîner une perte d'arrêt trop large ou trop sensible.
Les positions longues et courtes pourraient être trop concentrées, ce qui nécessite des règles de dimensionnement des positions.
La stratégie doit être testée pour l'applicabilité sur différents produits, avec une optimisation indépendante des paramètres.
Les coûts de négociation doivent également être pris en considération, les paramètres peuvent devoir être ajustés dans des environnements à coûts élevés.
Optimisez les paramètres de la période du canal de Donchian pour trouver la meilleure combinaison de paramètres.
Essayez différents coefficients ATR pour trouver la plage optimale d'arrêt-perte.
Essayez d'introduire un stop-loss de suivi au-dessus du stop-loss ATR pour bloquer les bénéfices.
Ajuster le ratio position longue/courte en fonction des conditions du marché.
Testez la robustesse des paramètres sur différents produits afin de trouver des paramètres génériques.
Étude intégrant MACD et autres filtres pour améliorer la stabilité.
Test de l'adaptabilité des paramètres dans différents environnements de coûts de négociation.
En résumé, il s'agit d'une stratégie de suivi des tendances relativement simple qui se concentre sur l'application du canal de Donchian. L'avantage réside dans sa simplicité et sa facilité de compréhension, ce qui le rend adapté aux fins d'apprentissage, mais les paramètres et les risques nécessitent encore une optimisation supplémentaire.
/*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)