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 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.
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é.
La stratégie peut être encore optimisée dans les aspects suivants:
Optimiser les périodes de MA rapides et lentes pour s'adapter à des produits présentant des fréquences de volatilité différentes.
Améliorer les conditions d'entrée en ajoutant plus de filtres comme les pics de volume pour réduire les faux signaux.
Améliorer le stop loss/take profit comme le trailing stop ou le dynamic take profit pour améliorer la rentabilité.
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.
Concevoir l'univers des paramètres pour trouver des combinaisons optimales de paramètres adaptées à différents produits.
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.
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 ————————————————————————————————————————————————— // ———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— //