Stratégie de croisement à double EMA

Auteur:ChaoZhang est là., Date: le 30 octobre 2023 à 12 h 27:50
Les étiquettes:

img

Résumé

La double EMA est une stratégie de suivi de tendance typique. Elle utilise deux lignes EMA de périodes différentes et génère des signaux de trading basés sur leur croisement. Lorsque l'EMA plus rapide traverse au-dessus de l'EMA plus lent, un signal d'achat est généré. Lorsque l'EMA plus rapide traverse au-dessous de l'EMA plus lent, un signal de vente est généré. Cette stratégie peut suivre les tendances à moyen et long terme et saisir les opportunités de trading aux stades d'initiation de la tendance.

La logique de la stratégie

Les éléments clés de cette stratégie sont les suivants:

  1. Définissez les longueurs pour l'EMA plus rapide et l'EMA plus lente.

  2. Calculez l'EMA plus rapide et l'EMA plus lente.

  3. Déterminez les situations de croisement de l'EMA pour générer des signaux de trading. Lorsque l'EMA plus rapide traverse au-dessus de l'EMA plus lente, un signal d'achat est généré. Lorsque l'EMA plus rapide traverse au-dessous de l'EMA plus lente, un signal de vente est généré.

  4. En effet, les positions courtes sont fermées avant d'ouvrir les positions longues et inversement.

  5. Lorsque vous allez long, le stop loss est déclenché si le prix tombe en dessous du plus bas précédent d'un pourcentage défini.

  6. Les transactions de sortie sont basées sur des signaux. Les positions longues sont fermées lorsque l'EMA plus rapide traverse une EMA plus lente. Les positions courtes sont fermées lorsque l'EMA plus rapide traverse une EMA plus lente.

La logique est simple et intuitive. Le croisement des deux lignes est un moyen classique de détecter les changements de tendance.

Analyse des avantages

Les avantages de cette stratégie sont les suivants:

  1. Concept simple, facile à comprendre et à mettre en œuvre.

  2. Peut suivre efficacement les tendances à moyen et long terme et saisir les opportunités à un stade précoce.

  3. La configuration à double EMA évite le bruit des fluctuations à court terme du marché.

  4. Les règles d'entrée, de sortie et de stop loss sont claires.

  5. Il n'a besoin que de quelques paramètres, pas sujet à un surajustement.

  6. De bons résultats de backtest, viables pour le trading en direct.

Analyse des risques

Quelques risques de cette stratégie:

  1. Les paramètres doivent être réglés pour filtrer les signaux non valides.

  2. Ne peut pas gérer les situations de variation et d'inversion de tendance, a besoin de confirmation d'autres indicateurs.

  3. La stratégie EMA double tend à poursuivre les hauts et à vendre les bas.

  4. Les résultats des tests antérieurs peuvent être surmontés dans une certaine mesure.

  5. Aucun stop loss opportun ne peut entraîner de grosses pertes.

  6. Les coûts de transaction peuvent avoir une incidence sur la rentabilité réelle.

Les domaines d'amélioration

Quelques façons d'améliorer la stratégie:

  1. Optimiser les paramètres de la période EMA pour trouver la meilleure combinaison, en utilisant l'optimisation de marche avant et l'apprentissage automatique.

  2. Ajoutez des indicateurs de filtrage des tendances tels que ADX, CCI, etc. pour éviter de négocier dans des tendances incertaines.

  3. Ajoutez des indicateurs de volume comme le volume des transactions, sur le volume du solde pour s'assurer que le trading réel est le moteur des signaux.

  4. Mettre en œuvre un stop loss dynamique pour ajuster automatiquement les stops en fonction de la volatilité du marché.

  5. Combiner des produits corrélés pour utiliser la corrélation pour la gestion des risques.

  6. Introduire l'apprentissage automatique pour l'optimisation des paramètres, l'ingénierie des fonctionnalités, le filtrage du signal, etc.

  7. Considérez les coûts de transaction, ajustez les arrêts et la taille pour réduire la fréquence des transactions.

  8. Personnaliser les paramètres en fonction des caractéristiques du produit pour améliorer l'adaptabilité.

  9. Concevoir un cadre stratégique composé, en le combinant avec d'autres stratégies pour améliorer la robustesse.

Ces améliorations peuvent rendre la stratégie plus robuste et plus rentable pour le trading en direct.

Conclusion

Cette stratégie utilise un double croisement EMA pour générer des signaux de trading et peut suivre efficacement les tendances à moyen et long terme. Les avantages résident dans sa simplicité et ses bons résultats de backtest, ce qui la rend facile à utiliser pour les débutants. Mais les risques existent et doivent être gérés grâce à l'optimisation des paramètres, l'ajout d'indicateurs, des arrêts dynamiques, l'optimisation des coûts commerciaux, etc. La stratégie peut être utilisée seule ou combinée avec d'autres pour une praticité supplémentaire.


/*backtest
start: 2022-10-23 00:00:00
end: 2023-10-29 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2

strategy(title = "EMA Cross Strategy", shorttitle = "EMA Cross",calc_on_order_fills=true,calc_on_every_tick =true, initial_capital=21000,commission_value=.25,overlay = true,default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
StartYear = input(2018, "Backtest Start Year")
StartMonth = input(1, "Backtest Start Month")
StartDay = input(1, "Backtest Start Day")
UseStopLoss = input(true,"UseStopLoss")

window() => time >=  timestamp(StartYear, StartMonth, StartDay,00,00) ? true : false

stopLoss = input(20, title = "Stop loss percentage(0.1%)")


maFastSource   = input(defval = open, title = "Fast MA Source")
maFastLength   = input(defval = 12, title = "Fast MA Period", minval = 1)
// long ma
maSlowSource   = input(defval = open, title = "Slow MA Source")
maSlowLength   = input(defval = 26, title = "Slow MA Period", minval = 1)

maFast = ema(maFastSource, maFastLength)
maSlow = ema(maSlowSource, maSlowLength)


fast = plot(maFast, title = "Fast MA", color = #7a8598, linewidth = 2, style = line, transp = 50)
slow = plot(maSlow, title = "Slow MA", color = #e08937, linewidth = 2, style = line, transp = 50)


longEMA = crossover(maFast, maSlow)
exitLong = crossunder(maFast, maSlow)

shortEMA = crossover(maSlow, maFast)
exitShort = crossover(maFast, maSlow)


if (longEMA)
    strategy.entry("LongId", strategy.long, when=window())
 
if (shortEMA)
    strategy.entry("ShortId", strategy.short, when=window())


if (UseStopLoss)
    strategy.exit("StopLoss", "LongId", loss = close * stopLoss / 1000 / syminfo.mintick)
    strategy.exit("StopLoss", "ShortId", loss = close * stopLoss / 1000 / syminfo.mintick)

Plus de