EMA-Trend nach Strategie

Schriftsteller:ChaoZhang, Datum: 2023-10-16
Tags:

img

Übersicht

Die EMA-Trendfolging-Strategie ist eine Trendverfolgungsstrategie, die auf dem EMA-Indikator basiert. Sie beurteilt die Trendrichtung, indem sie die EMA-Linie eines bestimmten Zeitraums berechnet und dem Trend folgt. Sie geht kurz, wenn der Preis über die EMA-Linie überschreitet, und lang, wenn der Preis unter die EMA-Linie überschreitet. Dies ist eine typische Trendfolging-Strategie.

Strategie Logik

Der Kern dieser Strategie besteht darin, den Trend mithilfe des EMA-Indikators zu bestimmen. EMA ist ein exponentieller gleitender Durchschnitt, der den jüngsten Preisen mehr Gewicht verleiht und schneller auf Preisänderungen reagiert. Durch die Berechnung des durchschnittlichen Preises über einen EMA-Zeitraum erzeugt er eine glättete Kurve. Wenn der Preis von unten über die EMA-Linie geht, signalisiert er einen Aufwärtstrend; wenn der Preis von oben unter die EMA-Linie geht, signalisiert er einen Abwärtstrend.

Auf der Grundlage dieser Logik wird die Strategie kurz, wenn der Preis über die EMA bricht, und lang, wenn der Preis unter die EMA bricht, und folgt dem Trend, indem sie der EMA-Linie folgt. Insbesondere berechnet sie einen 8-Perioden-EMA am Schlusskurs - Shorting, wenn der Schlusskurs über die EMA bricht, und Longing, wenn der Schlusskurs unter die EMA bricht. Es setzt auch einen Stop-Loss zur Kontrolle der Risiken.

Vorteile

  • Wirksames Trendverfolgen: Die EMA gleicht Preisschwankungen aus, filtert Marktlärm aus und verfolgt mittelfristige und langfristige Trends.

  • Im Vergleich zu Kurzzeitindikatoren hat die EMA eine mittlere Anpassungsfrequenz, wodurch ein Überhandel vermieden wird.

  • Die Strategie stützt sich ausschließlich auf einen EMA-Indikator und erreicht dennoch das Ziel, dem Trend zu folgen.

  • Erweiterbarkeit: Die Strategie kann durch Optimierung der EMA-Parameter oder durch Hinzufügen anderer Indikatoren verbessert werden.

Risiken und Lösungen

  • Fehlende Tuningpunkte. Wenn sich die Preise schnell umkehren, benötigt die EMA Zeit, um sich anzupassen und kann die besten Einstiegspunkte verpassen.

  • Erhöhte Verluste. EMA folgt Trends und kann die Tuningpunkte nicht genau bestimmen. Umkehrungen können zu großen Verlusten führen. Die Lösung besteht darin, einen angemessenen Stop-Loss festzulegen.

  • Eine Lösung besteht darin, verschiedene EMA-Perioden zu testen, um das Optimale zu finden.

Vorschläge für Verbesserungen

  • Optimieren Sie die EMA-Parameter, um das beste Gleichgewicht zu finden.

  • Hinzufügen von anderen Indikatoren, um Ausrichtungspunkte zu bestimmen. Kombinieren Sie mit Indikatoren wie RSI, um Umkehrungen besser zu erkennen.

  • Optimieren Sie die Stop-Loss-Strategie, um die beste Stop-Loss-Ebene durch Backtesting zu finden.

  • Optimierung der Symbolwahl und Anpassung der EMA-Perioden anhand der Symbolmerkmale, um optimale Ergebnisse zu erzielen.

Zusammenfassung

Die EMA-Trend-Folge-Strategie ist eine sehr typische Trend-Tracking-Strategie, die auf einem Indikator basiert. Sie ist einfach und einfach zu implementieren, geeignet für Anfänger.


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

//@version=3
strategy(title = "EMA Close Strategy", shorttitle = "EMA Close",calc_on_order_fills=true,calc_on_every_tick =true, initial_capital=21000,commission_value=.25,overlay = true,default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

EmaSource   = input(defval = close, title = "EMA Source")
EmaLength   = input(defval = 8, title = "EMA Period", minval = 1)

StartYear = input(2018, "Backtest Start Year")
StartMonth = input(1, "Backtest Start Month")
StartDay = input(1, "Backtest Start Day")
stopLoss = input(30, title = "Stop loss percentage(0.1%)") 
UseStopLoss = input(true,"UseStopLoss")

window() => time >=  timestamp(StartYear, StartMonth, StartDay,00,00) ? true : false



EMA = ema(EmaSource,EmaLength)

plot(EMA, title = "EMA", color = green, linewidth = 2, style = line, transp = 50)

long = crossunder(EMA, close)
short= crossover(EMA, close)

if (long)
    strategy.entry("LongId", strategy.long, when=window())
    
if (short)
    strategy.entry("ShortId", strategy.short, when=window())

if (UseStopLoss)
    strategy.exit("StopLoss", "LongId", loss = close * stopLoss / 1000 / syminfo.mintick)
    strategy.exit("StopLoss", "ShortId", loss = close * stopLoss / 1000 / syminfo.mintick)

Mehr