Die Doppel-Moving-Average-Cross-Strategie ist eine häufig verwendete Quantitative-Trading-Strategie. Die Strategie verwendet zwei unterschiedlich periodische Moving-Averages als Kauf- und Verkaufssignale, wenn die kurzfristige Durchschnittslinie über die langfristige Durchschnittslinie verläuft, und verkauft, wenn die langfristige Durchschnittslinie über die langfristige Durchschnittslinie verläuft. Die Strategiecode unterstützt verschiedene gängliche Moving-Average-Typen, wie einfache Moving-Averages (SMA), Index-Moving-Averages (EMA), Doppel-Index-Moving-Averages (DEMA), Drei-Index-Moving-Averages (TEMA), Gewichtungs-Moving-Averages (WMA) und Handelsindizes (VWMA), und ermöglicht die flexible Auswahl von Kurz- und Langzeit-Moving-Averagen.
Der Kern der Strategie besteht darin, die Trendmerkmale und die Verzögerung von zwei unterschiedlich zyklischen gleitenden Durchschnitten zu nutzen, um die Preisentwicklung zu erfassen. Im Allgemeinen sind kurzfristige Durchschnitte preisempfindlicher, während langfristige Durchschnitte relativ verzögerlich sind. Wenn der Preis im Aufwärtstrend ist, geht die kurzfristige Durchschnittslinie vor der langfristigen Durchschnittslinie nach oben und schließlich durch die langfristige Durchschnittslinie, um ein Kaufsignal zu erzeugen; wenn der Preis im Abwärtstrend ist, geht die kurzfristige Durchschnittslinie vor der langfristigen Durchschnittslinie nach unten und schließlich durch die langfristige Durchschnittslinie, um ein Verkaufssignal zu bilden.
Einfach und einfach zu bedienen: Die doppelte schwebende Durchschnitts-Kreuzung ist eine einfache, verständliche, leicht umsetzbare, quantitative Trading-Strategie, die für Neuling-Trader geeignet ist, sie zu lernen und zu verwenden.
Breite Anwendbarkeit: Die Strategie kann für verschiedene Finanzmärkte und Handelsindizes wie Aktien, Futures, Devisen, Kryptowährungen verwendet werden.
Flexible Parameter: Der Strategiecode unterstützt verschiedene gängige Moving Average-Typen und Preis-Typen, und Benutzer können die Parameter flexibel anpassen, um sich an verschiedene Marktumgebungen und Handelsstile anzupassen.
Trendverfolgung: Durch die Kreuzung von zwei unterschiedlichen periodischen Gleichlinien kann die Strategie die wichtigsten Preistrends besser erfassen und hilft, auf dem Bogen zu bleiben und Rückschläge zu vermeiden.
Verzögerung: Das gleitende Durchschnitt ist im Wesentlichen ein Trend-Tracking-Indikator, bei dem es eine gewisse Verzögerung gibt, die möglicherweise die besten Ein- und Ausstiegszeiten verpasst.
Fehlwirkung in pulsierenden Märkten: In pulsierenden Märkten oder in horizontalen Rechnungslegungsmärkten sind hohe Preisschwankungen und häufige Gleichen-Kreuzungssignale möglich, was zu strategisch häufigem Handel führen kann, was zu hohen Transaktionskosten und Kapitalverlusten führt.
Parameteroptimierung ist schwierig: Die Wahl des Gleichlinienzyklus hat einen großen Einfluss auf die strategische Wirkung, aber die optimalen Parameter variieren häufig je nach Marktlage. Es ist schwierig, die optimale Kombination von Parametern zu finden, die alle gleich sind.
Einführung von Trendfiltern: Auf der Grundlage von Querschnittssignalen kann Trendfiltern in Kombination mit anderen Trendindikatoren wie MACD, ADX usw. durchgeführt werden, um nur zu handeln, wenn der Trend klar ist, um häufiges Handeln in einem schwankenden Markt zu vermeiden.
Optimierte Stopp-Loss: Einbeziehung vernünftiger Stopp-Loss-Logik in die Strategie, wie beispielsweise bewegliche Stopp-Loss, Volatilitäts-Stopp-Loss, um das Risiko eines einzigen Handels zu kontrollieren und das Risiko-Gewinn-Verhältnis der Strategie zu erhöhen.
Dynamische Parameteroptimierung: Für verschiedene Marktumgebungen können regelmäßig Parameter wie den Durchschnittszyklus dynamisch optimiert werden, um die Strategie an Marktänderungen anzupassen und die Stabilität zu verbessern.
Multifaktorkombination: Die Kombination von zwei beweglichen Durchschnitts-Kreuzungen mit anderen wirksamen Quantitativfaktoren (z. B. Mobilität, Wert, Verkehrsvolumen usw.) bildet eine stabilere und wirksamere Multifaktorstrategie.
Die Doppel-Moving-Average-Kreuzungsstrategie ist eine einfache klassische Trend-Tracking-Strategie, die durch die Kreuzung von zwei verschiedenen periodischen Ebenen der Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-Trend-
/*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")