Doppelte gleitende Durchschnitts-Crossover-Strategie - EMA9/20


Erstellungsdatum: 2024-03-08 15:22:50 zuletzt geändert: 2024-03-08 15:22:50
Kopie: 0 Klicks: 793
1
konzentrieren Sie sich auf
1617
Anhänger

Doppelte gleitende Durchschnitts-Crossover-Strategie - EMA9/20

Strategieübersicht

Die EMA9/20-Strategie ist eine quantitative Handelsstrategie, die auf der Kreuzung zweier Index-Moving Averages (EMA) basiert. Die Strategie verwendet die 9-Tage-EMA und die 20-Tage-EMA als Handelssignale und erzeugt ein Kauf- oder Verkaufssignal bei der Kreuzung der beiden EMAs. Die Strategie verwendet auch die Kreuzung von Preis und 9-Tage-EMA als Hilfssignale sowie ein Bewegungsstop, um das Handelsrisiko zu verwalten.

Strategieprinzip

Der Kern der Strategie besteht darin, die Markttrends mit Hilfe der Kreuzung von Index-Moving-Averagen aus zwei verschiedenen Perioden zu erfassen. Wenn ein Überschreiten des langfristigen Durchschnitts über dem kurzfristigen Durchschnittswert (der 9-Tage-EMA) ein Aufwärtstrend darstellt, erzeugt die Strategie ein Kaufsignal. Wenn ein Überschreiten des langfristigen Durchschnittswertes unter dem kurzfristigen Durchschnittswert ein Abwärtstrend darstellt, erzeugt die Strategie ein Verkaufssignal.

Zusätzlich zu den Meselinie-Kreuzungen gibt die Strategie als Hilfssignal die Kreuzung von Preisen mit den kurzfristigen Meselinie (einem 9-Tage-EMA) ein. Wenn Preise einen 9-Tage-EMA überschreiten, erzeugt dies auch ein Kaufsignal. Wenn Preise einen 9-Tage-EMA unterschreiten, erzeugt dies auch ein Verkaufsignal.

Um das Risiko zu kontrollieren, verwendet die Strategie die Methode des Trailing Stops. Sobald ein Handel in einen profitablen Zustand gerät, wird der mobile Stop die Stop-Loss-Position mit der Preisänderung anpassen, bis der Preis die Stop-Loss-Position umgekehrt durchbricht, wodurch die Gewinne gesperrt werden, während die potenziellen Verluste begrenzt werden.

Strategische Vorteile

  1. Einfach und leicht zu verstehen: Die Strategie basiert auf dem klassischen Prinzip der Gleichgewichtskreuzung, ist logisch klar und leicht zu verstehen und umzusetzen.

  2. Trend-Tracking: Die Strategie erfasst die wichtigsten Trends des Marktes durch die Durchschnittslinie zweier unterschiedlicher Perioden.

  3. Pünktliche Stop-Loss: Einführung eines mobilen Stop-Loss-Mechanismus, der die Positionen bei einer Trendwende pünktlich auslöst und das Abwärtsrisiko kontrolliert.

  4. Flexibilität der Parameter: Die Parameter der Strategie (z. B. Durchschnittszyklen, Stop-Loss-Punkte usw.) können für verschiedene Märkte und Sorten optimiert und angepasst werden, um sich an verschiedene Marktbedingungen anzupassen.

Strategisches Risiko

  1. Häufiger Handel: Da die Strategie gleichzeitig mit dem Signal von Linear-Cross und Price-Cross arbeitet, kann dies zu einer höheren Handelsfrequenz führen, was zu erhöhten Handelskosten führt.

  2. Schwankungsmärkte: Diese Strategie kann zu einem größeren Fehlsignal führen, das zu einem niedrigeren Gewinnniveau führt, wenn die Märkte schwanken oder sich zusammenfügen.

  3. Parameter-sensibel: Die Strategie kann auf Parameter-Selektionen reagieren, wobei unterschiedliche Parameter zu unterschiedlichen Ergebnissen führen können.

Optimierungsrichtung

  1. Signalfilterung: Auf der Grundlage von Gleichgewichts- und Preiskreuzsignalen werden andere technische Indikatoren (wie RSI, MACD usw.) als Filterbedingungen eingeführt, um falsche Signale zu reduzieren.

  2. Dynamische Parameter: Strategieparameter werden dynamisch angepasst (z. B. Durchschnittszyklen, Stop-Loss-Punkte) an die unterschiedlichen Marktsituationen, basierend auf Faktoren wie Marktfluktuation und Trendstärke.

  3. Positionsmanagement: Positionsgröße wird dynamisch angepasst, je nach Markttrend und Signalstärke. Positionen werden erhöht, wenn der Trend stark ist, und Positionen werden reduziert, wenn der Trend unklar oder das Signal schwach ist.

  4. Multi-Sorten-Anpassung: Ausweitung der Strategie auf mehrere Sorten und Märkte, um das Gesamtrisiko zu senken und die Ertragsstabilität zu verbessern, indem die Investitionen und die Relevanzanalyse verteilt werden.

Zusammenfassen

Die EMA9/20-Strategie ist eine einfache, praktische, quantitative Handelsstrategie, die Markttrends durch die Kreuzung und Preiskreuzung zweier unterschiedlicher Periodenevenlinien erfasst und gleichzeitig mit einem beweglichen Stop-Loss Risiken kontrolliert. Die Strategie ist klar in der Logik, leicht zu verstehen und zu implementieren und ist für Anfänger geeignet, um sie zu lernen und zu verwenden. Die Strategie weist jedoch auch einige Einschränkungen auf, wie z. B. schlechte Performance in schwankenden Märkten, sensible Parameterwahl usw.

Strategiequellcode
/*backtest
start: 2023-03-02 00:00:00
end: 2024-03-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@version=5
strategy(title = "EMAs 9 / 20",
		 shorttitle = '9/20 EMAs', 
		 initial_capital = 1000,
		 overlay = true, 
		 default_qty_type = strategy.fixed,
		 commission_type = strategy.commission.cash_per_contract,
		 commission_value = 0.35,
		 default_qty_value = 1)


int trailOffset = 10
int trailPoints = 15


series float oEma9 = ta.ema(ohlc4, 9)
series float oEma20 = ta.ema(ohlc4, 20)

series bool closeCrossoverEma9 = ta.crossover(close, oEma9)
series bool closeCrossunderEma9 = ta.crossover(close, oEma9)

series bool nineCrossover20 = ta.crossover(oEma9, oEma20)
series bool nineCrossunder20 = ta.crossunder(oEma9, oEma20)

//Entry Exits

if nineCrossover20
    strategy.entry("Long 9Cross20", strategy.long, 2)
else if closeCrossoverEma9
    strategy.entry("Long 9CrossClose", strategy.long, 2)
    strategy.exit("Long 9CrossClose Exit", from_entry = "Long 9CrossClose", trail_points = trailPoints, trail_offset = trailOffset)
else if nineCrossunder20
    strategy.close("Long 9Cross20")
    
    

if nineCrossunder20
    strategy.entry("Short 9Cross20", strategy.short, 2)
else if closeCrossunderEma9
    strategy.entry("Short 9CrossClose", strategy.short, 2)
    strategy.exit("Short 9CrossClose Exit", from_entry = "Short 9CrossClose", trail_points = trailPoints, trail_offset = trailOffset)
else if nineCrossover20
    strategy.close("Short 9Cross20")