Canal de Donchian avec stratégie d'arrêt des pertes

Auteur:ChaoZhang est là., Date: 2023-12-07 16h53 et 10h
Les étiquettes:

img

Résumé

Il s'agit d'une stratégie de suivi de tendance basée sur l'indicateur du canal de Donchian, combinée à un stop loss dynamique basé sur l'indicateur ATR pour verrouiller les bénéfices.

La logique de la stratégie

La stratégie utilise un canal de Donchian à 20 périodes, où la ligne médiane du canal est la moyenne du plus haut et du plus bas bas. Il va long lorsque le prix traverse au-dessus de la ligne médiane du canal et court lorsque le prix traverse au-dessous de la ligne médiane. La règle de sortie est lorsque le prix touche la ligne de stop loss dynamique, qui est calculée comme le plus bas des 3 barres récentes moins un tiers de la valeur ATR pour les positions longues, et le plus haut des 3 barres récentes plus un tiers de la valeur ATR pour les positions courtes.

Analyse des avantages

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

  1. Le canal Donchian est efficace pour identifier les tendances du marché et les détecter.
  2. Le stop loss dynamique basé sur l'ATR bloque les bénéfices tout en contrôlant les risques.
  3. L'intégration du facteur ATR dans le calcul du stop loss tient compte de la volatilité du marché, ce qui rend le stop plus raisonnable.
  4. La méthode de calcul du stop loss est stable et fiable, évitant que les stops ne soient trop proches et ne soient arrêtés prématurément.

Analyse des risques

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

  1. Le canal de Donchian a un certain effet de retard, ce qui peut faire perdre des opportunités à court terme.
  2. Un réglage incorrect des paramètres ATR peut entraîner une perte de freinage trop large ou trop proche.
  3. Le mécanisme de détermination des tendances est relativement simple, ce qui peut générer davantage de faux signaux lors de consolidations de marché.
  4. L'absence de jugement efficace sur le support/résistance, entraînant un mauvais calendrier d'entrée sur le marché.

Directions d'optimisation

Quelques orientations d'optimisation pour cette stratégie:

  1. Ajoutez d'autres indicateurs pour éviter les transactions fréquentes lorsqu'il n'y a pas de tendance claire.
  2. Ajoutez le jugement de support/résistance pour optimiser le timing d'entrée.
  3. Tester d'autres méthodes dynamiques de calcul du stop loss pour optimiser davantage la stratégie de stop loss.
  4. Tester les effets des différents paramètres de la période du canal de Donchian sur la performance de la stratégie.
  5. Ajoutez des filtres sur le volume ou les augmentations pour réduire les faux signaux.

Conclusion

En résumé, il s'agit d'une stratégie de suivi de tendance simple et pratique. Il identifie la direction de la tendance via le canal de Donchian et bloque les bénéfices avec un stop-loss dynamique, qui peut suivre efficacement les tendances.


/*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)



Plus de