EMA-Kreuzverfolgungsstrategie

Schriftsteller:ChaoZhang, Datum: 2023-10-25 17:44:35
Tags:

img

Übersicht

Die EMA-Crossover-Strategie erzeugt Kauf- und Verkaufssignale, indem sie den Crossover zwischen zwei EMA-Linien unterschiedlicher Perioden verfolgt. Wenn die kürzere Periode EMA über die längere Periode EMA überschreitet, wird ein Kaufsignal generiert. Wenn die kürzere Periode EMA unter die längere Periode EMA überschreitet, wird ein Verkaufssignal generiert. Diese Strategie beinhaltet auch den SuperTrend-Indikator, um falsche Ausbrüche zu filtern.

Strategie Logik

Diese Strategie basiert hauptsächlich auf dem goldenen Kreuz und dem Todeskreuz der EMA-Linien. EMA-Linien können die Preisdaten glätten und Rauschen ausfiltern. Der Crossover zwischen EMA-Linien zeigt Preistrendänderungen an. Wenn die kürzere Periode EMA (20-Periode) über die längere Periode EMA (50-Periode) kreuzt, bedeutet dies, dass der kurzfristige Preis jetzt über dem langfristigen Preis liegt, was einen Aufbruchstrend impliziert und ein Kaufsignal erzeugt. Wenn die kürzere Periode EMA unter die längere Periode EMA überschreitet, bedeutet dies, dass der kurzfristige Preis unter den langfristigen Preis bricht, was einen Abwärtstrend impliziert und ein Verkaufssignal erzeugt.

Darüber hinaus verwendet diese Strategie den SuperTrend-Indikator, um falsche Signale zu filtern, die durch EMA-Crossovers erzeugt werden. Der SuperTrend-Indikator wird auf der Grundlage des ATR berechnet, um obere und untere Bande zu erstellen, die den realen Trend besser definieren. Wenn der Preis über das obere Band des SuperTrends bricht, wird ein Kaufsignal erzeugt. Wenn der Preis unter das untere Band des SuperTrends bricht, wird ein Verkaufssignal erzeugt. Die EMA-Crossover-Signale sind nur gültig, wenn sie durch die SuperTrend-Signale bestätigt werden. Dies hilft, falsche Signale zu entfernen, die durch Preisschwankungen verursacht werden.

Insbesondere ist die Strategie-Eintrittslogik wie folgt definiert:

  1. Wenn 20EMA über 50EMA überschreitet und der Preis über dem oberen SuperTrend-Band bricht, wird ein Kaufsignal generiert.

  2. Wenn 20EMA unter 50EMA fällt und der Preis unter dem unteren Band des SuperTrends bricht, wird ein Verkaufssignal generiert.

Die Verwendung von EMA-Crossovers zur Bestimmung der wichtigsten Trendrichtung in Kombination mit dem SuperTrend-Filter könnte die Genauigkeit der Handelssignale verbessern.

Vorteile

Die Crossover-Strategie der EMA hat folgende Vorteile:

  1. Einfach zu implementieren, nur zwei EMA-Kreuzungen zu berechnen.

  2. Die EMA als gleitender Durchschnitt kann Lärm filtern.

  3. Die Kombination mit SuperTrend verringert die durch Kursschwankungen verursachten falschen Signale weiter.

  4. Die EMA-Perioden können für verschiedene Marktbedingungen angepasst werden.

  5. Anpassungsfähig für lang- oder kurzgezielte Trades. Anwendbar für verschiedene Handelsansätze.

  6. Kann in verschiedenen Zeitrahmen für verschiedene Handelsstile umgesetzt werden.

Risiken

Die EMA-Crossover-Strategie birgt auch einige Risiken:

  1. Die EMA-Crossover-Signale können bei extremen Kursschwankungen verzögert sein und die Preisänderungen nicht rechtzeitig widerspiegeln.

  2. EMA-Linien haben einen Verzögerungseffekt, der zu falschen Signalen führen könnte.

  3. Eine unsachgemäße Einstellung der EMA-Perioden könnte zu übermäßigen falschen Signalen führen.

  4. Crossover allein kann den tatsächlichen Trend nicht bestimmen, da er noch weitgehend zurückbleibt.

  5. Ein angemessenes Risikomanagement wie Stop-Loss ist notwendig, um Risiken zu kontrollieren.

Einige Möglichkeiten, die Risiken zu verringern:

  1. Optimieren Sie EMA-Perioden, um schnell und langsam zu passen.

  2. Verkürzung der Haltedauer und rechtzeitige Stop-Loss-Anwendung.

  3. Kombinieren Sie mit anderen Indikatoren wie gleitenden Durchschnitten, Kerzenmustern für ein umfassendes Urteil.

  4. Anpassung der Handelsfrequenz auf eine geringere Anzahl von Geschäften.

Verbesserungen

Diese Strategie kann in den folgenden Bereichen verbessert und optimiert werden:

  1. Optimierung von EMA-Perioden für verschiedene Zyklen und Marktumgebungen.

  2. Verschiedene gleitende Durchschnittsindikatoren wie SMA, KWMA testen.

  3. Mehr technische Indikatoren zu integrieren, um mehrfache Modelle zu bilden, wie MACD, RSI. Maschinelle Lernalgorithmen anwenden, um Parameter und Gewichte zu optimieren.

  4. Fügen Sie Stop-Loss-Techniken wie Trailing-Stop-Loss, Prozentsatz Stop-Loss hinzu, um Risiken zu kontrollieren.

  5. Einführung von Lautstärkungsfiltern, die mit Lautstärkenindikatoren arbeiten, um falsche Signale zu vermeiden.

  6. Optimieren Sie die Ausgänge, indem Sie Ausgangsregeln festlegen, die mit Diagrammmustern, Ausbrüchen usw. kombiniert werden.

  7. Bestätigen Sie den Trend in einem höheren Zeitrahmen, führen Sie Trades in einem niedrigeren Zeitrahmen ein, um Trends zu verfolgen.

Schlussfolgerung

Die EMA-Crossover-Strategie ist ein einfaches und praktisches Trendfolgensystem. Sie kann mittelfristige Trends identifizieren und Timing-Signale erzeugen. Die Kombination mit dem SuperTrend-Filter könnte falsche Trades effektiv reduzieren. Allerdings bestehen immer noch Risiken wie Verzögerungen und falsche Signale. Die Strategie kann durch Parameteroptimierung, Stop-Loss, Kombination von Indikatoren usw. verbessert werden.


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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © alokbothra

//@version=5
strategy("Ema Crossover", overlay=true, initial_capital = 1000)
start = timestamp(2021,1,1,0,0)
end = timestamp(2023,10,30,0,0)
plot (ta.ema(close,20), title = "Ema 20", color = color.green , linewidth = 2)
plot (ta.ema(close,50), title = "Ema 50", color = color.red, linewidth = 2 )

//supertrend 1
Periods = input(title='ATR Period', defval=11)
Multiplier = input.float(title='ATR Multiplier', step=0.1, defval=3)
changeATR = input(title='Change ATR Calculation Method ?', defval=true)
showsignals = input(title='Show Buy/Sell Signals ?', defval=true)
highlighting = input(title='Highlighter On/Off ?', defval=true)
atr2 = ta.sma(ta.tr, Periods)
atr = changeATR ? ta.atr(Periods) : atr2
up = close - Multiplier * atr
up1 = nz(up[1], up)
up := close[1] > up1 ? math.max(up, up1) : up
dn =close+ Multiplier * atr
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? math.min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
upPlot = plot(trend == 1 ? up : na, title='Up Trend', style=plot.style_linebr, linewidth=2, color=color.new(color.green, 0))
buySignal = trend == 1 and trend[1] == -1
plotshape(buySignal ? up : na, title='UpTrend Begins', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.green, 0))
dnPlot = plot(trend == 1 ? na : dn, title='Down Trend', style=plot.style_linebr, linewidth=2, color=color.new(color.red, 0))
sellSignal = trend == -1 and trend[1] == 1
plotshape(sellSignal ? dn : na, title='DownTrend Begins', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.red, 0))
mPlot = plot(ohlc4, title='', style=plot.style_circles, linewidth=0)
changeCond = trend != trend[1]

longonly = input.bool(defval = true, title = 'Long Only')
shortonly = input.bool(defval = true, title = 'Short Only')

longCondition = (ta.ema(close, 20) >= ta.ema(close, 50)) 
shortCondition = (ta.ema(close, 20) <= ta.ema(close, 50))
long = (trend == 1)
short = (trend == -1)
sell= short
cover= long
if time >= start and time < end
    if longonly
        if ((longCondition) and (long))
            strategy.entry ("Long Entry", strategy.long, comment ="Long Entry")
        if strategy.position_size > 0
            strategy.close("Long Entry", when = sell, comment = "Long Exit")
    if shortonly
        if ((shortCondition) and (short))
            strategy.entry("Short Entry", strategy.short, comment = "Short Entry")
        if strategy.position_size < 0
            strategy.close("Short Entry", when = cover, comment = "Short Exit")


Mehr