Crossover-Strategie zwischen mehreren gleitenden Durchschnitten

Schriftsteller:ChaoZhang, Datum: 2024-02-04 17:21:25
Tags:

img

Übersicht

Diese Strategie berechnet gleitende Durchschnittslinien mehrerer Zeitrahmen, um den Trend über verschiedene Zeiträume zu bestimmen. Es geht lang, wenn der Preis über die gleitenden Durchschnittswerte überschreitet, und geht kurz, wenn der Preis unter die gleitenden Durchschnittswerte überschreitet. Darüber hinaus werden Stop Loss und Take Profit integriert, um Risiken und Renditen auszugleichen.

Grundsätze

Die Strategie beruht auf folgenden Schlüsselpunkten:

  1. Berechnen Sie einfache gleitende Durchschnitte für 21 Tage, 50 Tage, 100 Tage und 200 Tage.

  2. Gehen Sie lang, wenn der Preis einen der gleitenden Durchschnitte überschreitet, und gehen Sie kurz, wenn er darunter überschreitet.

  3. Stellen Sie den Stop-Loss nahe dem niedrigsten Preis der vorherigen Bar nach Eröffnung von Long-Positionen und nahe dem höchsten Preis nach Eröffnung von Short-Positionen ein.

  4. Setzen Sie Gewinnziele unter dem niedrigsten Preis für Longs und über dem höchsten Preis für Shorts innerhalb bestimmter Bereiche.

  5. Schließen Sie Positionen, wenn der Preis den Stop-Loss- oder Take-Profit-Level erreicht.

Das Beurteilen von Trends über mehrere Zeitrahmen hinweg kann die Zuverlässigkeit von Handelssignalen verbessern und es uns ermöglichen, den Trends zu folgen, wenn sie relativ klar sind.

Vorteile

Die wichtigsten Vorteile dieser Strategie sind:

  1. Verbesserte Signalzuverlässigkeit mit mehreren Zeitrahmenanalysen. Verschiedene gleitende Durchschnitts-Crossovers helfen, einige falsche Signale auszufiltern und ermöglichen es uns, an klareren Trendmomenten zu handeln.

  2. Dynamische Stops erleichtern die Risikokontrolle. Die Berechnung von Stops basierend auf der Kursentwicklung bietet angemessene Bereiche, um den maximalen Verlust pro Handel zu begrenzen.

  3. Die Pine-Syntax bietet lesbare Strukturen zur einfachen Anpassung von Parametern und Optimierung.

  4. Bewegliche Durchschnitts-Crossovers sind eine klassische Strategieidee, die mit der richtigen Parameter-Ausrichtung im Live-Handel leicht umgesetzt werden kann.

Risiken

Es gibt auch einige Risiken, die zu berücksichtigen sind:

  1. Ungenaue Trendbeurteilung. gleitende Durchschnitte können gemischte Signale und Verzögerungen erzeugen, was zu unsachgemäßen Handelssignalen führt.

  2. Verlustbelastung in volatilen Märkten. Stop-Losses können leicht bei riesigen Preisunterschieden oder -umkehrungen ausgelöst werden, was zu großen Verlusten führt.

  3. Eine falsche Einstellung der Parameter vergrößert die Verluste. Zu breite Stops oder enge Take-Gewinne können den maximalen Verlust pro Handel erhöhen.

  4. Langfristige Risiken: Dieser Trend nach der Strategie berücksichtigt nicht die langfristige Rentabilität und kann im Laufe der Zeit erhebliches Kapital verbrauchen.

  5. Die tatsächlichen Handelsunterschiede: Handelskosten, Slippage usw. können sich auf die Rendite auswirken, wenn sie auf tatsächlichen Handelsplattformen angewendet werden.

Lösungen:

  1. Hinzufügen Sie Signalbestätigung mit anderen Indikatoren wie KDJ, MACD usw.

  2. Anpassung der Stoppbreite anhand der Marktbedingungen, um einen vorzeitigen Auslöser zu vermeiden.

  3. Optimieren von Parametern und Bewertung langfristiger Renditen und Abzüge.

  4. Testen Sie Strategien im Papierhandel und fügen Sie manuelle Stopps hinzu.

Möglichkeiten zur Verbesserung

Weitere Verbesserungsmöglichkeiten bestehen:

  1. Hinzufügen von quantitativen Ein- und Ausstiegsregeln, z. B. nach neuen Höchst- und Tiefwerten suchen, um einen klareren Trend zu gewährleisten.

  2. Einbeziehung der Positionsgröße und des Risikomanagements.

  3. Verbessern Sie die Validierung von Trends. Verwenden Sie Indikatoren wie PRZ, ATR, DMI usw., um geeignete Trends zu filtern und auszuwählen.

  4. Schalten Sie lange und kurze Halteperioden ab, setzen Sie Gewinne auf, um Gewinne zu erzielen.

  5. Konstruieren Sie einen Aktienpool unter Verwendung von Faktorinvestitionsmodellen.

  6. Fügen Sie maschinelles Lernen zur Risikokontrolle hinzu. Verwenden Sie LSTM, RNN usw., um das Urteilen zu unterstützen und menschliche Fehler zu vermeiden.

Schlussfolgerung

Diese einfache gleitende Durchschnitts-Crossover-Strategie bietet eine einfache Implementierung für den Trendfolg. Die dynamischen Stopps helfen, Risiken zu kontrollieren. Es gibt jedoch einige Signalunsicherheiten und Whipsaw-Risiken. Weitere Optimierungen der Parameter und zusätzliche Techniken können zu einer robusteren Leistung führen.


/*backtest
start: 2024-01-04 00:00:00
end: 2024-02-03 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("DolarBasar by AlperDursun", shorttitle="DOLARBASAR", overlay=true)

// Input for Moving Averages
ma21 = ta.sma(close, 21)
ma50 = ta.sma(close, 50)
ma100 = ta.sma(close, 100)
ma200 = ta.sma(close, 200)

// Calculate the lowest point of the previous candle for stop loss
lowestLow = ta.lowest(low, 2)

// Calculate the highest point of the previous candle for stop loss
highestHigh = ta.highest(high, 2)

// Calculate take profit levels
takeProfitLong = lowestLow - 3 * (lowestLow - highestHigh)
takeProfitShort = highestHigh + 3 * (lowestLow - highestHigh)

// Entry Conditions
longCondition = ta.crossover(close, ma21) or ta.crossover(close, ma50) or ta.crossover(close, ma100) or ta.crossover(close, ma200)
shortCondition = ta.crossunder(close, ma21) or ta.crossunder(close, ma50) or ta.crossunder(close, ma100) or ta.crossunder(close, ma200)

// Stop Loss Levels
stopLossLong = lowestLow * 0.995
stopLossShort = highestHigh * 1.005

// Exit Conditions
longExitCondition = low < stopLossLong or high > takeProfitLong
shortExitCondition = high > stopLossShort or low < takeProfitShort

if (longCondition)
    strategy.entry("Long", strategy.long)

if (shortCondition)
    strategy.entry("Short", strategy.short)

if (longExitCondition)
    strategy.exit("Long Exit", from_entry="Long", stop=stopLossLong, limit=takeProfitLong)

if (shortExitCondition)
    strategy.exit("Short Exit", from_entry="Short", stop=stopLossShort, limit=takeProfitShort)


Mehr