Die EMA-Golden-Cross-Strategie ist eine häufige quantitative Handelsstrategie. Sie verwendet zwei exponentielle gleitende Durchschnitte (EMA) mit verschiedenen Parametern. Wenn die kürzere Periode EMA über die längere Periode EMA überschreitet, geht es lang. Wenn die kürzere Periode EMA unter die längere Periode EMA überschreitet, schließt sie die Position. Diese Strategie nutzt die schnellere Reaktion der kurzfristigen EMA und die Trendfolgfähigkeit der langfristigen EMA, um Handelssignale zu generieren.
Die Strategie definiert zunächst zwei EMAs, ema1 mit Länge 10 und ema2 mit Länge 21. Dann berechnet sie die Werte der beiden EMAs. Wenn ema1 über ema2 überschreitet, signalisiert sie einen Aufschwung, was ein langes Signal ist. Wenn ema1 unter ema2 überschreitet, signalisiert sie einen Bruch durch die EMAs, was ein Schlusssignal ist.
Der Code definiert auch einen Schwellenwert, der als
threshold = ((ema1 - ema2)*100) / ((ema1 + ema2)/2)
Diese Schwelle stellt den Prozentsatz der EMA-Distanz gegenüber dem EMA-Durchschnitt dar. Wenn die Schwelle über 0,15% liegt, ist dies ein Long-Signal. Wenn die Schwelle unter -0,006% liegt, ist dies ein Close-Positionssignal.
Zusammenfassend sind die Handelssignale dieser Strategie:
Zu den Vorteilen dieser Strategie gehören:
Die Verwendung von EMAs kann die Preisdaten glätten und dazu beitragen, Handelssignale zu generieren.
Die doppelte EMA-Einstellung gleicht Reaktionsfähigkeit und Stabilität.
Der Schwellenwert filtert falsche Ausbrüche und verhindert unnötige Trades.
Die Strategie ist einfach und klar, für Anfänger geeignet.
Die EMA-Parameter und der Schwellenwert können optimiert werden.
Zu den Risiken dieser Strategie gehören:
Die EMAs liegen hinter den Preisen zurück und können kurzfristige Chancen verpassen.
Risiko, dass man bei einer Trendumkehr gefangen wird, was möglicherweise zu großen Verlusten führt.
Eine falsche Schwelle kann gültige Signale filtern oder falsche Signale erzeugen.
Wenn die EMA-Parameter nicht geeignet sind, zeigen die beiden EMA möglicherweise keine signifikanten Unterschiede und erzeugen falsche Signale.
Der Stop-Loss sollte vernünftig eingestellt werden, um zu vermeiden, dass er durch große Marktschwankungen unterbrochen wird.
Die Strategie kann in folgenden Aspekten optimiert werden:
Optimieren Sie die EMA-Parameter und testen Sie verschiedene Zeiträume.
Der Schwellenwert wird optimiert, um falsche Signale und gültige Signale auszugleichen.
Hinzufügen anderer technischer Indikatoren wie MACD, KDJ, um Signale zu bestätigen.
Hinzufügen von Stop-Loss-Mechanismen wie Trailing Stop oder OCO-Orders, um Verluste zu begrenzen.
Die Risikopositionen werden in den folgenden Kategorien aufgelistet:
Versuche verschiedene Wartezeiten, um eine optimale Dauer zu finden.
Die EMA Golden Cross Strategie hat eine klare und einfache Logik und nutzt die Eigenschaften der EMAs, um Handelssignale zu generieren. Die Strategie hat gewisse Vorteile, aber potenzielle Risiken bestehen. Die Strategie kann durch Optimierung von Parametern, Einstellung von Stop Loss, Filtern von Signalen usw. verbessert werden.
/*backtest start: 2023-08-18 00:00:00 end: 2023-09-17 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ if high > ta.highest(high[1], 5) strategy.entry("Enter Long", strategy.long) else if low < ta.lowest(low[1], 5) strategy.entry("Enter Short", strategy.short)//@version=3 strategy(title="ema10-21", shorttitle="10/21", overlay=true, pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 2500, commission_type = strategy.commission.percent, commission_value = 0.2) len1 = input(10, minval=1, title="EMA #1 length") src1 = input(close, title="EMA Source #1") a = ta.ema(src1, len1) plot(a, title="EMA #1", color=color.orange, linewidth=2, style=plot.style_line) len2 = input(21, minval=1, title="EMA #2 length") src2 = input(close, title="EMA Source #2") b = ta.ema(src2, len2) plot(b, title="EMA #2", color=color.blue, linewidth=2, style=plot.style_line) threshold = ((a-b)*100)/((a+b)/2) thresholdUp = threshold > 0.15 thresholdDown = threshold < -0.006 if (thresholdUp) strategy.entry("Buy", strategy.long) if (thresholdDown) strategy.close("Buy", strategy.long) //goLong() => (crossover(a, b)) and (threshold >= 0.0025) //killLong() => (crossunder(a, b)) and (threshold <= -0.0025) //strategy.entry("Buy", strategy.long, when = goLong()) //strategy.close("Buy", when = killLong()) //threshold = ((a-b)*100)/((a+b)/2) //achat = out1 > out2 //vente = out1 < out2 //and threshold < -0.025 //strategy.entry("long", true, when = achat) //strategy.exit("exit", "long", when = vente)