Die Dual Moving Average Trading Strategie ist eine gängige quantitative Handelsstrategie. Diese Strategie verwendet zwei gleitende Durchschnitte mit unterschiedlichen Zeiträumen, um Handelssignale auf der Grundlage ihres Crossovers zu generieren. Insbesondere gilt, wenn der kurzfristige gleitende Durchschnitt über den langfristigen gleitenden Durchschnitt überschreitet, als Kaufsignal; wenn der kurzfristige gleitende Durchschnitt unter dem langfristigen gleitenden Durchschnitt überschreitet, gilt es als Verkaufssignal.
Das Kernprinzip dieser Strategie ist: Der kurzfristige gleitende Durchschnitt spiegelt den kurzfristigen Trend des Vermögenspreises wider, und der langfristige gleitende Durchschnitt spiegelt den langfristigen Trend des Vermögenspreises wider. Wenn die kurzfristige Linie über die langfristige Linie geht, zeigt dies, dass der kurzfristige Trend zu steigen geworden ist, zu diesem Zeitpunkt können Sie kaufen. Wenn die kurzfristige Linie unter die langfristige Linie geht, zeigt sie, dass der kurzfristige Trend zu fallen geworden ist, zu diesem Zeitpunkt können Sie verkaufen. Folgen Sie dem Trend, erfassen Sie den Wendepunkt des Preistrends.
Insbesondere definiert die Strategie zwei gleitende Durchschnitte: einen 5-tägigen kurzfristigen gleitenden Durchschnitt, um kurzfristige Preistrends zu erfassen; und einen 15-tägigen langfristigen gleitenden Durchschnitt, um langfristige Preistrends zu beurteilen.
Im Vergleich zu anderen Strategien hat die doppelte gleitende Durchschnittsstrategie folgende Vorteile:
Die Strategie des doppelten gleitenden Durchschnitts birgt auch einige Risiken, darunter vor allem:
Lösungen:
Die Strategie kann in folgenden Richtungen optimiert werden:
Kombinieren Sie mit anderen Indikatoren wie MACD, KDJ, um falsche Signale zu filtern.
Einführung eines anpassungsfähigen gleitenden Durchschnitts, dynamische Anpassung von Parametern auf der Grundlage der Marktvolatilität zur Verbesserung der Robustheit.
Optimieren Sie gleitende Durchschnittsparameter, um die beste Kombination zu finden und die Strategieleistung zu verbessern.
Hinzufügen eines Stop-Loss-Mechanismus zur Begrenzung von Verlusten und Verbesserung der Risikokontrolle.
Kombination von mehreren Zeitrahmen, die Signale von täglichen und wöchentlichen Linien zur Verbesserung der Stabilität nutzen.
Markov-Zustandsschalter, verwenden Sie verschiedene Parameter unter verschiedenen Marktzuständen, um die Anpassungsfähigkeit zu verbessern.
Im Allgemeinen ist die doppelte gleitende Durchschnittshandelsstrategie ziemlich effektiv und stabil. Das Handelsprinzip ist einfach zu verstehen und umzusetzen, die Parameter sind flexibel, um sich an Markttrends anzupassen. In der Zwischenzeit gibt es einige Einschränkungen wie die Erzeugung falscher Signale und Schwierigkeiten beim Umgang mit drastischen Marktschwankungen. Diese können durch die Einführung anderer Tools und Parameteroptimierung behoben werden. Insgesamt ist dies eine praktische Strategie, die für quantitative Handelsanfänger geeignet ist, um sie zu lernen und zu üben.
//@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())