
Die Strategie ist ein Trend-Tracking-Trading-System, basierend auf mehreren Index-Moving Averages (EMA) und realen Breite-Indikatoren (ATR). Die Strategie bestätigt die Richtung des Trends, indem sie die Anordnung von mehreren Mittellinien beurteilt, bei Aufwärtstrends nach Rückschlag-Kauf-Gelegenheiten sucht und mit ATR-Dynamik Stop-Loss- und Gewinnziele setzt. Diese Methode gewährleistet sowohl die Stabilität des Trend-Trackings als auch die dynamische Anpassung an die Marktfluktuation durch ATR.
Die Kernlogik der Strategie umfasst die folgenden Schlüsselelemente:
Dies ist eine strukturierte, logisch strenge Trend-Tracking-Strategie. Durch die Kombination von Trendbestätigung mit mehreren Mittellinien, Rückspielung des Einstiegs und ATR-Dynamikrisikomanagement ist die Strategie sowohl stabil als auch gut anpassungsfähig. Obwohl es einige inhärente Risiken gibt, kann die Strategie durch die empfohlene Optimierungsrichtung weiter verbessert werden.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-27 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA Crossover and ATR Target Strategy", overlay=true)
// Input parameters
emaShortLength = 20
emaMidLength1 = 50
emaMidLength2 = 100
emaLongLength = 200
atrLength = 14
// Calculate EMAs
ema20 = ta.ema(close, emaShortLength)
ema50 = ta.ema(close, emaMidLength1)
ema100 = ta.ema(close, emaMidLength2)
ema200 = ta.ema(close, emaLongLength)
ema21 = ta.ema(close, 21)
// Calculate ATR
atr = ta.atr(atrLength)
// Conditions for the strategy
emaCondition = ema20 > ema50 and ema50 > ema100 and ema100 > ema200
pullbackCondition = close <= ema21 and close >= ema50 //and close >= ema21 * 0.99 // Near 21 EMA (within 1%)
// Initialize variables for stop loss and take profitss
var float stopLossLevel = na
var float takeProfitLevel = na
// Check conditions on each bar close
if (bar_index > 0) // Ensures there is data to check
if emaCondition and pullbackCondition and strategy.position_size == 0 // Only buy if no open position
stopLossLevel := close - (1.5 * atr) // Set stop loss based on ATR at buy price
takeProfitLevel := close + (3.5 * atr) // Set take profit based on ATR at buy price
strategy.entry("Buy", strategy.long)
// Set stop loss and take profit for the active trade
if strategy.position_size > 0
strategy.exit("Take Profit", from_entry="Buy", limit=takeProfitLevel, stop=stopLossLevel)
// Plot EMAs for visualizationn
plot(ema20, color=color.blue, title="20 EMA")
plot(ema50, color=color.red, title="50 EMA")
plot(ema100, color=color.green, title="100 EMA")
plot(ema200, color=color.orange, title="200 EMA")
plot(ema21, color=color.purple, title="21 EMA")