Stratégie de suivi des tendances du canal de Donchian

Auteur:ChaoZhang est là., Date: 2023-11-06 15h52 et 56 min
Les étiquettes:

img

Résumé

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 logique de la stratégie

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.

Les avantages

  • 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.

Les risques

  • 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.

Des possibilités d'amélioration

  • 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.

Résumé

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)
    


Plus de