Doppelte gleitende Durchschnitts-Crossover-Strategie

EMA SMA
Erstellungsdatum: 2024-05-17 15:48:04 zuletzt geändert: 2024-05-17 15:48:04
Kopie: 0 Klicks: 661
1
konzentrieren Sie sich auf
1617
Anhänger

Doppelte gleitende Durchschnitts-Crossover-Strategie

Überblick

Die Doppel-Even-Line-Cross-Strategie ist eine klassische Trend-Tracking-Trading-Strategie. Die Strategie verwendet zwei Moving Averages, einen schnellen Moving Average und einen langsamen Moving Average. Wenn ein schneller Moving Average den langsamen Moving Average von oben nach unten durchquert, wird dies als “Golden Cross” bezeichnet, was darauf hindeutet, dass ein Aufwärtstrend entstehen kann, und dann werden mehr Positionen eröffnet.

Strategieprinzip

Der Kern der Strategie besteht darin, die Trend-Eigenschaften und die Kreuzungssignale des Moving Averages zu nutzen, um die Richtung des Trends und den Zeitpunkt der Position zu bestimmen. Zuerst werden die Perioden der schnellen Moving Averages (Standard 50) und der langsamen Moving Averages (Standard 200) durch Parameter festgelegt, und die Wahl, ob SMA oder EMA verwendet wird.

  1. Wenn ein schneller Moving Average den langsamen Moving Average aufwärts überquert (gold cross), dann wird ein positionierter Aktionär, der keine aktuelle Position hält, eine zusätzliche Position eröffnen und gleichzeitig einen Stop-Loss-Preis (basierend auf einem Stop-Loss-Prozentsatz) setzen.
  2. Wenn ein schneller Moving Average den langsamen Moving Average nach unten durchquert (die Todeskreuzung), wird die Position, die derzeit nicht gehalten wird, leer gemacht und gleichzeitig ein Stop-Loss-Preis festgelegt.
  3. Wenn mehrere Positionen vorhanden sind, wird die Position bei einer Todeskreuzung ausgeglichen.
  4. Wenn bereits eine leere Position besteht, wird die Position bei einem Goldkreuz ausgeschaltet. Die mittelfristige Entwicklung des Preises wird durch ein Moving-Average-Cross-Signal erfasst und mit einem Stop-Loss-System aufgenommen.

Strategische Vorteile

  1. Die Logik ist einfach und klar, leicht zu verstehen und zu implementieren, und ist die Grundlage für Trend-Tracking-Strategien.
  2. Durch die Kreuzung zweier unterschiedlicher Perioden von gleitenden Durchschnitten lässt sich die Entstehung und Umkehrung von Trends besser bestimmen.
  3. Unterstützt zwei Arten von Moving Averages, SMA und EMA, mit einer flexiblen Auswahl.
  4. Die Einrichtung von Stop-Loss-Systemen, die das Risiko von Verlusten in gewissem Maße kontrollieren.
  5. Der Trend-Following-Stil eignet sich für mittlere und langfristige Trends.

Strategisches Risiko

  1. Eine falsche Auswahl der Parameter (z. B. eine falsche Auswahl der Moving Average Period) kann zu einer hohen Signalfrequenz oder zu einer Verzögerung bei der Trendbeurteilung führen.
  2. Die schnell wechselnden Verhältnisse können zu häufigen Transaktionen und schlechter Leistung führen.
  3. Der Trend kann sich umkehren oder zu Ende gehen, was zu einem größeren Rückzug führt.
  4. Ein fester Stop-Loss-Prozentsatz kann das Risiko nicht gut kontrollieren.

Richtung der Strategieoptimierung

  1. Optimierung der Parameter, einschließlich der Periodizität der Moving Averages, Stop-Loss-Prozentsätze usw., um die Stabilität und das Risiko-Risiko-Verhältnis zu verbessern.
  2. Die Einführung von ATR und anderen Indizes, die mit der Volatilität verbunden sind, kann in Betracht gezogen werden, um die Stop-Loss-Position dynamisch anzupassen.
  3. Trendbestätigung ist eine Möglichkeit, eine Position zu eröffnen, die nicht sofort bei einer Kreuzung eröffnet wird, sondern sofort nach der Trendbestätigung, oder um andere Trendbestätigungsindikatoren zu unterstützen, um die Genauigkeit der Trendbeobachtung zu verbessern.
  4. Das kann durch die Vermögensverwaltung verbessert werden.
  5. Erwägen Sie die Kombination mit anderen Signalen in einer Multifaktorstrategie.

Zusammenfassen

Die Doppel-Linien-Cross-Strategie ist eine einfache, klassische Trend-Tracking-Strategie, die die Trendrichtung und den Zeitpunkt für die Positionseröffnung anhand der Kreuzung von zwei unterschiedlichen periodischen Moving Averages beurteilt, um einen mittleren und langfristigen Trend zu erfassen. Die festen Parameter können jedoch in einem wechselnden Marktumfeld instabil sein und erfordern weitere Optimierungen, wie Optimierungsparameter, Verbesserung von Stop-Loss-Signalen usw., um eine relativ robuste Handelsstrategie zu werden.

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

//@version=5
//==============================================================================
// A baseline strategy with a well known concept, golden cross & death cross.
// Support for both Simple & Exponential moving averages.
// Support for long & short stop losses as a percentage.:well
//==============================================================================
strategy("Basic Moving Average Crosses", overlay=true)

//------------------------------------------------------------------------------
// configuration
//------------------------------------------------------------------------------
maQuickLength = input(50, title="Quick MA Length") 
maSlowLength  = input(200, title="Quick MA Length") 
useSma        = input(true, title="Use SMA? If false, EMA is used.")

maQuick = useSma ? ta.sma(close, maQuickLength) : ta.ema(close, maQuickLength)
maSlow  = useSma ? ta.sma(close, maSlowLength) : ta.ema(close, maSlowLength)

stop_loss_percentage = input(2.0, title="Stop Loss (%)")

var float longStopLevel = na
var float shortStopLevel = na

bool isGoldenCross = ta.crossover(maQuick, maSlow)
bool isDeathCross  = ta.crossunder(maQuick, maSlow)

//------------------------------------------------------------------------------
// position opening logic
//------------------------------------------------------------------------------

if(strategy.position_size == 0)
    // Golden cross, enter a long position
    if(isGoldenCross)
        strategy.entry("Buy", strategy.long)
        longStopLevel := close - close * stop_loss_percentage/100.0
        strategy.exit("StopLossLong", "Buy", stop=longStopLevel)
    // Death cross, enter short position
    else if(isDeathCross)
        strategy.entry("Sell", strategy.short)
        shortStopLevel := close + close * stop_loss_percentage/100.0
        strategy.exit("StopLossShort", "Sell", stop=shortStopLevel)

//------------------------------------------------------------------------------
// position closing logic
//------------------------------------------------------------------------------
else
    // Close long position on death cross
    if(strategy.position_size > 0 and isDeathCross)
        strategy.close("Buy")
    
    // Close short position on golden cross
    else if(strategy.position_size < 0 and isGoldenCross)
        strategy.close("Sell")

//------------------------------------------------------------------------------
// ploting
//------------------------------------------------------------------------------
plot(maQuick, color=color.yellow)
plot(maSlow, color=color.blue)