La stratégie de croisement des moyennes mobiles est une stratégie de trading quantitative basée sur des moyennes mobiles simples (SMA).
Plus précisément, cette stratégie calcule la SMA de 9 périodes et de 45 périodes. Lorsque le prix franchit les deux lignes SMA, un signal d'achat est généré. Lorsque le prix franchit les deux lignes, un signal de vente est déclenché.
La logique de base de cette stratégie est basée sur les principes
Cette stratégie utilise en particulier les moyennes mobiles simples de 9 périodes et de 45 périodes. La ligne de 9 périodes représente des tendances à court terme tandis que la ligne de 45 périodes capture des mouvements à plus long terme. Lorsque le prix traverse au-dessus des deux lignes SMA, cela indique que le prix est dans les canaux ascendants à court et à long terme, déclenchant ainsi une entrée longue.
Du point de vue du code, la stratégie calcule d'abord les valeurs SMA de 9 périodes et de 45 périodes. Elle utilise ensuite les fonctions ta.crossover et ta.crossunder pour détecter les croix dorées et les croix mortes entre les deux lignes MA. Lorsque des signaux d'achat et de vente sont déclenchés, les fonctions de graphique dessinent des triangles et des triangles inversés sur le graphique des prix.
En outre, la logique de stop-loss est mise en œuvre pour gérer les sorties commerciales. Plus précisément, les prix élevés et bas de la barre précédente sont extraits en tant que prix stop-loss après l'ouverture de nouveaux métiers. Cela permet à la stratégie de verrouiller les gains et d'éviter d'énormes pertes.
La configuration de la moyenne mobile double capture les changements de tendance à moyen et long terme tout en filtrant les bruits à court terme, améliorant ainsi la qualité du signal.
Le mécanisme de stop-loss contrôle efficacement les risques et les verrouillages des bénéfices.
Une logique simple et facile à mettre en œuvre, adaptée aux débutants.
Utilisation élevée du capital pour les gains composés.
Les stratégies de double MA ont tendance à générer des coups de fouet et des signaux invalides pendant les marchés agités.
Placement de stop loss conservateur incapable de suivre efficacement les tendances.
Une sélection de paramètres sous-optimale peut entraîner une survente ou une fréquence de négociation insuffisante.
Incapable de s'adapter à de grands retours de tendance.
Les solutions:
Optimiser les paramètres MA pour réduire les faux signaux
Mettre en œuvre des arrêts dynamiques suivant la tendance
Ajouter des filtres à l'aide d'autres indicateurs
Surcharge manuelle pour les retours majeurs
D'autres améliorations de la stratégie:
Utiliser des MAs adaptatives ou exponentielles pour mieux détecter les tendances.
Ajoutez un filtre de volatilité pour éviter les faux signaux lors de la variation des marchés.
Optimiser les paramètres pour obtenir les meilleures combinaisons de paramètres.
Incorporer des mécanismes de suivi des tendances dans la logique de stop-loss.
Ajoutez l'analyse soutien-résistance pour éviter les signaux autour des niveaux clés.
Utiliser l'apprentissage automatique pour filtrer davantage la qualité du signal.
Le système de croisement de moyenne mobile est une approche simple mais efficace de suivi des tendances. En filtrant le bruit et en suivant les tendances à moyen terme, il génère des signaux de qualité. Avec des pertes de stop appropriées, il permet un trading de tendance géré par le risque. La logique simple le rend également idéal pour les débutants à mettre en pratique.
/*backtest start: 2022-12-15 00:00:00 end: 2023-12-21 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("SMA Crossover Strategy", overlay=true) // Input parameters fast_length = input(9, title="Fast SMA Length") slow_length = input(45, title="Slow SMA Length") // Calculate moving averages fast_sma = ta.sma(close, fast_length) slow_sma = ta.sma(close, slow_length) // Buy condition buy_condition = ta.crossover(close, fast_sma) and ta.crossover(close, slow_sma) // Sell condition sell_condition = ta.crossunder(close, fast_sma) and ta.crossunder(close, slow_sma) // Calculate stop loss levels prev_low = request.security(syminfo.tickerid, "1D", low[1], lookahead=barmerge.lookahead_on) prev_high = request.security(syminfo.tickerid, "1D", high[1], lookahead=barmerge.lookahead_on) // Plot signals on the chart plotshape(buy_condition, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small) plotshape(sell_condition, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small) // Strategy exit conditions long_stop_loss = sell_condition ? prev_low : na short_stop_loss = buy_condition ? prev_high : na strategy.exit("Long Exit", from_entry="Long", when=sell_condition, stop=long_stop_loss) strategy.exit("Short Exit", from_entry="Short", when=buy_condition, stop=short_stop_loss) strategy.entry("Long", strategy.long, when=buy_condition) strategy.entry("Short", strategy.short, when=sell_condition)