
Die Strategie nutzt die Kreuzung der schnellen EMA-Linie und der langsamen EMA-Linie als Kauf- und Verkaufssignale, um automatische Transaktionen auf Basis der Kreuzung der Mittellinie zu realisieren. Die schnellen EMA-Linien halten die Preisänderung fest und die langsamen EMA-Linien glätten die Preisänderung.
Die Strategie erzeugt Handelssignale hauptsächlich durch Berechnung der schnellen EMA- und der langsamen EMA-Linie und Vergleiche der Beziehung zwischen den beiden Gleichlinien.
Zuerst wird die Periodizität der schnellen EMA in den Eingabeparametern auf emaFast auf 1 gesetzt, so dass die schnellen EMAs die Preisänderungen abdecken können. Gleichzeitig wird die Periodizität der langsamen EMAs gesetzt, um ein Kaufsignal zu erzeugen.
Dann werden die schnellen EMAs und die langsamen EMAs berechnet, je nach eingegebenen Perioden. Die schnellen EMAs haben eine feste Periode von 1, um den Preis zu verfolgen; die langsamen EMAs sind einstellbare Parameter, um die Preisdaten zu glätten.
Vergleichen Sie dann die Größenverhältnisse zwischen schnellen EMA und langsamen EMA, um die Kreuzung zu beurteilen. Wenn die schnelle EMA von unten durch die langsame EMA fällt, entsteht ein Gold-Fork, der die Kaufbedingungen erfüllt. Wenn die schnelle EMA von oben herunter fällt und die langsame EMA bricht, entsteht ein Dead-Fork, der die Verkaufsbedingungen erfüllt.
Schließlich, wenn die Kauf- und Verkaufskonditionen erfüllt sind, führen Sie die entsprechenden Aufnahme- und Lagerbefehle aus, um den Handel abzuschließen. Prüfen Sie gleichzeitig, ob die aktuelle Zeit innerhalb der Rücklaufzeit liegt, um zu vermeiden, dass ein falscher Handel über den Datumsbereich hinausgeht.
Die folgenden Optimierungsmaßnahmen können für Risiken in Betracht gezogen werden:
EMA-Kreuzsignale in Kombination mit anderen Indikatoren zu filtern, um falsche Signale zu vermeiden
Anpassung der EMA-Parameter an die Marktschwankungen zur Verringerung der Handelsfrequenz
Erhöhung der Erwägung von Stop-Loss- und Stop-Out-Bedürfnissen und Risikokontrolle
Optimierung der Schnell-EMA-Zyklen mit geeigneteren Parametern für bestimmte Marktbedingungen
Mehr Trendwahrnehmung und Vermeidung von Übertriebenheit in einem wackligen Markt
Die Strategie kann in folgenden Richtungen weiter optimiert werden:
Es ist möglich, die beste Kombination der Parameter in der historischen Datenerfassung zu finden, indem man die verschiedenen EmaFast- und EmaSlow-Parameter durchläuft, mit einer schrittweisen Optimierung oder einer Zufallsoptimierung.
So können beispielsweise MACD-, KDJ- und Brin-Band-Indikatoren kombiniert werden, um eine Fehlsignalisierung durch EMA-Kreuzung zu vermeiden.
Es ist wichtig, die tatsächlichen Wellen zu berechnen, um zu beurteilen, ob ein Trend stark oder schwach ist, und sich nicht in einen wackligen Markt zu verwickeln.
Erforschung der optimalen Stop-Loss-Punkte, um das Risiko von Verlusten zu kontrollieren, und Ermittlung eines vernünftigen Stop-Loss-Punktes, um die Gewinne zu maximieren.
Nicht nur schnelle EMA-Kombinationen, sondern auch doppelte EMA, drei EMA und sogar mehrere EMA-Kombinationen können getestet werden, um bessere Parameter zu finden.
Bei stärker trendigen Märkten kann die EMA-Zyklus angemessen beschleunigt werden, während bei schwankenden Märkten die EMA-Zyklus verlangsamt werden kann.
Die EMA-Cross-Strategie ist klar und verständlich, und verwendet ausgereifte technische Indikatoren, um zu entscheiden, wann man kauft. Die Strategie ist maßgeschneidert und kann durch Anpassung der EMA-Parameter optimiert werden, um eine Handelsstrategie für verschiedene Marktumstände zu entwickeln. Die EMA-Signal ist jedoch rückständig und muss wiederholt getestet werden, um die beste Kombination von Parametern zu finden.
/*backtest
start: 2023-10-10 00:00:00
end: 2023-11-09 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(
"EMA Cross Strategy with Custom Buy/Sell Conditions",
overlay=true
)
// INPUT:
// Options to enter fast Exponential Moving Average (EMA) value
emaFast = 1
// Options to enter slow EMAs for buy and sell signals
slowEMABuy = input(title="Slow EMA for Buy Signals", defval=20, minval=1, maxval=9999)
slowEMASell = input(title="Slow EMA for Sell Signals", defval=30, minval=1, maxval=9999)
// Option to select trade directions
tradeDirection = input(title="Trade Direction", options=["Long", "Short", "Both"], defval="Both")
// Options that configure the backtest date range
startDate = input(title="Start Date", type=input.time, defval=timestamp("01 Jan 2018 00:00"))
endDate = input(title="End Date", type=input.time, defval=timestamp("31 Dec 2025 23:59"))
// CALCULATIONS:
// Use a fixed fast EMA of 1 and calculate slow EMAs for buy and sell signals
fastEMA = ema(close, emaFast)
slowEMABuyValue = ema(close, slowEMABuy)
slowEMASellValue = ema(close, slowEMASell)
// PLOT:
// Draw the EMA lines on the chart
plot(series=fastEMA, color=color.orange, linewidth=2)
plot(series=slowEMABuyValue, color=color.blue, linewidth=2, title="Slow EMA for Buy Signals")
plot(series=slowEMASellValue, color=color.red, linewidth=2, title="Slow EMA for Sell Signals")
// CONDITIONS:
// Check if the close time of the current bar falls inside the date range
inDateRange = true
// Translate input into trading conditions for buy and sell signals
buyCondition = crossunder(slowEMABuyValue, fastEMA)
sellCondition = crossover(slowEMASellValue, fastEMA)
// Translate input into overall trading conditions
longOK = (tradeDirection == "Long") or (tradeDirection == "Both")
shortOK = (tradeDirection == "Short") or (tradeDirection == "Both")
// ORDERS:
// Submit entry (or reverse) orders based on buy and sell conditions
if (buyCondition and inDateRange)
strategy.entry("Buy", strategy.long)
if (sellCondition and inDateRange)
strategy.close("Buy")
// Submit exit orders based on opposite trade conditions
if (strategy.position_size > 0 and sellCondition)
strategy.close("Sell")
if (strategy.position_size < 0 and buyCondition)
strategy.close("Sell")