La stratégie de négociation des moyennes mobiles doubles est une stratégie de négociation quantitative commune. Cette stratégie utilise deux moyennes mobiles avec des périodes de temps différentes pour générer des signaux de trading basés sur leur croisement. Plus précisément, lorsque la moyenne mobile à court terme dépasse la moyenne mobile à long terme, elle est considérée comme un signal d'achat; lorsque la moyenne mobile à court terme dépasse la moyenne mobile à long terme, elle est considérée comme un signal de vente.
Le principe de base de cette stratégie est le suivant: la moyenne mobile à court terme reflète la tendance à court terme du prix de l'actif, et la moyenne mobile à long terme reflète la tendance à long terme du prix de l'actif. Lorsque la ligne à court terme traverse au-dessus de la ligne à long terme, cela indique que la tendance à court terme est en hausse, à ce moment-là, vous pouvez acheter. Lorsque la ligne à court terme traverse en dessous de la ligne à long terme, cela indique que la tendance à court terme est en baisse, à ce moment-là, vous pouvez vendre. Suivez la tendance, captez le tournant de la tendance des prix.
Plus précisément, la stratégie définit deux moyennes mobiles: une moyenne mobile à court terme de 5 jours pour capturer les tendances des prix à court terme; et une moyenne mobile à long terme de 15 jours pour juger des tendances des prix à long terme.
Comparée à d'autres stratégies, la double stratégie des moyennes mobiles présente les avantages suivants:
La stratégie de la moyenne mobile double comporte également certains risques, notamment:
Les solutions:
La stratégie peut être optimisée dans les directions suivantes:
Combinez avec d'autres indicateurs comme MACD, KDJ pour filtrer les faux signaux.
Introduire une moyenne mobile adaptative, ajuster dynamiquement les paramètres en fonction de la volatilité du marché pour améliorer la robustesse.
Optimiser les paramètres de la moyenne mobile pour trouver la meilleure combinaison et améliorer les performances de la stratégie.
Ajouter un mécanisme de stop loss pour limiter les pertes et renforcer le contrôle des risques.
Combinaison de plusieurs délais, utilisant des signaux de lignes quotidiennes et hebdomadaires pour améliorer la stabilité.
Commutateur d'état de Markov, utiliser différents paramètres dans différents états de marché pour améliorer l'adaptabilité.
En général, la stratégie de négociation de la moyenne mobile double est assez efficace et stable. Le principe de négociation est simple à comprendre et à mettre en œuvre, les paramètres sont flexibles pour s'adapter aux tendances du marché. Pendant ce temps, il existe certaines limitations telles que la génération de faux signaux et la difficulté à gérer les fluctuations drastiques du marché. Ceux-ci peuvent être abordés en introduisant d'autres outils et l'optimisation des paramètres.
//@version=3 strategy("CS: 2 Moving Averages Script - Strategy (Testing)", overlay=true) // === GENERAL INPUTS === // short ma ma1Source = input(defval = close, title = "MA 1 Source") ma1Length = input(defval = 5, title = "MA 1 Period", minval = 1) // long ma ma2Source = input(defval = close, title = "MA 2 Source") ma2Length = input(defval = 15, title = "MA 2 Period", minval = 1) // === SERIES SETUP === /// a couple of ma's.. ma1 = ema(ma1Source, ma1Length) ma2 = ema(ma2Source, ma2Length) // === PLOTTING === fast = plot(ma1, title = "MA 1", color = red, linewidth = 2, style = line, transp = 30) slow = plot(ma2, title = "MA 2", color = green, linewidth = 2, style = line, transp = 30) // === LOGIC === enterLong = crossover(ma1, ma2) exitLong = crossover(ma2, ma1) // === INPUT BACKTEST RANGE === FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2018, title = "From Year", minval = 2012) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 9999, title = "To Year", minval = 2012) // === FUNCTION EXAMPLE === start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => true // create function "within window of time" // Entry // strategy.entry(id="Long Entry", long=true, when=enterLong and window()) strategy.entry(id="Short Entry", long=false, when=exitLong and window())