Les ressources ont été chargées... Je charge...

Stratégie quantitative combinant le canal dynamique de Donchian et la moyenne mobile simple

Auteur:ChaoZhang est là., Date: 2024-06-17 17h29 et 48 min
Les étiquettes:SMA

img

Résumé

Cette stratégie combine deux indicateurs techniques: le canal de Donchian et la moyenne mobile simple (SMA). Elle ouvre une position longue lorsque le prix dépasse la bande inférieure du canal de Donchian et se ferme au-dessus de la SMA. Inversement, elle ouvre une position courte lorsque le prix dépasse la bande supérieure du canal de Donchian et se ferme au-dessous de la SMA. La position longue est fermée lorsque le prix atteint la bande supérieure du canal de Donchian, tandis que la position courte est fermée lorsque le prix atteint la bande inférieure.

Principe de stratégie

  1. Calculez les bandes supérieure et inférieure du canal de Donchian. La bande supérieure est le plus haut haut au cours des n dernières périodes, et la bande inférieure est le plus bas bas au cours des n dernières périodes.
  2. Calculer la moyenne mobile simple. La SMA est la moyenne arithmétique des prix de clôture au cours des m dernières périodes.
  3. Entrée longue: ouvrir une position longue lorsque le prix est inférieur à la bande inférieure du canal de Donchian et que le prix de clôture est supérieur à la SMA.
  4. Entrée courte: ouvrir une position courte lorsque le prix est au-dessus de la bande supérieure du canal de Donchian et que le prix de clôture est inférieur à la SMA.
  5. Sortie longue: Fermer la position longue lorsque le prix atteint la bande supérieure du canal de Donchian.
  6. Sortie courte: Fermer la position courte lorsque le prix atteint la bande inférieure du canal de Donchian.

Les avantages de la stratégie

  1. Combine deux éléments de marché: la tendance et la volatilité. Le SMA capture la tendance, tandis que le canal de Donchian capture la volatilité, permettant à la stratégie de saisir les opportunités de repli sur les marchés en tendance.
  2. Les positions longues et courtes sont fermées lorsque le prix atteint respectivement les bandes supérieure et inférieure du canal de Donchian, ce qui permet à la stratégie de sortir des transactions rentables avant l'inversion de la tendance.
  3. Peu de paramètres facilitent l'optimisation. La stratégie n'a que trois paramètres: la période du canal de Donchian, le décalage et la période SMA, ce qui simplifie l'optimisation.

Risques stratégiques

  1. La stratégie a une fréquence élevée d'entrées et de sorties de positions, ce qui peut éroder les rendements sur les marchés à coûts de négociation élevés.
  2. La stratégie peut subir plus de pertes lorsque la tendance n'est pas claire. Les indicateurs de volatilité peuvent être utilisés pour identifier les marchés limités et suspendre la stratégie.
  3. Stabilité des paramètres insuffisante. Les paramètres optimaux peuvent varier considérablement selon les instruments et les délais, indiquant une faible stabilité des paramètres. Les performances en direct peuvent ne pas correspondre au backtest. Des tests approfondis hors échantillon et une analyse de sensibilité sont nécessaires pour confirmer la robustesse des paramètres.

Directions d'optimisation de la stratégie

  1. Ajouter des conditions d'entrée facultatives combinées à d'autres indicateurs. Par exemple, exiger que l'ADX du DMI soit au-dessus d'un certain seuil d'entrée, ou entrer long seulement lorsque le RSI quitte la zone de survente. Cela peut améliorer le taux de gain des entrées.
  2. Utilisez des lignes de prise de profit dynamiques au lieu de lignes fixes du canal de Donchian pour obtenir une fonction de suivi des bénéfices.
  3. Ajustez dynamiquement la période du canal de Donchian en fonction des niveaux de volatilité. Réduisez la période du canal de Donchian dans des conditions de marché à forte volatilité et allongez la période dans des conditions de faible volatilité. Cela aide à s'adapter à différents marchés.

Résumé

La stratégie de combinaison de canal dynamique de Donchian et de moyenne mobile simple est un cadre de stratégie quantitative simple et facile à utiliser. Elle construit une logique d'entrée et de sortie des perspectives de suivi de tendance et de rupture de volatilité, ce qui la rend adaptée aux instruments présentant des tendances fortes. Cependant, la stratégie présente de faibles performances sur les marchés souvent en plage et sa robustesse paramétrique est médiocre.


/*backtest
start: 2024-05-01 00:00:00
end: 2024-05-31 23:59:59
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("FBK Donchian Channel Strategy", overlay=true)

// Inputs
donchian_period = input.int(20, title="Donchian Channel Period")
donchian_offset = input.int(1, title="Donchian Channel Offset")
sma_period = input.int(200, title="SMA Period")
start_date = input(timestamp("2023-01-01 00:00 +0000"), title="Start Date")
end_date = input(timestamp("2023-12-31 23:59 +0000"), title="End Date")
trade_type = input.string("Both", title="Trade Type", options=["Buy Only", "Sell Only", "Both"])

// Calculate indicators
donchian_upper = ta.highest(high, donchian_period)[donchian_offset]
donchian_lower = ta.lowest(low, donchian_period)[donchian_offset]
sma = ta.sma(close, sma_period)

// Plot indicators
plot(donchian_upper, color=color.red, title="Donchian Upper")
plot(donchian_lower, color=color.green, title="Donchian Lower")
plot(sma, color=color.blue, title="SMA")

// Helper function to check if within testing period
is_in_testing_period() => true

// Entry conditions
long_condition = low <= donchian_lower and close > sma
short_condition = high >= donchian_upper and close < sma

// Exit conditions
exit_long_condition = high >= donchian_upper
exit_short_condition = low <= donchian_lower

// Open long position
if (is_in_testing_period() and (trade_type == "Buy Only" or trade_type == "Both") and long_condition)
    strategy.entry("Long", strategy.long)

// Close long position
if (is_in_testing_period() and exit_long_condition)
    strategy.close("Long")

// Open short position
if (is_in_testing_period() and (trade_type == "Sell Only" or trade_type == "Both") and short_condition)
    strategy.entry("Short", strategy.short)

// Close short position
if (is_in_testing_period() and exit_short_condition)
    strategy.close("Short")

// Close all positions at the end of the testing period
if not is_in_testing_period()
    strategy.close_all()


Relationnée

Plus de