
Die Strategie ist ein Handelssystem, das auf Multiple-Index-Moving Averages (EMA) basiert, kombiniert mit EMA-Indikatoren aus verschiedenen Perioden und ATR-Dynamischen Stop-Mechanismen. Die Strategie verwendet 10-Zyklus-, 39-Zyklus- und 73-Zyklus-EMA als Hauptsignal-Indikatoren, während 143-Zyklus-Hochzeit-EMA als Trendfilter eingeführt wird und durch ATR-Indikatoren dynamische Stop-Loss- und Gewinnziele festgelegt werden.
Die Kernlogik der Strategie basiert auf der Kreuzung von Signalen und der Trendbestätigung von mehreren EMAs. Das System erzeugt mehrere Signale, wenn die kurzfristige EMA (10-Zyklen) die mittlere EMA (39-Zyklen) aufwärts durchschreitet und der Preis über der langfristigen EMA (73-Zyklen) und der höheren EMA (143-Zyklen) liegt. Im Gegensatz dazu erzeugt das System einen Abbruchsignal, wenn die kurzfristige EMA die mittlere EMA nach unten durchschreitet und der Preis unter der langfristigen EMA und der höheren EMA liegt.
Die Strategie baut ein Handelssystem auf, das Trendverfolgung und Risikomanagement kombiniert. Die Hauptvorteile der Strategie liegen in der Bestätigungsmechanik für mehrere Zeiträume und der dynamischen Positionsverwaltung, aber auch auf die Risiken der Quermarkt- und Rückstandssituation. Durch die Einführung von Optimierungsmethoden wie Transaktionsbestätigung und Trendstärkefilterung können die Stabilität und Ertragsfähigkeit der Strategie weiter verbessert werden.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-28 00:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Enhanced EMA Crossover Strategy", overlay=true)
// Define the EMA lengths
ema_short_length = 10
ema_long_length = 39
ema_filter_length = 73
ema_higher_tf_length = 143
// Calculate the EMAs
ema_short = ta.ema(close, ema_short_length)
ema_long = ta.ema(close, ema_long_length)
ema_filter = ta.ema(close, ema_filter_length)
ema_higher_tf = request.security(syminfo.tickerid, "D", ta.ema(close, ema_higher_tf_length))
// Calculate ATR for volatility-based stop loss and take profit
atr_length = 14
atr = ta.atr(atr_length)
// Plot the EMAs
plot(ema_short, title="EMA 10", color=color.blue)
plot(ema_long, title="EMA 35", color=color.red)
plot(ema_filter, title="EMA 75", color=color.orange)
plot(ema_higher_tf, title="EMA Higher TF", color=color.purple)
// EMA crossover conditions with EMA 75 and higher timeframe EMA filter
longCondition = ta.crossover(ema_short, ema_long) and close > ema_filter and close > ema_higher_tf
shortCondition = ta.crossunder(ema_short, ema_long) and close < ema_filter and close < ema_higher_tf
// Execute long trade with dynamic stop loss and take profit
if (longCondition)
strategy.entry("Long", strategy.long)
strategy.exit("Take Profit/Stop Loss", "Long", limit=close + 2 * atr, stop=close - 1 * atr)
// Execute short trade with dynamic stop loss and take profit
if (shortCondition)
strategy.entry("Short", strategy.short)
strategy.exit("Take Profit/Stop Loss", "Short", limit=close - 2 * atr, stop=close + 1 * atr)
// Plot signals on the chart
plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal", text="BUY")
plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal", text="SELL")