Canal Donchian avec stratégie de stop suiveur


Date de création: 2023-12-07 16:53:10 Dernière modification: 2023-12-07 16:53:10
Copier: 0 Nombre de clics: 854
1
Suivre
1619
Abonnés

Canal Donchian avec stratégie de stop suiveur

Aperçu

Cette stratégie est basée sur la stratégie de suivi de la tendance de l’indicateur du canal de Dongguan, combinée à une stop loss dynamique de l’indicateur ATR pour bloquer les bénéfices, et appartient à la catégorie des stratégies de suivi de la tendance.

Principe de stratégie

La stratégie utilise l’indicateur du canal de Dongxian de 20 cycles de longueur, la ligne médiane du canal étant la moyenne du prix le plus élevé et du prix le plus bas. Lorsque le prix est supérieur à travers la ligne médiane du canal, il est en hausse, et lorsque le prix est inférieur à travers la ligne médiane du canal, il est en baisse.

Analyse des avantages

Les principaux avantages de cette stratégie sont les suivants:

  1. L’utilisation du canal de Dongxian pour déterminer la direction des tendances du marché permet de les saisir efficacement.
  2. Combiné à un arrêt de suivi ATR dynamique, il permet de contrôler efficacement les risques tout en garantissant des bénéfices.
  3. Le facteur ATR est ajouté au calcul de la ligne de stop-loss pour tenir compte de la volatilité du marché et rendre le stop-loss plus raisonnable.
  4. La méthode de calcul de la ligne d’arrêt est plus stable et plus fiable, elle évite que la ligne d’arrêt soit trop proche et réduit la probabilité que la ligne d’arrêt soit poursuivie.

Analyse des risques

La stratégie présente principalement les risques suivants:

  1. Le but de l’équipement de Dongji Antou est de faire un peu de retard et de rater une occasion de raccourcir la ligne
  2. Une mauvaise configuration des paramètres ATR peut entraîner une perte d’arrêt trop légère ou trop proche
  3. Les mécanismes de détection des tendances sont relativement simples, et les signaux erronés sont plus susceptibles de se produire dans les marchés consolidés.
  4. Le manque de mécanismes de jugement efficaces pour soutenir la résistance peut entraîner un mauvais timing de l’entrée sur le marché

Direction d’optimisation

Cette stratégie peut être optimisée dans les domaines suivants:

  1. Ajouter d’autres indicateurs de jugement pour éviter de négocier fréquemment dans des marchés sans tendance claire
  2. Augmentation de la résistance au jugement et optimisation du temps d’entrée
  3. Essayez d’autres méthodes de calcul dynamique de stop-loss afin d’optimiser davantage votre stratégie de stop-loss.
  4. Tester l’impact de différents paramètres de cycle du canal de Dongguan sur les effets de la stratégie
  5. Ajouter des conditions de filtrage telles que le volume ou l’augmentation de la transaction pour réduire les signaux erronés

Résumer

Cette stratégie est une stratégie de suivi de tendance simple et pratique, qui permet de déterminer la direction de la tendance par le biais du canal de la tangentine et de bloquer les profits en utilisant des arrêts dynamiques. La stratégie est très pratique, mais elle peut être optimisée de plusieurs façons, ce qui lui permet de maintenir des gains stables dans des environnements de marché plus complexes.

Code source de la stratégie
/*backtest
start: 2023-11-29 00:00:00
end: 2023-12-06 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title = "dc",  overlay = true)
atrLength = input(title="ATR Length:", defval=20, minval=1)

testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testEndYear = input(2018, "Backtest Start Year")
testEndMonth = input(12)
testEndDay = input(31, "Backtest Start Day")
testPeriodEnd = timestamp(testEndYear,testEndMonth,testEndDay,0,0)


testPeriod() =>
    true
    //time >= testPeriodStart  ? true : false

dcPeriod = input(20, "Period")

dcUpper = highest(close, dcPeriod)[1]
dcLower = lowest(close, dcPeriod)[1]
dcAverage = (dcUpper + dcLower) / 2
atrValue=atr(atrLength)


useTakeProfit   = na
useStopLoss     = na
useTrailStop    = na
useTrailOffset  = na
//@version=1
Buy_stop = lowest(low[1],3) - atr(20)[1] / 3
plot(Buy_stop, color=red, title="buy_stoploss")
Sell_stop = highest(high[1],3) + atr(20)[1] / 3
plot(Sell_stop, color=green, title="sell_stoploss")

plot(dcLower, style=line, linewidth=3, color=red, offset=1)
plot(dcUpper, style=line, linewidth=3, color=aqua, offset=1)

plot(dcAverage, color=black, style=line, linewidth=3, title="Mid-Line Average")

strategy.entry("simpleBuy", strategy.long, when=(close > dcAverage) and cross(close,dcAverage))
strategy.close("simpleBuy",when= ( close< Buy_stop))
    
strategy.entry("simpleSell", strategy.short,when=(close < dcAverage) and cross(close,dcAverage) )
strategy.close("simpleSell",when=( close > Sell_stop))
    
//strategy.exit("Exit simpleBuy", from_entry = "simpleBuy", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)
//strategy.exit("Exit simpleSell", from_entry = "simpleSell", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)