Diese Strategie ist ein Trend-Folge-Handelssystem, das auf mehreren exponentiellen gleitenden Durchschnitten (EMA) und durchschnittlichem wahren Bereich (ATR) basiert. Es bestätigt die Trendrichtung durch mehrere EMA-Ausrichtungen, sucht Pullback-Möglichkeiten in Aufwärtstrends und verwendet ATR für dynamische Stop-Loss- und Gewinnziele. Dieser Ansatz gewährleistet Trend-Folge-Stabilität, während er sich dynamisch an die Marktvolatilität anpasst.
Die Kernlogik umfasst folgende Schlüsselelemente:
Dies ist eine gut strukturierte und logisch strenge Trendfolgestrategie. Die Kombination aus mehreren EMA-Trendbestätigungen, Pullback-Einträgen und einem ATR-basierten dynamischen Risikomanagement sorgt sowohl für Robustheit als auch für Anpassungsfähigkeit. Während inhärente Risiken bestehen, können die vorgeschlagenen Optimierungen die Stabilität und Rentabilität der Strategie weiter verbessern. Diese Strategie eignet sich besonders für die Verfolgung mittelfristiger bis langfristiger Trends und ist eine solide Wahl für Händler, die eine konstante Rendite in Trendmärkten suchen.
/*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")