
Die Dual Moving Average Trading Strategy ist eine übliche Quantitative Trading-Strategie, bei der zwei unterschiedliche Zeiträume als Moving Averages verwendet werden, um ein Handelssignal zu erzeugen, das auf ihre Kreuzung basiert. Insbesondere wird ein Kaufsignal ausgegeben, wenn der langfristige Moving Average über den kurzfristigen Moving Average überschritten wird, und ein Verkaufssignal, wenn der langfristige Moving Average unter dem kurzfristigen Moving Average überschritten wird.
Die Kernprinzipien der Strategie sind: Der kurzfristige Moving Average spiegelt die kurzfristige Tendenz der Assetpreise wider, der langfristige Moving Average spiegelt die langfristige Tendenz der Assetpreise wider. Wenn die kurzfristige Linie die langfristige Linie überschreitet, wird die kurzfristige Tendenz in einen Aufwärtstrend umgewandelt, und dann kann gekauft werden. Wenn die kurzfristige Linie die langfristige Linie unterbricht, wird die kurzfristige Tendenz in einen Abwärtstrend umgewandelt, und dann kann verkauft werden.
Konkret definiert die Strategie zwei Moving Averages: einen 5-Tage-Short-Moving-Average, um kurzfristige Preistrends zu erfassen, und einen 15-Tage-Long-Moving-Average, um langfristige Preistrends zu beurteilen. Wenn die 5-Tage-Linie von unten durch die 15-Tage-Linie geht, bedeutet dies, dass die kurzfristigen Preise zu steigen beginnen, was ein Kaufsignal ist.
Im Vergleich zu anderen Strategien bietet die Doppel-Moving-Average-Strategie folgende Vorteile:
Die Doppel-Moving-Average-Strategie birgt auch einige Risiken, die vor allem folgende sind:
Entsprechende Lösungen:
Die Strategie kann in folgenden Richtungen optimiert werden:
In Kombination mit anderen Indikatoren filtern Sie Signale wie MACD, KDJ usw., um falsche Signale zu vermeiden
Einführung von Adaptive Moving Averages, die die Moving Average-Parameter dynamisch an die Marktschwankungen anpassen, um die Stabilität zu verbessern
Optimierung von Moving Average-Parametern, die optimale Kombination von Parametern und die Verbesserung der Effektivität der Strategie
Einstieg in die Stop-Loss-Mechanismen, um die Ausweitung von Verlusten zu verhindern und die Risikokontrolle zu verbessern
Mehrfache Zeitrahmenkombination mit gleichzeitiger Nutzung von Sonnen- und Umlaufsignalen zur Steigerung der Stabilität
Markov-Status-Switching, unterschiedliche Parameter für verschiedene Marktbedingungen, um die Anpassungsfähigkeit zu verbessern
Die Doppel-Moving-Average-Trading-Strategie ist eine quantitative Handelsstrategie, die insgesamt eine stabilere Wirkung hat. Die Handelsprinzipien sind einfach, leicht zu verstehen und umzusetzen, die Parameter sind flexibel einzustellen und die Markttrends effektiv zu verfolgen. Es gibt jedoch auch bestimmte Einschränkungen, wie die Erzeugung von Falschsignalen, die Schwierigkeit, mit starken Marktschwankungen umzugehen. Dies muss durch die Einführung anderer Hilfsmittel und Parameteroptimierung kontrolliert werden.
//@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())