Gängige Crossover-Strategien für gleitende Durchschnitte


Erstellungsdatum: 2023-11-03 17:23:54 zuletzt geändert: 2023-11-03 17:23:54
Kopie: 0 Klicks: 707
1
konzentrieren Sie sich auf
1617
Anhänger

Gängige Crossover-Strategien für gleitende Durchschnitte

Überblick

Die Moving-Average-Cross-Strategie ist eine sehr klassische und häufig verwendete Technische Analyse-Strategie. Die Kernidee dieser Strategie ist es, die Kreuzung zwischen Moving-Averages aus verschiedenen Perioden als Kauf- und Verkaufssignal zu nutzen. Es erzeugt ein Kaufsignal, wenn ein kurzfristiger Moving-Average den längerfristigen Moving-Average von unten durchbricht; es erzeugt ein Verkaufsignal, wenn ein kurzfristiger Moving-Average den längerfristigen Moving-Average von oben durchbricht.

Strategieprinzip

Die Strategie setzt die Art der eingegebenen Moving Averages (SMA, EMA, WMA, RMA) und die Länge der Perioden sowie die Zeitspanne für die Rückmessung ein.

Die Berechnung von verschiedenen Arten von Moving Averages in Variantfunktionen. Der berechnete Moving Average wird durch die Variable ma gespeichert.

Wenn der Schlusskurs Ma überschreitet, erzeugt er ein Kaufsignal; wenn der Schlusskurs Ma unterschreitet, erzeugt er ein Verkaufssignal.

Um einen Stop-Loss zu setzen, berechnet man die durchschnittliche reale Schwankungsbreite über 14 Zyklen mit Hilfe vonatr. Mit dem Durchschnittspunkt als Referenz und dem Auf- oder Abzug von 2 malatr als Stop-Bereich.

Die Ein- und Ausstiegslogik lautet wie folgt:

Eintritt mit mehreren Köpfen: close auf ma und in der Rückmesszeit als Eintrittstopp close Mehrköpfige Ausstieg: Close unter Durchschnittsma minus 2-fache ATR bei Ausstiegsverlust oder maximaler Preis über dem Einstiegspunkt close plus 2-fache ATR bei Ausstiegsverlust Eintritt: close unter Ma und in der Rückmesszeit als Eintritt close Leer ausgehen: Schließen auf Ma plus 2xatr, wenn der Ausgang verloren geht, oder der Mindestpreis niedriger als der Einstiegspunkt ist. Schließen minus 2xatr, wenn der Ausgang gestoppt wird

Strategische Vorteile

  1. Die Strategie ist einfach, klar und leicht zu verstehen und umzusetzen.
  2. Weit verbreitet, für verschiedene Märkte und Sorten geeignet
  3. Die Parameter sind flexibel eingestellt, die Moving Average-Typen und -Perioden sind anpassbar
  4. ATR-Stopp hilft bei der Risikokontrolle

Strategisches Risiko

  1. Moving-Average-Strategien sind anfällig für häufige Trades und Stop-Losses, wodurch die Gewinnspanne reduziert wird.
  2. Bei starken Erschütterungen ist es wahrscheinlicher, dass der Moving Average ein falsches Signal erzeugt.
  3. ATR-Stop-Range kann zu groß oder zu klein sein, um die Wirkung zu erzielen, die große Verluste verhindert

Die Optimierung von Risiken kann in folgenden Bereichen erfolgen:

  1. Anpassung der Moving-Average-Periode zu einem längerperiodischen Durchschnitt
  2. Erhöhung der Filterbedingungen zur Vermeidung von häufigen Transaktionen während der Erschütterung
  3. Optimierung der ATR-Parameter oder andere Stop-Loss-Methoden
  4. Trends mit Trendindikatoren zu erkennen, um Rückschläge zu vermeiden

Richtung der Strategieoptimierung

Diese Strategie kann in folgenden Bereichen optimiert werden:

  1. Erhöhung der Filterbedingungen wie Volumen, Volatilität usw., um unvernünftige Durchbrüche zu vermeiden
  2. Anpassung des Stop-Losses an den ATR, so dass der Stop-Loss-Bereich sich mit den Marktschwankungen verändert
  3. Mehrfache Verifizierung in Kombination mit Stoch, RSI und anderen Indikatoren zur Verbesserung der Signalqualität
  4. Trendschätzung erhöht und Rückwärtsoperationen vermieden
  5. Zeit-EXIT, um langfristige Verluste zu vermeiden
  6. Optimierung der Moving Average Period Parameter, um die beste Kombination von Parametern zu finden

Zusammenfassen

Die Moving-Average-Cross-Strategie ist eine sehr typische und häufig verwendete technische Analyse-Strategie. Die Kernidee der Strategie ist einfach, leicht umzusetzen, für verschiedene Märkte geeignet und ist eine der Einstiegsstrategien für den Quantifizierungshandel. Die Strategie hat jedoch auch einige Probleme, z. B. häufige Signale, leichte Stop-Losses usw. Die reale Performance der Strategie kann durch angemessene Optimierung erheblich verbessert werden.

Strategiequellcode
/*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] )