
Diese Strategie erzeugt ein Kaufsignal, wenn die schnelle EMA die langsame EMA überschreitet, und ein Verkaufssignal, wenn die schnelle EMA die langsame EMA unterschreitet. Die Strategie nutzt die Vorteile des beweglichen Durchschnitts, um die Markttrends effektiv zu verfolgen und Handelssignale in der Trendstartphase zu erzeugen.
Die Strategie basiert auf zwei unterschiedlichen Parametern: EMA mit 10 und EMA mit 20 Tagen. Die 10-Tage-EMA-Linie reagiert schneller auf Preisänderungen, während die 20-Tage-EMA-Linie langsamer reagiert. Wenn die kurzfristige EMA-Linie über die langfristige EMA-Linie fällt, führt der kurzfristige Durchschnitt den langfristigen Durchschnitt nach oben, was bedeutet, dass der Markt möglicherweise in eine positive Position gerät und ein Kaufsignal erzeugt.
Durch das Kreuzungsprinzip der schnellen EMA-Linien erfasst die Strategie die Umstellung der Markttrends und kann so rechtzeitig Handelssignale erzeugen. Gleichzeitig hat der EMA-Indikator selbst die Fähigkeit, falsche Wellensignale zu beeinflussen und häufige Positionen bei Marktschwankungen zu vermeiden. Dies ermöglicht der Strategie, Marktwendepunkte zu erfassen und gleichzeitig falsche Geschäfte zu reduzieren.
Die oben genannten Risiken können durch die Einführung zusätzlicher Indikatoren optimiert werden, z. B. durch die Erhöhung der Handelsfilterbedingungen, die Vermeidung von Fehlsignalen in Kombination mit MACD-Indikatoren, die Verwendung von adaptiven EMAs, die die Ansprechgeschwindigkeit der Indikatoren beschleunigen usw. Darüber hinaus sind vernünftige Stopps und aktive Stopps erforderlich.
Die Strategie kann in folgenden Bereichen weiter optimiert werden:
Die Strategie nutzt die doppelte EMA-Schnell-Lang-Linien-Kreuzung, um wichtige Marktwendepunkte zu erfassen und hat eine starke Fixed-Termine-Effekt. In Kombination mit Hilfsindikatoren und Optimierung von Stop-Loss kann die Strategie-Stabilität weiter verbessert werden. Die Strategie-Idee ist einfach und klar, lohnt sich für quantitative Händler zu lernen und zu verwenden, und hat großes Potenzial für Ausweitung und Optimierung.
/*backtest
start: 2023-01-15 00:00:00
end: 2024-01-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Backtest single EMA cross", overlay=true)
qty = input(100000, "Buy quantity")
testStartYear = input(2019, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testStartMin = input(0, "Backtest Start Minute")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, testStartHour, testStartMin)
testStopYear = input(2099, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)
testPeriodBackground = input(title="Color Background?", type=input.bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and time >= testPeriodStart and time <= testPeriodStop ?
#00FF00 : na
testPeriod() => true
ema1 = input(10, title="Select EMA 1")
ema2 = input(20, title="Select EMA 2")
expo = ema(close, ema1)
ma = ema(close, ema2)
avg_1 = avg(expo, ma)
s2 = cross(expo, ma) ? avg_1 : na
//plot(s2, style=plot.style_line, linewidth=3, color=color.red, transp=0)
p1 = plot(expo, color=#00FFFF, linewidth=2, transp=0)
p2 = plot(ma, color=color.orange, linewidth=2, transp=0)
fill(p1, p2, color=color.white, transp=80)
longCondition = crossover(expo, ma)
shortCondition = crossunder(expo, ma)
if testPeriod()
strategy.entry("Long", strategy.long, when=longCondition)
strategy.entry("Short", strategy.short, when=shortCondition)
plotshape(longCondition, title = "Buy Signal", text ="BUY", textcolor =#FFFFFF , style=shape.labelup, size = size.normal, location=location.belowbar, color = #1B8112, transp = 0)
plotshape(shortCondition, title = "Sell Signal", text ="SELL", textcolor = #FFFFFF, style=shape.labeldown, size = size.normal, location=location.abovebar, color = #FF5733, transp = 0)