Stratégie de tendance croisée des moyennes mobiles

Auteur:ChaoZhang est là., Date: 2024-01-12 10:56:57 Le projet de loi est en cours d'adoption.
Les étiquettes:

img

Résumé

Cette stratégie de trading est basée sur un système de croisement de moyenne mobile et moyenne mobile simple pour le suivi des tendances. Elle utilise le croisement de moyennes mobiles rapides et lentes avec différentes périodes comme signaux pour aller long ou court. Lorsque le MA rapide traverse au-dessus du MA lent depuis le bas, allez long; lorsque le MA rapide traverse au-dessous du MA lent depuis le haut, allez court. Cette stratégie fonctionne bien pour les produits avec des tendances évidentes.

La logique de la stratégie

La stratégie utilise une moyenne mobile simple rapide comme 60 jours et une moyenne mobile lente comme 200 jours. La MA rapide répond plus rapidement aux changements de prix, reflétant les tendances à court terme; tandis que la MA lente répond plus lentement et montre des tendances à moyen et long terme.

Lorsque le MA court croise au-dessus du MA long depuis le bas, cela indique que les prix à court terme commencent à augmenter et entrent dans un marché haussier, donc allez long.

La stratégie utilise le croisement MA pour déterminer la direction de la tendance. Lorsque les prix à court terme augmentent plus rapidement, le MA court poussera le long MA vers le haut et le traversera par le bas. Cela signifie qu'une tendance haussière émerge et une position longue doit être prise. Inversement, lorsque les prix à court terme chutent plus rapidement, le MA court tirera le long MA vers le bas et le traversera par le haut, ce qui implique une tendance à la baisse et une position courte doit être prise.

En capturant les points d'inflexion des tendances des prix en utilisant des croisements MA rapides et lents, la stratégie peut ajuster en conséquence les positions longues/courtes.

Analyse des avantages

  • Utilise le croisement MA pour déterminer les principales tendances, en évitant d'être induit en erreur par les bruits de marché à court terme.
  • Considère que les délais à court terme et à moyen et long terme sont plus stables et fiables.
  • Mettre en œuvre un suivi de tendance simple et efficace, par exemple, aller long dans les tendances haussières et court dans les tendances baissières.
  • Les moyennes mobiles sont largement applicables, faciles à comprendre et les paramètres sont flexibles.
  • Les paramètres de gestion des risques sont réglables pour les risques contrôlés.

Analyse des risques

  • La stratégie repose sur des tendances claires des prix, des défaillances peuvent survenir lors de fortes fluctuations du marché.
  • Les Whipsaws peuvent produire de nombreux faux signaux pendant les marchés en variation, provoquant des ouvertures et des fermetures fréquentes de positions.
  • Les moyennes mobiles présentent des retards, ce qui peut entraîner un manque de points de basculement des prix.
  • Les paramètres incorrects tels que le stop loss trop serré ou le take profit trop large peuvent entraîner une sortie prématurée ou un relâchement des positions rentables.
  • Les paramètres raisonnables doivent être optimisés en fonction des spécificités des différents produits.

Des méthodes telles que l'ajustement des périodes de MA en fonction de la fréquence de volatilité des produits, l'amélioration du stop loss/take profit à l'aide d'indicateurs plus complexes, l'ajout d'un filtre de volume, etc., peuvent optimiser cette stratégie et améliorer la stabilité.

Directions d'optimisation

La stratégie peut être encore optimisée dans les aspects suivants:

  1. Optimiser les périodes de MA rapides et lentes pour s'adapter à des produits présentant des fréquences de volatilité différentes.

  2. Améliorer les conditions d'entrée en ajoutant plus de filtres comme les pics de volume pour réduire les faux signaux.

  3. Améliorer le stop loss/take profit comme le trailing stop ou le dynamic take profit pour améliorer la rentabilité.

  4. Considérez les coûts de négociation tels que les commissions et ajoutez des modules d'évaluation des coûts pour des backtests plus réalistes.

  5. Concevoir l'univers des paramètres pour trouver des combinaisons optimales de paramètres adaptées à différents produits.

  6. Ajoutez l'identification des modèles locaux pour aider à déterminer les points tournants de la tendance et améliorer le calendrier des entrées et sorties.

Grâce à une optimisation systématique de la stratégie, la rentabilité et la stabilité peuvent être considérablement améliorées et les retraits réduits.

Résumé

La stratégie de trading détermine les changements de tendance en utilisant des croisements de MA, une stratégie typique de suivi de tendance. Elle utilise un croisement entre des MA rapides et lents pour générer des signaux longs/courtes, identifiant la direction de la tendance grâce à la combinaison des deux. Cette stratégie capte les tendances de manière régulière et fiable et est facile à comprendre et à mettre en œuvre. Lorsqu'elle est optimisée, elle peut s'adapter à la plupart des produits et constitue une stratégie de trading quantitative fondamentale.


/*backtest
start: 2024-01-04 00:00:00
end: 2024-01-11 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © thebearfib
//
//@version=5
//

strategy("x-over 150d_200d_sma - Free", overlay = true)

repaint = input.bool(defval = false, title = "[RePaint] Uncheck to see real time results") //when you deselect it - it shows what would have happened in real time while trading the system
srcmc   = request.security(syminfo.tickerid, 'D', open, lookahead= repaint ? barmerge.lookahead_on : barmerge.lookahead_off, gaps=barmerge.gaps_off)

fast_length         = input(title="Fast Length", defval=60)
slow_length         = input(title="Slow Length", defval=275)

_fast               = ta.sma(srcmc,  fast_length)
_slow               = ta.sma(srcmc,  slow_length)

plot(_fast, 
  title="Fast SMA", 
  color=color.red,
  linewidth = 1) 

plot(_slow, 
  title="Slow SMA", 
  color=color.white,
  linewidth = 3)
//
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
// ————————————————————————————————— Calculating  —————————————————————————————————————————————————————————————————————————
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//
longProfitPerc      = input.float(title="Long Take Profit (%)", minval=0.01, step=1.0, defval=42) * .01
longStopPerc        = input.float(title="Long Stop (%)",        minval=0.01, step=1.0, defval=13)  * .01
//
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
// ————————————————————————————————— Stop Conditions   ————————————————————————————————————————————————————————————————————
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
longExitPrice  = strategy.opentrades > 0 ? strategy.position_avg_price * (1 + longProfitPerc) : srcmc *  (1 + longProfitPerc)
longStopPrice = strategy.opentrades  > 0 ? strategy.position_avg_price * (1 - longStopPerc)   : srcmc *  (1 - longStopPerc)
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
// ————————————————————————————————— Long Conditions   ————————————————————————————————————————————————————————————————————
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
longCondition   = srcmc > _slow and  ta.crossover(_fast, _slow)
closeCondition  =  ta.crossover(srcmc, _slow)  

if (longCondition)
    strategy.entry("Entry (long)", strategy.long, comment="→ 𝗟𝗴 𝗘𝗻𝘁𝗿𝘆")

if (closeCondition)
    strategy.close("Entry (long)", comment=" 𝗟𝗴 𝗘𝘅𝗶𝘁 ←")

if (strategy.position_size > 0)
    strategy.exit(id="XL", limit=longExitPrice, stop = longStopPrice, comment_profit = "Take Profit", comment_loss = "Stop Loss")
//
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
// —————————————————————————————————  Never the End Just the beginning    —————————————————————————————————————————————————
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//

Plus de