La stratégie de croisement des moyennes mobiles rapides et lentes est une stratégie simple basée sur des moyennes mobiles. Elle utilise deux moyennes mobiles, une rapide et une lente. Lorsque la moyenne mobile rapide franchit le niveau supérieur de la moyenne mobile lente depuis le bas, elle devient longue, ce qui indique que les prix peuvent augmenter. Lorsque la moyenne mobile rapide franchit le niveau inférieur de la moyenne mobile lente depuis le haut, elle quitte sa position, ce qui indique que les prix peuvent baisser. Cela peut servir d'indicateur pour prédire l'action future des prix.
La stratégie utilise deux moyennes mobiles, une rapide et une lente. Plus précisément, les longueurs par défaut sont de 25 périodes pour la moyenne mobile rapide et 62 périodes pour la moyenne mobile lente. La stratégie permet la sélection de différents types de moyennes mobiles, y compris SMA, EMA, WMA, RMA et VWMA.
Lorsque la moyenne mobile rapide dépasse la moyenne mobile lente depuis le bas, cela indique que les prix à court terme ont commencé à briser les prix à long terme, ce qui est un signal de croix dorée typique, indiquant que les prix peuvent entrer dans une tendance haussière. La stratégie est longue à ce stade. Lorsque la moyenne mobile rapide dépasse la moyenne mobile lente d'en haut, cela indique que les prix à court terme ont commencé à décomposer les prix à long terme, ce qui est un signal de croix de mort, indiquant que les prix peuvent entrer dans une tendance baissière. La stratégie sort de sa position à ce stade.
En utilisant le croisement des moyennes mobiles rapides et lentes pour déterminer la tendance et la direction des prix, et en prenant les positions longues ou fermées correspondantes, les bénéfices peuvent être réalisés.
La stratégie présente les avantages suivants:
En résumé, avec le croisement de la moyenne mobile rapide et lente comme signal de trading principal, la stratégie a une forte capacité à juger des tendances futures des prix.
La stratégie comporte également des risques potentiels:
Pour contrôler et atténuer ces risques, les méthodes suivantes peuvent être adoptées:
Les principales orientations pour optimiser la stratégie sont les suivantes:
Sélection des périodes pour les moyennes mobiles rapides et lentes: les paramètres par défaut peuvent ne pas être optimaux, différentes périodes peuvent être testées pour trouver la meilleure configuration
Sélection des types de moyennes mobiles: plusieurs types sont fournis et peuvent être testés pour déterminer lequel fonctionne le mieux pour des produits spécifiques
Combinaison avec d'autres indicateurs ou stratégies: peut essayer de combiner avec des indicateurs de volatilité, des indicateurs de volume-prix ou des stratégies de suivi des tendances pour améliorer les performances
Optimisation adaptative des paramètres: permettre aux périodes de moyennes mobiles de s'ajuster automatiquement en fonction de la volatilité et de la liquidité du marché afin d'améliorer la stabilité
Aide au modèle d'IA: utiliser des algorithmes d'apprentissage automatique pour analyser de grandes quantités de données et rechercher automatiquement des règles de trading optimales
Grâce à ces méthodes d'optimisation, on peut s'attendre à une amélioration supplémentaire de la rentabilité et de la stabilité de la stratégie.
En résumé, la stratégie de croisement des moyennes mobiles rapides et lentes est une stratégie très pratique de suivi des tendances. Elle capture les schémas de changement de prix à travers différents délais, en utilisant le croisement des moyennes mobiles rapides de la moyenne mobiles lente pour déterminer la tendance et la direction probables des prix futurs. L'idée de stratégie est simple et claire, facile à comprendre et à mettre en œuvre, offre des paramètres personnalisables flexibles, et a également une grande fiabilité, un degré d'automatisation, une large applicabilité et une forte extensibilité. Bien sûr, il existe des risques de faux signaux, nécessitant une combinaison avec d'autres indicateurs pour obtenir un effet maximal. Avec des tests et une optimisation continus, la stratégie a le potentiel d'obtenir des profits stables décents dans le trading en direct.
/*backtest start: 2023-02-20 00:00:00 end: 2024-02-26 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 //Author @divonn1994 initial_balance = 100 strategy(title='Fast v Slow Moving Averages Strategy', shorttitle = 'Fast v Slow', overlay=true, pyramiding=0, default_qty_value=100, default_qty_type=strategy.percent_of_equity, precision=7, currency=currency.USD, commission_value=0.1, commission_type=strategy.commission.percent, initial_capital=initial_balance) //Input for number of bars for moving average, Switch to choose moving average type, Display Options and Time Frame of trading---------------------------------------------------------------- fastBars = input.int(25, "Fast moving average length", minval=1) slowBars = input.int(62, "Slow moving average length", minval=1) strategy = input.string("EMA", "MA type", options = ["EMA", "VWMA", "SMA", "RMA", "WMA"]) redOn = input.string("On", "Red Background Color On/Off", options = ["On", "Off"], group='Display') greenOn = input.string("On", "Green Background Color On/Off", options = ["On", "Off"], group='Display') maOn = input.string("On", "Moving Average Plot On/Off", options = ["On", "Off"], group='Display') startMonth = input.int(title='Start Month 1-12 (set any start time to 0 for furthest date)', defval=1, minval=0, maxval=12, group='Beginning of Strategy') startDate = input.int(title='Start Date 1-31 (set any start time to 0 for furthest date)', defval=1, minval=0, maxval=31, group='Beginning of Strategy') startYear = input.int(title='Start Year 2000-2100 (set any start time to 0 for furthest date)', defval=2011, minval=2000, maxval=2100, group='Beginning of Strategy') endMonth = input.int(title='End Month 1-12 (set any end time to 0 for today\'s date)', defval=0, minval=0, maxval=12, group='End of Strategy') endDate = input.int(title='End Date 1-31 (set any end time to 0 for today\'s date)', defval=0, minval=0, maxval=31, group='End of Strategy') endYear = input.int(title='End Year 2000-2100 (set any end time to 0 for today\'s date)', defval=0, minval=0, maxval=2100, group='End of Strategy') //Strategy Calculations----------------------------------------------------------------------------------------------------------------------------------------------------------------------- inDateRange = true maMomentum = switch strategy "EMA" => (ta.ema(close, fastBars) >= ta.ema(close, slowBars)) ? 1 : -1 "SMA" => (ta.sma(close, fastBars) >= ta.sma(close, slowBars)) ? 1 : -1 "RMA" => (ta.rma(close, fastBars) >= ta.rma(close, slowBars)) ? 1 : -1 "WMA" => (ta.wma(close, fastBars) >= ta.wma(close, slowBars)) ? 1 : -1 "VWMA" => (ta.vwma(close, fastBars) >= ta.vwma(close, slowBars)) ? 1 : -1 => runtime.error("No matching MA type found.") float(na) fastMA = switch strategy "EMA" => ta.ema(close, fastBars) "SMA" => ta.sma(close, fastBars) "RMA" => ta.rma(close, fastBars) "WMA" => ta.wma(close, fastBars) "VWMA" => ta.vwma(close, fastBars) => runtime.error("No matching MA type found.") float(na) slowMA = switch strategy "EMA" => ta.ema(close, slowBars) "SMA" => ta.sma(close, slowBars) "RMA" => ta.rma(close, slowBars) "WMA" => ta.wma(close, slowBars) "VWMA" => ta.vwma(close, slowBars) => runtime.error("No matching MA type found.") float(na) //Enter or Exit Positions-------------------------------------------------------------------------------------------------------------------------------------------------------------------- if ta.crossover(maMomentum, 0) if inDateRange strategy.entry('long', strategy.long, comment='long') if ta.crossunder(maMomentum, 0) if inDateRange strategy.close('long') //Plot Strategy Behavior--------------------------------------------------------------------------------------------------------------------------------------------------------------------- plot(series = maOn == "On" ? fastMA : na, title = "Fast Moving Average", color = color.new(color.white,0), linewidth=2, offset=1) plot(series = maOn == "On" ? slowMA : na, title = "Slow Moving Average", color = color.new(color.purple,0), linewidth=3, offset=1) bgcolor(color = inDateRange and (greenOn == "On") and maMomentum > 0 ? color.new(color.green,75) : inDateRange and (redOn == "On") and maMomentum <= 0 ? color.new(color.red,75) : na, offset=1)