Die Dual Moving Average Crossover Strategie ist eine gängige quantitative Handelsstrategie. Diese Strategie verwendet zwei gleitende Durchschnitte mit unterschiedlichen Perioden als Kauf- und Verkaufssignale. Sie kauft, wenn der kurzfristige gleitende Durchschnitt über den langfristigen gleitenden Durchschnitt überschreitet und verkauft, wenn der kurzfristige gleitende Durchschnitt unter den langfristigen gleitenden Durchschnitt überschreitet. Der Strategiecode unterstützt verschiedene gängige Arten von gleitenden Durchschnitten, wie beispielsweise den einfachen gleitenden Durchschnitt (SMA), den exponentiellen gleitenden Durchschnitt (EMA), den doppelten exponentiellen gleitenden Durchschnitt (DEMA), den dreifachen exponentiellen gleitenden Durchschnitt (TEMA), den gewichteten gleitenden Durchschnitt (WMA) und den gewichteten gleitenden Durchschnitt (VWMA).
Der Kernprinzip dieser Strategie besteht darin, Preistrends zu erfassen, indem die Trendmerkmale und die Verzögerung von zwei gleitenden Durchschnitten mit verschiedenen Perioden genutzt werden. Im Allgemeinen ist der kurzfristige gleitende Durchschnitt empfindlicher auf Preisänderungen, während der langfristige gleitende Durchschnitt relativ zurückbleibt. Wenn der Preis im Aufwärtstrend ist, bewegt sich der kurzfristige gleitende Durchschnitt vor dem langfristigen gleitenden Durchschnitt nach oben und überschreitet ihn schließlich, was ein
Einfach und einfach zu bedienen: Die Dual Moving Average Crossover Strategie ist eine einfache, leicht verständliche und einfach umsetzbare quantitative Handelsstrategie, die für Anfänger geeignet ist.
Breite Anwendbarkeit: Diese Strategie kann mit großer Vielseitigkeit auf verschiedene Finanzmärkte und Handelsinstrumente wie Aktien, Futures, Forex, Kryptowährungen usw. angewendet werden.
Flexible Parameter: Der Strategiecode unterstützt mehrere gängige Arten von gleitenden Durchschnitten und Preistypen und ermöglicht es den Nutzern, die Parameter flexibel an ihre Bedürfnisse anzupassen, um sich an unterschiedliche Marktbedingungen und Handelsstile anzupassen.
Trendverfolgung: Durch die Verwendung der Crossover-Signale von zwei gleitenden Durchschnitten mit unterschiedlichen Perioden kann diese Strategie den Haupttrend des Preises effektiv erfassen, was hilft, dem Trend zu folgen und einen Gegentrendhandel zu vermeiden.
Verzögerung: Gleitende Durchschnittswerte sind im Wesentlichen trendfolgende Indikatoren und weisen eine gewisse Verzögerung auf, die die besten Ein- und Ausstiegszeiten verpassen kann.
Unwirksamkeit in den Märkten mit Bandbreite: In den Märkten mit Bandbreite oder in den Seitenmärkten sind die Preisschwankungen groß und es treten häufig gleitende Durchschnitts-Crossover-Signale auf, was zu häufigem Handel führen und zu hohen Handelskosten und Kapitalverlusten führen kann.
Schwierigkeiten bei der Optimierung von Parametern: Die Auswahl von gleitenden Durchschnittsperioden hat erhebliche Auswirkungen auf die Strategieleistung, aber die optimalen Parameter variieren häufig je nach Marktbedingungen, was es schwierig macht, allgemein anwendbare optimale Parameterkombinationen zu finden.
Einführung von Trendfiltern: Zusätzlich zu den Signalen des gleitenden Durchschnitts können andere Trendindikatoren wie MACD und ADX für die Trendfilterung eingesetzt werden, wobei nur dann gehandelt wird, wenn der Trend klar ist, um häufiges Handeln in Bereichsmärkten zu vermeiden.
Optimierung von Take-Profit und Stop-Loss: Eine angemessene Take-Profit- und Stop-Loss-Logik wie Trailing-Stop-Loss und Volatilitäts-basierte Stop-Loss in die Strategie einbeziehen, um das einzelne Handelsrisiko zu kontrollieren und das Risiko-Rendite-Verhältnis der Strategie zu verbessern.
Dynamische Parameteroptimierung: Für verschiedene Marktumgebungen wird regelmäßig eine dynamische Optimierung von Parametern wie gleitenden Durchschnittsperioden durchgeführt, damit sich die Strategie an Marktveränderungen anpassen und die Robustheit verbessern kann.
Multifaktorkombination: Kombination der doppelten gleitenden Durchschnitts-Crossover-Signale mit anderen wirksamen quantitativen Faktoren (wie Dynamik, Wert, Volumen usw.) zur Bildung einer robusteren und effektiveren Multifaktorstrategie.
Die Dual Moving Average Crossover Strategie ist eine einfache und klassische Trendfolgestrategie, die Preistrends durch die Crossover-Signale von zwei gleitenden Durchschnitten mit verschiedenen Perioden erfasst, die für Trending-Märkte geeignet sind. Diese Strategie hat jedoch auch Probleme wie Verzögerung und Schwierigkeit bei der Optimierung von Parametern, die Kombinationen mit anderen Methoden zur Optimierung und Verbesserung erfordern, wie Trendfilterung, dynamische Parameteroptimierung, Multifaktorkombination usw., um die Anwendbarkeit und Robustheit der Strategie zu verbessern. Insgesamt kann die Dual Moving Average Crossover Strategie als eine der grundlegenden Strategien im quantitativen Handel dienen, die von quantitativen Enthusiasten zu lernen und zu recherchieren ist.
/*backtest start: 2023-05-08 00:00:00 end: 2024-05-13 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © SustainableInvestment //@version=5 strategy("Moving average strategy (이동평균선 전략)", overlay=true) // === INPUTS === basisType = input.string(defval = "EMA", title = "MA Type: SMA, EMA, DEMA, TEMA, WMA, VWMA ",options=["SMA", "EMA", "DEMA", "TEMA", "WMA", "VWMA"]) shortLen = input.int(defval = 1, title = "Short MA Period", minval = 1) longLen = input.int(defval = 20, title = "Long MA Period", minval = 1) price = input.string(defval = "Typical", title = "Price Type : Close, High, Open, Low, Typical, Center ",options=["Close", "High", "Open", "Low", "Typical", "Center"]) // === BASE FUNCTIONS === // 가격 종류 설정 priceType(price) => Typical = (high+low+close)/3 Center = (high+low) / 2 price=="High"?high : price=="Low"?low : price=="Open"?open : price=="Typical"?Typical : price=="Center"?Center : close // 이동평균선 종류 설정 variant(type, src, len) => v1 = ta.sma(src, len) // Simple v2 = ta.ema(src, len) // Exponential v3 = 2 * v2 - ta.ema(v2, len) // Double Exponential v4 = 3 * (v2 - ta.ema(v2, len)) + ta.ema(ta.ema(v2, len), len) // Triple Exponential v5 = ta.wma(src, len) // Weighted v6 = ta.vwma(src, len) // Volume Weighted type=="EMA"?v2 : type=="DEMA"?v3 : type=="TEMA"?v4 : type=="WMA"?v5 : type=="VWMA"?v6 : v1 longCondition = ta.crossover(variant(basisType, priceType(price), shortLen), variant(basisType, priceType(price), longLen)) if (longCondition) strategy.entry("Long Entry", strategy.long) exitCondition = ta.crossunder(variant(basisType, priceType(price), shortLen), variant(basisType, priceType(price), longLen)) if (exitCondition) strategy.close("Long Entry","Long Exit")