Schwankende Durchschnitts-Kreuz-EMA-SMA-Strategie

Schriftsteller:ChaoZhang, Datum: 2023-09-26 11:27:47
Tags:

Übersicht

Dies ist eine einfache Handelsstrategie, die auf dem Crossover zwischen schnellen und langsamen gleitenden Durchschnitten basiert. Es nutzt das goldene Kreuz und das tote Kreuz von gleitenden Durchschnitten, um Kauf- und Verkaufssignale zu generieren. Wenn der schnelle gleitende Durchschnitt über den langsamen gleitenden Durchschnitt überschreitet, gehen Sie lang; wenn der schnelle gleitende Durchschnitt unter dem langsamen gleitenden Durchschnitt überschreitet, gehen Sie kurz. Das Ziel ist es, Trendumkehrungen zu erfassen, indem Sie die Interaktion zwischen gleitenden Durchschnitten verschiedener Perioden beobachten.

Strategie Logik

Die Strategie beruht hauptsächlich auf dem Crossover zwischen einem schnellen exponentiellen gleitenden Durchschnitt (EMA) und einem langsamen einfachen gleitenden Durchschnitt (SMA), um Handelssignale zu generieren. Zuerst berechnet sie einen schnellen EMA und einen langsamen SMA, mit Perioden, die jeweils auf 13 und 30 festgelegt sind. Dann wird ein langes Signal generiert, wenn die schnelle EMA über die langsame SMA überschreitet; wenn die schnelle EMA unter die langsame SMA überschreitet, wird ein kurzes Signal ausgelöst.

Speziell berechnet die Strategie den schnellen EMA und den langsamen SMA mit Hilfe von maFast und maSlow. Sie definiert dann die EnterLong- und ExitLong-Variablen, um Ein- und Ausstiegspunkte zu bestimmen. Wenn maFast>maSlow, d.h. die schnelle EMA über die langsame SMA geht, setzt sie enterLong=true, um einen langen Eintrag auszulösen; wenn maSlow>maFast, d.h. die schnelle EMA unter die langsame SMA geht, setzt sie exitLong=true, um Positionen zu schließen. Schließlich übermittelt die Strategie Aufträge über strategy.entry, wenn die Bedingungen erfüllt sind.

Wenn also die kurzfristige Aufwärtsdynamik langfristige Trends überwältigt, überschreitet die schnelle EMA die langsame SMA und erzeugt ein Kaufsignal; wenn die kurzfristige Abwärtsdynamik die langfristigen Trends überwältigt, überschreitet die schnelle EMA die langsame SMA und erzeugt ein Verkaufssignal.

Analyse der Vorteile

Die Kreuzung der gleitenden Durchschnittsstrategie hat folgende Vorteile:

  1. Einfach und leicht zu verstehen. Gleitende Durchschnitte sind häufig verwendete und effektive Indikatoren. Die Crossover-Logik ist einfach. Dies macht die Strategie für Händler leicht zu verstehen und umzusetzen.

  2. Die Strategie erlaubt individuelle Perioden für den schnellen EMA und den langsamen SMA, die für verschiedene Märkte abgestimmt werden können, wodurch die Anpassungsfähigkeit verbessert wird.

  3. Zuverlässige Handelssignale. Gleitende Durchschnitte filtern Marktlärm effektiv aus. Ihre Kreuzungen erzeugen ziemlich zuverlässige Signale. Die Überquerung zwischen schnellen und langsamen MAs kann Wende im breiteren Trend erfassen.

  4. Anwendbar in verschiedenen Marktumgebungen. Die Strategie funktioniert für Trending- und Rangebound-Märkte. Die Parameter können an unterschiedliche Bedingungen angepasst werden.

  5. Die Strategie kann flexibel mit Indikatoren wie dem RSI kombiniert werden, um leistungsfähige Systeme zu schaffen.

Risikoanalyse

Die Strategie birgt auch einige Risiken:

  1. Bei unsicheren Trends können sich die MAs häufig überschneiden, was zu übermäßigen Handels- und Schlupfkosten führt.

  2. In den Märkten mit einem Bandbreiteverhältnis können MAs zweideutige Crossover-Signale erzeugen, was zu falschen Signalen führt.

  3. Schwierigkeiten bei der Optimierung von Parametern. Die MA-Perioden beeinflussen die Strategieleistung erheblich und erfordern umfangreiche Tests.

  4. Verzögerungssignale: MAs sind von Natur aus verzögert, so dass Crossover-Signale tendenziell zu spät kommen und ideale Einstiegspunkte verpassen können.

  5. Mangelnde Risikomanagement: Die Strategie fehlt an einer Stop-Loss-Logik und kann zu großen Verlustgeschäften führen.

Möglichkeiten zur Verbesserung

Einige Möglichkeiten zur Optimierung der Kreuzung der gleitenden Durchschnittsstrategie:

  1. Fügen Sie Filter wie RSI hinzu, um falsche Signale zu reduzieren. Vermeiden Sie Longs, wenn der RSI hoch ist, und vermeiden Sie Shorts, wenn der RSI niedrig ist.

  2. Einbeziehen Sie zusätzliche MA, um Signale zu bestätigen, z. B. einen 50-Tage-MA. Gehen Sie lang, wenn ein schneller MA über einen mittleren MA und ein mittlerer MA in einem Aufwärtstrend über einen langen MA geht.

  3. Implementieren Sie Stop-Loss-Techniken wie parabolische SAR, um Risiken zu kontrollieren.

  4. Optimieren Sie die Parameter mit Methoden wie Walk-Forward-Analyse und maschinellem Lernen, um die Leistung auf sich ändernden Märkten zu verbessern.

  5. Verwenden Sie niedrigere Zeitrahmen und Kerzenmuster, um die Signalqualität zu verbessern und vorzeitige Umkehrungen zu vermeiden.

  6. Um falsche Ausbrüche zu vermeiden, müssen Volumenindikatoren eingesetzt werden.

Schlussfolgerung

Die gleitende Durchschnitts-Crossover-Strategie ist eine einfache, aber praktische quantitative Handelsstrategie. Sie verwendet schnelle EMA- und langsame SMA-Kreuzungen, um Handelssignale zu generieren. Die Strategie ist einfach zu implementieren und mit anderen Indikatoren zu kombinieren, hat aber auch Nachteile wie übermäßigen Handel und Whipsaws. Mit angemessenen Verbesserungen der Parameter und des Risikomanagements kann die Strategie robuster und profitabler werden. Insgesamt lohnt sich der gleitende Durchschnitts-Crossover-Ansatz für quantitative Trader zu lernen und anzuwenden.


/*backtest
start: 2023-08-26 00:00:00
end: 2023-09-12 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title="Moving Average Cross EMA SMA", overlay=true, initial_capital=10000, currency='USD',default_qty_type=strategy.percent_of_equity,default_qty_value=100)
// Based on strategy by lsills @ https://www.tradingview.com/script/oI8loEZ8-Moving-Average-Cross-Strategy/
// Strategy has several logic alternatives - comment out the undesired logic sections below, only 1 logic section can be active


// === GENERAL INPUTS ===
// short Ema
maFastSource   = input(defval = close, title = "Fast EMA Source")
maFastLength   = input(defval = 13, title = "Fast EMA Period", minval = 1)
// long Sma
maSlowSource   = input(defval = close, title = "Slow SMA Source")
maSlowLength   = input(defval = 30, title = "Slow SMA Period", minval = 1)
// longer Sma
maSlowerSource   = input(defval = close, title = "Slower SMA Source")
maSlowerLength   = input(defval = 30, title = "Slower SMA Period", minval = 1)



// === SERIES SETUP ===
/// a couple of ma's..
maFast = ema(maFastSource, maFastLength)
maSlow = sma(maSlowSource, maSlowLength)
maSlower = vwma(maSlowerSource, maSlowerLength)
rsi = rsi(maSlowerSource, maSlowerLength)

// === PLOTTING ===
fast = plot(maFast, title = "Fast MA", color = red, linewidth = 2, style = line, transp = 30)
slow = plot(maSlow, title = "Slow MA", color = green, linewidth = 2, style = line, transp = 30)
slower = plot(maSlower, title = "Slower MA", color = teal, linewidth = 2, style = line, transp = 30)


// === LOGIC === Basic - simply switches from long to short and vice-versa with each fast-slow MA cross
enterLong = maFast> maSlow
exitLong = maSlow> maFast


// === LOGIC === Complex 1 - switches from long to short and vice-versa with each fast-slow MA cross but additional conditions must be met
//enterLong = variance(maFast,maSlowLength) < 0.6 and close[0] > maFast and crossover(maFast, maSlow) and 1.1* maSlow > maSlower and rsi>rsi[2]
//exitLong = variance(maFast,maSlowLength) < 0.6 and close[0] < maSlow and crossover(maSlow, maFast) and maSlow/1.1 < maSlower and rsi<rsi[2]

// === LOGIC === Complex 2- switches from long to short and vice-versa with each fast-slow MA cross but additional conditions must be met
//enterLong = maFast> maSlow and 1.1* maSlow > maSlower and rsi>rsi[1] and close > close[3] //and close > close[2]
//exitLong = maSlow> maFast and maSlow/1.1 < maSlower and rsi<rsi[1] and close < close[3] // and close < close[2]


// Entry //
strategy.entry(id="Long Entry", long=true, when=enterLong)
strategy.entry(id="Short Entry", long=false, when=exitLong)

// === FILL ====

fill(fast, slow, color = maFast > maSlow ? green : red)

Mehr