Stratégie de négociation quantitative basée sur le nuage Ichimoku et la moyenne mobile

Auteur:ChaoZhang est là., Date: 20 février 2024
Les étiquettes:

img

Résumé

Cette stratégie combine l'indicateur Ichimoku Cloud et l'indicateur de moyenne mobile pour mettre en œuvre une stratégie de trading quantitative simple. Elle génère des signaux d'achat lorsque la ligne de conversion est au-dessus de la ligne de base et que le prix de clôture est au-dessus de la ligne de conversion. Elle génère des signaux de vente lorsque la ligne de conversion est en dessous de la ligne de base et que le prix de clôture est en dessous de la ligne de conversion.

La logique de la stratégie

Le nuage Ichimoku contient trois lignes: la ligne de conversion, la ligne de base et la période de retard. La ligne de conversion représente le prix moyen à court terme et la ligne de base représente le prix moyen à long terme. La période de retard est généralement la moyenne de la conversion et des lignes de base.

Le nuage Ichimoku contient également deux lignes principales: Leading Span A et Leading Span B. Elles représentent la plage moyenne des fluctuations de prix sur différentes périodes.

Cette stratégie utilise la ligne de conversion pour déterminer la direction générale de la tendance et les lignes principales pour mesurer la dynamique. Elle génère des signaux de trading basés sur la tendance, la dynamique et les prix de clôture.

Les avantages

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

  1. Utilise une combinaison d'indicateurs pour fournir des signaux fiables.
  2. Il ne pénètre que sur des échappatoires solides pour éviter de faux signaux.
  3. Convient à la négociation à court terme d'actifs volatils présentant un potentiel de profit élevé.
  4. Une logique simple, facile à comprendre et à modifier.
  5. Facilement extensible à un modèle multifactoriel avec plus d'indicateurs.

Les risques

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

  1. Il faut régler le stop-loss pour contrôler les pertes par transaction.
  2. Risque d'inversion de prix. Le prix peut s'inverser après le déclenchement du signal. Peut assouplir les conditions de détention pour réduire ce risque.
  3. Le risque d'optimisation des paramètres, les résultats sont sensibles aux paramètres, il faut des tests combinatoires exhaustifs pour trouver l'optimum.
  4. Le risque de suradaptation peut très bien fonctionner historiquement, mais échouer dans le trading réel.

Des possibilités d'amélioration

Quelques moyens permettant d'améliorer cette stratégie:

  1. Testez des combinaisons de plus d'indicateurs comme KDJ, BOLL, MACD pour trouver de meilleurs paramètres.
  2. Incorporer des mécanismes d'arrêt de perte tels que l'arrêt de perte en mouvement ou x fois atr.
  3. Optimiser les filtres d'entrée avec le volume, la volatilité, etc.
  4. Resserrer les règles de détention en réduisant la période de détention ou en augmentant l'objectif de prise de profit.
  5. Introduire l'apprentissage automatique pour trouver des combinaisons optimales de paramètres à l'aide de réseaux de neurones.

Conclusion

En résumé, il s'agit d'une stratégie de trading quantitative très simple qui combine Ichimoku Cloud et la moyenne mobile pour déterminer la tendance et l'élan des signaux de trading. Elle convient à la négociation à court terme d'actifs volatils avec un bon potentiel de profit. Bien sûr, aucune stratégie n'est parfaite et celle-ci a une marge d'amélioration via des règles d'entrée, des arrêts de pertes, une sélection de paramètres, etc. pour la rendre plus robuste.


/*backtest
start: 2024-01-20 00:00:00
end: 2024-02-19 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Ichimoku Cloud + ema 50 Strategy", overlay=true)

len = input.int(50, minval=1, title="Length")
src = input(close, title="Source")
out = ta.ema(src, len)

conversionPeriods = input.int(9, minval=1, title="Conversion Line Length")
basePeriods = input.int(26, minval=1, title="Base Line Length")
laggingSpan2Periods = input.int(52, minval=1, title="Leading Span B Length")
displacement = input.int(1, minval=1, title="Lagging Span")

donchian(len) => math.avg(ta.lowest(len), ta.highest(len))
conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = math.avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)

p1 = plot(leadLine1, offset = displacement - 1, color=#A5D6A7,
     title="Leading Span A")
p2 = plot(leadLine2, offset = displacement - 1, color=#EF9A9A,
     title="Leading Span B")
fill(p1, p2, color = leadLine1 > leadLine2 ? color.rgb(67, 160, 71, 90) : color.rgb(244, 67, 54, 90))

plot(out, title="EMA", color=color.white)

// Condition for Buy Signal
buy_signal = close > out and leadLine1 > leadLine2

// Condition for Sell Signal
sell_signal = close < out and leadLine2 > leadLine1

// Strategy entry and exit conditions
if (buy_signal)
    strategy.entry("Buy", strategy.long)
if (sell_signal)
    strategy.entry("Sell", strategy.short)

// Exit long position if candle closes below EMA 50
if (strategy.opentrades > 0)
    if (close < out)
        strategy.close("Buy")

// Exit short position if candle closes above EMA 50
if (strategy.opentrades < 0)
    if (close > out)
        strategy.close("Sell")


Plus de