Basierend auf der Crossover-Strategie von schnellen und langsamen gleitenden Durchschnitten


Erstellungsdatum: 2023-11-22 16:38:26 zuletzt geändert: 2023-11-22 16:38:26
Kopie: 0 Klicks: 622
1
konzentrieren Sie sich auf
1617
Anhänger

Basierend auf der Crossover-Strategie von schnellen und langsamen gleitenden Durchschnitten

Überblick

Eine Moving Average Crossover Strategie ist eine einfache und effektive quantitative Handelsstrategie, die auf Moving Averages basiert. Sie nutzt die Kreuzung von schnellen und langsamen Moving Averages als Kauf- und Verkaufssignale. Sie erzeugt ein Kaufsignal, wenn die schnelle Linie die langsame Linie von unten durchbricht, und ein Verkaufssignal, wenn die schnelle Linie die langsame Linie von oben durchbricht.

Strategieprinzip

Die Kernlogik dieser Strategie besteht darin, dass der Moving Average verwendet wird, um Markttrends zu beurteilen. Der Moving Average selbst hat die Funktion, zu wackeln und zufälliges Marktgeräusch zu erzeugen. Der schnelle Moving Average reagiert schneller auf Preisänderungen und reflektiert die neuesten Trends, während der langsame Moving Average langsamer auf die neuesten Preisänderungen reagiert und einen mittelfristigen Trend darstellt.

Konkret definiert die Strategie zunächst einen schnellen Moving Average (sig1) und einen langsamen Moving Average (sig2). Sie beurteilt dann den Kauf- und Verkaufspunkt anhand der Kreuzbeziehung von sig1 und sig2. Sie erzeugt ein Kaufsignal (longCondition), wenn sig1 von unten durchsig 2 durchbricht; sie erzeugt ein Verkaufsignal (shortCondition), wenn sig1 von oben nach unten durchsig 2 durchbricht. Die Strategie ordnet dann, wenn die Kauf- und Verkaufskonditionen erfüllt sind, und setzt Stop-Loss- und Stop-Out-Orders.

Analyse der Stärken

Die Vorteile dieser Strategie sind bemerkenswert:

  1. Die Logik ist einfach, leicht zu verstehen und umzusetzen.
  2. Die Parameter sind flexibel und an unterschiedliche Marktbedingungen angepasst
  3. Filtersignale können mit anderen Indikatoren kombiniert werden, um die Stabilität zu verbessern
  4. Gute Leistung, zum Beispiel die EMA15-EMA30-Palette mit einer Gewinnrate von 83% auf den EURCHF-Daten

Risikoanalyse

Die Strategie birgt einige Risiken:

  1. Die Whipsaw-Effekte sind schwerwiegend und die Stop-Loss-Einstellungen sind wichtig.
  2. Die Aktienwettbewerbsschwankungen wirken sich nicht gut aus.
  3. Verschiedene Sorten und Zyklen erfordern wiederholte Tests und Anpassungen

Optimierungsmaßnahmen:

  1. Das ist eine sehr wichtige Frage, die wir uns stellen müssen.
  2. Anpassung der Moving Average-Typen und -Parameter an verschiedene Sorten
  3. Optimierung der Stop-Loss-Stopp-Ratio und Risikokontrolle

Zusammenfassen

Die Moving Average-Cross-Strategie ist insgesamt eine logisch einfache und praktische Quantifizierungsstrategie. Durch Parameter-Anpassung und entsprechende Optimierung ist es möglich, die Gewinne in verschiedenen Marktumgebungen zu stabilisieren.

Strategiequellcode
/*backtest
start: 2023-11-14 00:00:00
end: 2023-11-16 04:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
// Simple yet effective MA cross strategy.
// You'll have to tune the parameters to get an optimal win ratio.
// If JPY or XAU or any other currency with pips defined as the 
// second decimal digit are involved, do not forget to set the respective flag on.
//
// Created by vitelot/yanez/Vts, who's the same fellow with different user names
// December 2018 -- Merry Xmas
//
strategy("MA cross strategy Vts", overlay=true, initial_capital=1000, currency="EUR", pyramiding=0)

yr  = input(2016, title="Starting year to analyse")
src = input(close, title="Source")
maType = input( defval="EMA", title="MA Type", options=["SMA","EMA","HMA","McG","WMA"])
//
isJPY = input(false, title="Is JPY or XAU involved?") // JPY and Gold have the pips defined as the 2 decimal digit

maPar1 = input(26, minval=1, title="MA fast period")
maPar2 = input(51, minval=2, title="MA slow period")

atrPar = input(14,minval=1, title="ATR period")
atrMulSL = input(1.5, title="SL ATR multiplicator")
atrMulTP = input(1.0, title="TP ATR multiplicator")

hma(sig, n) => // Hull moving average definition
    wma( 2*wma(sig,round(n/2))-wma(sig,n), round(sqrt(n)))

mcg(sig,length) => // Mc Ginley MA definition
    mg = 0.0
    mg := na(mg[1]) ? ema(sig, length) : mg[1] + (sig - mg[1]) / (length * pow(sig/mg[1], 4))

ma(t,sig,len) =>
    if t =="SMA"
        sma(sig,len)
    else
        if t == "EMA"
            ema(sig,len)
        else
            if t == "HMA"
                hma(sig,len)
            else
                if t == "McG" // Mc Ginley
                    mcg(sig,len)
                else
                    wma(sig,len)
                    
        
sig1 = ma(maType, src, maPar1)
sig2 = ma(maType, src, maPar2)

tickFactor = isJPY? 1e3: 1e5
sl = atrMulSL*atr(atrPar)*tickFactor
tp = atrMulTP*atr(atrPar)*tickFactor

plot(sig1, color=aqua, title="MA1", linewidth=2)
plot(sig2, color=orange, title="MA2", linewidth=2)

longCondition = crossunder(sig2, sig1) and year>=yr // change the >= to == if you like exact years not a range
if (longCondition)
    strategy.entry("Long", strategy.long, qty=1) // exit trade when SL and TP are hit
    strategy.exit("Exit Long", "Long", loss=sl, profit=tp)
if (crossunder(sig1, sig2)) // or when the short condition is met
    strategy.close("Long")

shortCondition = crossover(sig2,sig1) and year>=yr // change the >= to == if you like exact years not a range
if (shortCondition)
    strategy.entry("Short", strategy.short, qty=1)
    strategy.exit("Exit Short", "Short", loss=sl, profit=tp)
if (crossover(sig1,sig2))
    strategy.close("Short")