
Es handelt sich um eine quantitative Handelsstrategie, die einen Index-Moving Average (EMA) -Kreuzung und einen Average True Range (ATR) -Filter kombiniert. Die Strategie verbessert die Sharpe Ratio und die Gesamtperformance der Strategie durch die Identifizierung von starken Trends und den Handel in einem marktübergreifenden Umfeld mit hoher Volatilität. Die Strategie verwendet 50- und 200-Zyklen-EMA, um mittelfristige Trends zu erfassen, und verwendet den ATR-Indikator, um die Marktvolatilität zu beurteilen.
Die Kernlogik der Strategie besteht aus zwei Hauptteilen: Trendbeurteilung und Schwankungsratefilterung. In der Trendbeurteilung verwendet die Strategie ein 50-Zyklus-EMA als Schnelllinie, ein 200-Zyklus-EMA als Schnelllinie, ein Mehrsignal beim Durchschreiten der langsamen Linie auf der Schnelllinie und ein Leersignal beim Durchschreiten. In der Schwankungsratefilterung berechnet die Strategie den ATR-Wert von 14 Zyklen und übersetzt ihn in einen Prozentsatz des Preises.
Es ist eine Strategie, die klassische technische Indikatoren mit modernen Risikomanagement-Konzepten kombiniert. Die Strategie ist einfach, aber auch sehr praktisch. Obwohl es einige inhärente Risiken gibt, hat die Strategie durch vernünftige Optimierungs- und Risikomanagementmaßnahmen immer noch einen guten Einsatzwert.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-27 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA Crossover with ATR Filter", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// Inputs for Moving Averages
fastLength = input.int(50, title="Fast EMA Length")
slowLength = input.int(200, title="Slow EMA Length")
// Inputs for ATR Filter
atrLength = input.int(14, title="ATR Length")
atrMultiplier = input.float(1.5, title="ATR Multiplier")
atrThreshold = input.float(0.02, title="ATR Threshold (%)")
// Calculate EMAs
fastEMA = ta.ema(close, fastLength)
slowEMA = ta.ema(close, slowLength)
// Calculate ATR
atr = ta.atr(atrLength)
// Convert ATR to a percentage of price
atrPct = atr / close
// Define Long Condition (Cross and ATR filter)
longCondition = ta.crossover(fastEMA, slowEMA) and atrPct > atrThreshold / 100
// Define Short Condition
shortCondition = ta.crossunder(fastEMA, slowEMA) and atrPct > atrThreshold / 100
// Define Exit Conditions
exitConditionLong = ta.crossunder(fastEMA, slowEMA)
exitConditionShort = ta.crossover(fastEMA, slowEMA)
// Long Entry
if (longCondition)
strategy.entry("Long", strategy.long)
// Short Entry
if (shortCondition)
strategy.entry("Short", strategy.short)
// Long Exit
if (exitConditionLong)
strategy.close("Long")
// Short Exit
if (exitConditionShort)
strategy.close("Short")
// Plot EMAs for visual reference
plot(fastEMA, title="50 EMA", color=color.blue)
plot(slowEMA, title="200 EMA", color=color.red)
// Plot ATR for reference
plot(atrPct, title="ATR Percentage", color=color.orange, style=plot.style_line)
hline(atrThreshold / 100, "ATR Threshold", color=color.green)