
Die Strategie ist ein Trend-Tracking-Trading-System, das einen Index-Moving-Average (EMA) und einen Stop-Loss-Mechanismus auf Basis der realen Schwankungsbreite (ATR) kombiniert. Die Strategie verwendet 9- und 21-Zyklus-EMA, um Markttrends zu identifizieren, und nutzt ATR, um die Stop-Loss-Position dynamisch anzupassen, was eine organische Kombination aus Trend-Tracking und Risikokontrolle ermöglicht.
Die Kernlogik der Strategie besteht aus zwei Hauptteilen: Trendbeurteilung und Risikokontrolle. Bei der Trendbeurteilung wird der Markttrend durch die Überwachung der Kreuzung von schnellen EMA (Zyklus 9) und langsamen EMA (Zyklus 21) ermittelt. Wenn die Schnelllinie überschritten wird, wird ein Mehrsignal ausgelöst; wenn die Schnelllinie unterhalb der langsamen Linie ist, wird ein Leersignal ausgelöst.
Die Strategie besteht aus einer Kombination von Trendbeurteilung und ATR-Dynamischen Stopps, um ein vollständiges Trend-Tracking-Handelssystem zu erstellen. Die Strategie hat den Vorteil, dass die Standards objektiv beurteilt werden, die Risikokontrolle flexibel ist, aber auch darauf geachtet wird, auf Marktrisiken und Signalverzögerungen zu reagieren. Durch die Hinzufügung von Trendstärken, die Bestätigung und Optimierung der Stop-Loss-Einstellungen usw. gibt es viel Raum für Verbesserungen.
/*backtest
start: 2024-02-20 00:00:00
end: 2024-05-31 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"TRB_USDT"}]
*/
//@version=5
strategy("EMA 9/21 + ATR SL Strategy", shorttitle="EMA+ATR", overlay=true)
// ===== Input Parameters ===== //
emaFastLen = input.int(9, "Fast EMA")
emaSlowLen = input.int(21, "Slow EMA")
atrLen = input.int(14, "ATR Length")
atrMult = input.float(1.5, "ATR Multiplier")
// ===== EMA Calculation ===== //
emaFast = ta.ema(close, emaFastLen)
emaSlow = ta.ema(close, emaSlowLen)
// ===== ATR Calculation ===== //
atrValue = ta.atr(atrLen)
// ===== Conditions for Entry ===== //
longCondition = ta.crossover(emaFast, emaSlow) // Long when 9 EMA crosses above 21 EMA
shortCondition = ta.crossunder(emaFast, emaSlow) // Short when 9 EMA crosses below 21 EMA
// ===== Entry Commands ===== //
if longCondition
strategy.entry("Long", strategy.long)
if shortCondition
strategy.entry("Short", strategy.short)
// ===== Set Stop-Loss Using ATR ===== //
//
// For LONG: stop-loss = entry price - (atrMult * ATR)
// For SHORT: stop-loss = entry price + (atrMult * ATR)
//
// Note: You can adjust the atrMult values based on market volatility
//
if strategy.position_size > 0
// If holding LONG, define stop-loss below the entry price
strategy.exit("Exit Long", "Long", stop = strategy.position_avg_price - atrMult * atrValue)
if strategy.position_size < 0
// If holding SHORT, define stop-loss above the entry price
strategy.exit("Exit Short", "Short", stop = strategy.position_avg_price + atrMult * atrValue)