Strategie für die Verlagerung des gleitenden Durchschnitts

Schriftsteller:ChaoZhang, Datum: 2023-11-03 17:23:54
Tags:

img

Übersicht

Die gleitende Durchschnitts-Crossover-Strategie ist eine sehr klassische und häufig verwendete technische Analyse-Strategie. Die Kernidee dieser Strategie besteht darin, den Crossover zwischen gleitenden Durchschnitten verschiedener Zeiträume als Handelssignale zu verwenden. Wenn der kurzfristige gleitende Durchschnitt über den langfristigen gleitenden Durchschnitt von unten kreuzt, wird ein Kaufsignal generiert. Wenn der kurzfristige gleitende Durchschnitt unter den langfristigen gleitenden Durchschnitt von oben kreuzt, wird ein Verkaufssignal generiert.

Strategie Logik

Diese Strategie verwendet Eingaben, um den Typ (SMA, EMA, WMA, RMA) und die Periode des gleitenden Durchschnitts sowie den Zeitrahmen für das Backtesting festzulegen.

In der Variantenfunktion werden verschiedene Arten von gleitenden Durchschnitten berechnet. Der berechnete gleitende Durchschnitt wird in der Variable ma gespeichert.

Wenn der Schlusskurs über ma liegt, wird ein Kaufsignal generiert.

Um einen Stop-Loss festzulegen, wird der 14-Perioden-Durchschnitt der wahren Bandbreite atr berechnet.

Die spezifische Ein- und Ausstiegslogik ist wie folgt:

Langer Einstieg: Nähere Kreuzungen über ma und innerhalb des Backtest-Zeitrahmens, Stop-Loss-Punkt ist Eintrittspunkt nahe
Long Exit: Schließen unter ma minus 2 mal atr für Stop Loss Exit oder höchster Preis übersteigt den Eintrittspunkt Schließen plus 2 mal atr für Take Profit Exit

Kurzer Einstieg: Schließung unter ma und innerhalb des Backtest-Zeitrahmens, Stop-Loss-Punkt ist Eintrittspunkt nahe
Kurzer Ausstieg: Schließung von Kreuzungen über ma plus 2 mal atr für den Stop-Loss-Ausgang oder niedrigster Preis unter dem Eintrittspunkt schließen minus 2 mal atr für den Take-Profit-Ausgang

Vorteile der Strategie

  1. Die Strategieidee ist einfach und klar, leicht zu verstehen und umzusetzen
  2. Weit verbreitet, geeignet für verschiedene Märkte und Produkte
  3. Flexible Parameter-Einstellungen, verstellbarer gleitender Durchschnittstyp und Periode
  4. Verwenden Sie ATR-Stop-Loss, um Risiken zu kontrollieren

Risiken der Strategie

  1. Bewegliche Durchschnittsstrategien neigen dazu, häufigen Handel und Stop-Loss zu erzeugen, wodurch das Gewinnpotenzial verringert wird
  2. In sehr volatilen Märkten können gleitende Durchschnitte irreführende Signale erzeugen
  3. ATR-Stop-Loss-Bereich könnte zu breit oder zu eng sein, um große Verluste zu verhindern

Um den Risiken entgegenzuwirken, können Optimierungen in den folgenden Bereichen vorgenommen werden:

  1. Anpassung der gleitenden Durchschnittsperiode, Verwendung längerer gleitender Durchschnittszeiten
  2. Hinzufügen von Filterbedingungen, um häufigen Handel auf volatilen Märkten zu vermeiden
  3. Optimierung der ATR-Parameter oder Verwendung anderer Stop-Loss-Methoden
  4. Kombination von Trendindikatoren zur Ermittlung des Gesamttrends, Vermeidung des Gegentrendhandels

Optimierungsrichtlinien

Diese Strategie kann in folgenden Aspekten optimiert werden:

  1. Fügen Sie Filterbedingungen wie Volumen, Volatilität hinzu, um irrationale Ausbrüche zu vermeiden
  2. Verwenden Sie adaptiven ATR-Stop-Loss, so dass sich der Stop-Loss-Bereich mit der Marktvolatilität ändert
  3. Kombination von Stoch, RSI und anderen Indikatoren für die Mehrfactorbestätigung zur Verbesserung der Signalqualität
  4. Hinzufügen der Trendbestimmung, um einen gegentrendischen Handel zu vermeiden
  5. Verwenden Sie Zeit Ausgang zu vermeiden, dass Verlierer zu lange halten
  6. Optimieren Sie die Parameter des gleitenden Durchschnittszeitraums, um die besten Parameterkombinationen zu finden

Zusammenfassung

Die gleitende Durchschnitts-Crossover-Strategie ist eine sehr typische und häufig verwendete technische Analyse-Strategie. Die Kernidee der Strategie ist einfach und einfach zu implementieren, geeignet für verschiedene Märkte und ist eine der Einstiegs-Quant-Handelsstrategien. Die Strategie hat jedoch auch einige Probleme wie die Erzeugung häufiger Signale und die Anfälligkeit für Stop-Loss. Mit angemessenen Optimierungen kann die Leistung erheblich verbessert werden. Insgesamt bietet die gleitende Durchschnitts-Crossover-Strategie einen sehr guten Rahmen für die Strategieentwicklung und ist der Eckpfeiler des quantitativen Handelsstrategienlernens.


/*backtest
start: 2023-10-03 00:00:00
end: 2023-11-02 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("MA Cross Strategy", overlay=true,commission_value = 0.1)

type = input(defval = "WMA", title = "MA Type: ", options=["RMA", "SMA", "EMA", "WMA"])

length = input(28)
source = close



// === INPUT BACKTEST RANGE ===
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromYear  = input(defval = 2000, title = "From Year", minval = 2000)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(9999, 1, 1, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create function "within window of time"



variant(type, src, len) =>
    v1 = sma(src, len)                                                  // Simple
    v2 = ema(src, len)                                                  // Exponential
    v5 = wma(src, len)                                                  // Weighted
    v7 = rma(src, len)                                                  // Smoothed
    type=="EMA"?v2 : type=="WMA"?v5 : type=="RMA"?v7 : v1
ma = variant(type,source, length)


atr = security(syminfo.tickerid, "D", atr(14))

range = valuewhen(cross(close,ma), (atr*2), na)

ep = valuewhen(cross(close,ma), close, na)

plot(ma,color=ma>ma[1]?color.blue:color.red,transp=0,linewidth=1)
plot(ep,color=#2196f3,transp=100,trackprice=true, offset=-9999)
plot(ep+range,color=#2196f3,transp=100,trackprice=true, offset=-9999)
plot(ep-range,color=#2196f3,transp=100,trackprice=true, offset=-9999)

strategy.entry("Long Entry", true, when = crossover(close,ma)  and window() , stop  = ep ) 
strategy.exit("Long Exit", "Long Entry", stop  = ep-range) 
strategy.exit("Long Exit", "Long Entry", when = high > ep+range ,stop = ep[1] ) 

strategy.entry("Short Entry", false, when = crossunder(close,ma)  and window() , stop  = ep ) 
strategy.exit("Short Exit", "Short Entry", stop  = ep+range) 
strategy.exit("Short Exit", "Short Entry", when = low < ep-range ,stop = ep[1] ) 


Mehr