Doppelte EMA-Crossover-Strategie

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

img

Übersicht

Dies ist eine doppelte EMA-Crossover-Handelsstrategie, die auf schnellen EMA- und langsamen EMA-Indikatoren basiert. Die Strategie erzeugt lange Signale, wenn die schnelle EMA über die langsame EMA überschreitet, und schließt lange Positionen, wenn die schnelle EMA unter die langsame EMA überschreitet.

Strategie Logik

Die Strategie wird hauptsächlich mit den doppelten EMA-Indikatoren umgesetzt.Die schnelle EMA hat eine kürzere Periode, um Preisänderungen empfindlich zu reflektieren, während die langsame EMA eine längere Periode hat, um langfristige Trends anzuzeigen.

Wenn die schnelle EMA über die langsame EMA überschreitet, bildet sich ein goldenes Kreuz, das auf kurzfristige Aufwärtsbewegung für den Long geht.

Die Strategie umfasst insbesondere:

  1. Eingabeparameter für schnelle und langsame EMA, einschließlich Periode, Quelle usw.

  2. Berechnen Sie schnelle und langsame EMA.

  3. Definition des goldenen Kreuzes, wenn die schnelle EMA über die langsame EMA geht.

  4. Definition des Todeskreuzes, wenn die schnelle EMA unter die langsame EMA geht.

  5. Geh lang auf goldenen Kreuzen.

  6. Schließen Sie Positionen auf Todeskreuz.

  7. Optionen für Shorting und Stop-Loss/Profit-Taking.

  8. Ausgabe von Kauf- und Verkaufsmitteilungen.

Mit diesem einfachen Dual-EMA-Crossover-System kann die Strategie kurzfristige Trends für Gewinne erfassen.

Analyse der Vorteile

Die Strategie weist folgende Vorteile auf:

  1. Die Logik ist einfach und klar, leicht zu verstehen.

  2. Nur doppelte EMA, einfach umzusetzen.

  3. Kann kurzfristige Trends für Swing-Gewinne erfassen.

  4. Anpassbare EMA-Perioden für verschiedene Märkte.

  5. Die Risikopositionen sind die Risikopositionen, für die die Risikopositionen gemäß Artikel 36 Absatz 1 Buchstabe b der CRR gelten.

  6. Option für Stop-Loss/Gewinnentnahme.

  7. Mitteilungen über den Kauf/Verkauf zur Überwachung.

  8. Es ist einfach, die EMA-Parameter für bessere Gewinne zu optimieren.

Risikoanalyse

Es gibt auch einige Risiken:

  1. Bei einer doppelten EMA können falsche Signale erzeugt werden, die unnötige Verluste verursachen.

  2. Eine unsachgemäße Einstellung des Stop-Loss kann die Verluste vergrößern.

  3. Eine hohe Handelsfrequenz erhöht die Kosten und das Risiko eines Ausrutschens.

  4. Feste EMA-Parameter können sich nicht an Marktveränderungen anpassen.

  5. Neigt dazu, Schwung zu jagen, verliert ruhiges Urteilsvermögen.

  6. Kann keine Trendumkehr erkennen, kann umgekehrte Positionen eröffnen.

Entsprechende Risikomanagementmaßnahmen:

  1. Optimieren Sie die EMA-Parameter, um falsche Signale zu reduzieren.

  2. Setzen Sie einen angemessenen Stop Loss auf Limit pro Trade Loss.

  3. Optimieren Sie EMA-Perioden, um die Häufigkeit zu reduzieren.

  4. Dynamische Anpassung der EMA an verschiedene Marktstadien.

  5. Fügen Sie Trendindikatoren hinzu, um zu vermeiden, die Dynamik zu verfolgen.

  6. Identifizieren Sie mit Trendwerkzeugen die wichtigste Trendrichtung.

Optimierungsrichtlinien

Die Strategie kann in folgenden Aspekten optimiert werden:

  1. Dynamische Optimierung der EMA-Parameter für verschiedene Märkte.

  2. Um die Genauigkeit zu verbessern, werden Filter hinzugefügt.

  3. Einbeziehung eines Volatilitätsindex zur Verringerung der Position in Umgebungen mit geringer Volatilität.

  4. Fügen Sie Lautstärkerkennung für Signale hinzu.

  5. Setzen Sie Preisniveaus, wie 20SMA Breakout, bevor Sie Signale nehmen.

  6. Verbessern Sie Ihre Stop-Loss- und Take-Profit-Strategien.

  7. Hinzufügen einer Analyse des wichtigsten Trends, um einen gegen den Trend gerichteten Handel zu vermeiden.

  8. Kontinuierlich die Strategie mit Machine-Learning-Algorithmen optimieren.

Zusammenfassung

Zusammenfassend lässt sich sagen, dass die doppelte EMA-Crossover-Strategie eine einfache und klare Logik für die Erfassung von kurzfristigen Trends aufweist, aber auch einige Gewinnrisiken birgt. Wir können Risiken durch Optimierung von Parametern, Implementierung von Stop-Loss/Profit-Taking, Filterung von Aktien, Beurteilung wichtiger Trends usw. verwalten, um stetig zufriedenstellende Renditen zu erzielen. Die Strategie kann durch kontinuierliche Forschung und Verbesserungen schrittweise verbessert werden.


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

//@version=4

strategy("EMA Strategy", shorttitle="EMA Strategy", overlay=true, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100)


// === Inputs ===
// short ma
maFastSource = input(defval=close, title="Fast MA Source")
maFastLength = input(defval=3, title="Fast MA Period", minval=1)

// long ma
maSlowSource = input(defval=close, title="Slow MA Source")
maSlowLength = input(defval=9, title="Slow MA Period", minval=1)

// invert trade direction
shorting = input(defval=false, title="Allow Shorting?")
// risk management
useStop = input(defval=false, title="Use Initial Stop Loss?")
slPoints = input(defval=25, title="Initial Stop Loss Points", minval=1)
useTS = input(defval=false, title="Use Trailing Stop?")
tslPoints = input(defval=120, title="Trail Points", minval=1)
useTSO = input(defval=false, title="Use Offset For Trailing Stop?")
tslOffset = input(defval=20, title="Trail Offset Points", minval=1)

// Messages for buy and sell
message_buy  = input("Buy message", title="Buy Alert Message")
message_sell   = input("Sell message", title="Sell Alert Message")

// Calculate start/end date and time condition
startDate  = input(timestamp("2021-01-01T00:00:00"), type = input.time)
finishDate = input(timestamp("2021-12-31T00:00:00"), type = input.time)
 
time_cond  = true

// === Vars and Series ===
fastMA = ema(maFastSource, maFastLength)
slowMA = ema(maSlowSource, maSlowLength)

plot(fastMA, color=color.blue)
plot(slowMA, color=color.purple)

goLong() =>
    crossover(fastMA, slowMA)
killLong() =>
    crossunder(fastMA, slowMA)
strategy.entry("Buy", strategy.long, when=goLong() and time_cond, alert_message = message_buy)
strategy.close("Buy", when=killLong() and time_cond, alert_message = message_sell)

// Shorting if using
if shorting
    strategy.entry("Sell", strategy.short, when=killLong() and time_cond, alert_message = message_sell)
    strategy.close("Sell", when=goLong() and time_cond, alert_message = message_buy)

if useStop
    strategy.exit("XLS", from_entry="Buy", stop=strategy.position_avg_price / 1.08)
    strategy.exit("XSS", from_entry="Sell", stop=strategy.position_avg_price * 1.08)



Mehr