Die Strategie erzeugt Handelssignale, indem zwei gleitende Durchschnitte verschiedener Perioden berechnet und ihre Überschreitungspunkte dargestellt werden.
Die Strategie basiert auf dem Vorteil der gleitenden Durchschnitte - sie eliminieren die Zufälligkeit in den Kurssequenzen und extrahieren den Haupttrend.
Wenn der kurzfristige gleitende Durchschnitt über den längerfristigen gleitenden Durchschnitt geht, signalisiert er, dass die Preise in einen Aufwärtstrend treten. Wenn er darunter geht, signalisiert er, dass die Preise in einen Abwärtstrend treten. Nach dieser Logik gehen wir long oder short.
Insbesondere berechnet die Strategie den 7-tägigen einfachen gleitenden Durchschnitt (SMA) und den 20-tägigen einfachen gleitenden Durchschnitt. Wenn sich die beiden Durchschnitte kreuzen, beurteilt sie eine Trendumkehrung und löst ein Handelssignal aus. Um zwischen Crossover-Typen zu unterscheiden, definieren wir die kurzfristige Linie, die über der langfristigen Linie liegt, als Aufwärtstrend und umgekehrt als Abwärtstrend. Wenn die kurzfristige Linie über die langfristige Linie kreuzt, d.h. der Beginn eines Aufwärtstrends, wird eine Long-Position eingegeben. Wenn die kurzfristige Linie unten kreuzt, d.h. der Beginn eines Abwärtstrends, wird eine Short-Position eingegeben.
(1) Die Strategielogik ist einfach und leicht zu verstehen und umzusetzen.
(2) Die Verwendung von gleitenden Durchschnitten als Trendverfolgungsindikatoren kann ein gewisses Rauschen in den Preisen wirksam ausfiltern.
(3) Flexible Parameterkonfigurationen, um unterschiedlichen Marktbedingungen und Handelsanforderungen gerecht zu werden.
(4) Die Verwendung von zwei häufig verwendeten gleitenden Durchschnittsperioden erleichtert die Bestimmung klarer Handelssignale.
(5) Leistungsfähige Visualisierung für intuitive Trend- und Schlüsselstandsdaten usw.
(6) Die Parameter können durch Backtesting optimiert werden, um die Strategierendite zu verbessern.
(1) Die Strategie ist sehr anfällig für Marktschwankungen, die zu häufigen Verlusten in unterschiedlichen Zeiträumen führen können.
(2) Crossovers können die Trendumkehrniveaus möglicherweise nicht genau bestimmen und falsche Signale auslösen.
(3) Strenge Regeln können sich nicht an drastische Ereignisse anpassen, die die Märkte beeinflussen, was möglicherweise zu enormen Verlusten führen kann.
(4) Falsche Parameter können auch zu ungenauen Signalen und verpassten Trades führen.
Um diese Risiken zu mindern, können Parameter entsprechend angepasst werden. Andere Indikatoren können zur Bestätigung hinzugefügt werden. Stop-Loss-Strategien können Verluste kontrollieren. Parameter oder Strategien können je nach Marktregime angepasst werden.
(1) Die Einbeziehung anderer technischer Indikatoren in eine kombinierte Strategie könnte die Signalgenauigkeit erhöhen.
(2) Hinzufügen von Stop-Loss-Strategien zur effektiven Kontrolle einzelner Handelsverluste, z. B. Ausstieg aus Positionen, wenn die Preise die gleitenden Durchschnitte um einen bestimmten Schwellenwert überschreiten.
(3) Test und Optimierung von gleitenden Durchschnittsperioden. Versuche verschiedene schnelle und langsame Kombinationen, um die besten Parameter zu finden. Andere gleitende Durchschnitte wie EMA, WMA können ebenfalls getestet werden.
(4) Anpassung der Parameter anhand verschiedener Produkte und Marktbedingungen: Unter Verwendung kürzerer gleitender Durchschnitte und kleinerer Querschnittsdifferenz für volatilere Produkte.
Die gleitende Durchschnitts-Crossover-Strategie ist eine sehr typische und grundlegende Trendfolgestrategie. Durch die Berechnung von zwei gleitenden Durchschnitten verschiedener Perioden und die Beobachtung ihrer Crossovers wird der Preistrend beurteilt. Handelssignale werden erzeugt, wenn der kürzere Zeitraum den gleitenden Durchschnitt über oder unter den längeren kreuzt. Diese einfache Logik ist einfach umzusetzen und flexibel anzupassen, was sie zu einer einführenden Quantitativstrategie macht. Aber sie hat auch Mängel wie Empfindlichkeit gegenüber Marktschwankungen und mögliche ungenaue Signale. Durch die Kombination mit anderen Indikatoren, das Hinzufügen von Stops und Parameteroptimierung kann die Strategie zu einer sehr praktischen für den quantitativen Handel verbessert werden.
/*backtest start: 2022-12-01 00:00:00 end: 2023-12-07 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Ma stratégie", overlay=true) // Multi-timeframe and price input pricetype = input(close, title="Price Source For The Moving Averages") useCurrentRes = input(true, title="Use Current Timeframe As Resolution?") resCustom = input(title="Use Different Timeframe? Then Uncheck The Box Above", defval="W") res = useCurrentRes ? timeframe.period : resCustom price = request.security(syminfo.tickerid, res, pricetype) // MA period input shortperiod = input(7, title="Short Period Moving Average") longperiod = input(20, title="Long Period Moving Average") short = ema(price, shortperiod) long = ema(price, longperiod) // MA trend direction color shortcolor = short > short[1] ? lime : short < short[1] ? red : blue longcolor = long > long[1] ? lime : long < long[1] ? red : blue // MA output MA1 = plot(short, title="Short Period Moving Average", style=linebr, linewidth=2, color=shortcolor) MA2 = plot(long, title="Long Period Moving Average", style=linebr, linewidth=4, color=longcolor) fill(MA1, MA2, color=silver, transp=50) // MA trend bar color TrendingUp() => short > long TrendingDown() => short < long barcolor(TrendingUp() ? green : TrendingDown() ? red : blue) // MA cross alert MAcrossing = cross(short, long) ? short : na plot(MAcrossing, style = cross, linewidth = 4,color=black) // MA cross background color alert Uptrend() => TrendingUp() and TrendingDown()[1] Downtrend() => TrendingDown() and TrendingUp()[1] bgcolor(Uptrend() ? green : Downtrend() ? red : na,transp=50) // Buy and sell alert Buy = Uptrend() and close > close[1] Sell = Downtrend() and close < close[1] plotshape(Buy, color=black, style=shape.arrowup, text="Buy", location=location.bottom) plotshape(Sell, color=black, style=shape.arrowdown, text="Sell", location=location.top) if (Buy) strategy.entry("My Long Entry Id", strategy.long) if (Sell) strategy.entry("My Short Entry Id", strategy.short)