Cette stratégie est un système de trading basé sur plusieurs moyennes mobiles exponentielles (EMA) et une plage moyenne vraie (ATR). Elle confirme la direction de la tendance à travers plusieurs alignements EMA, recherche des opportunités de rebond dans les tendances haussières et utilise ATR pour des objectifs de stop-loss et de profit dynamiques. Cette approche garantit la stabilité de la tendance tout en s'adaptant dynamiquement à la volatilité du marché.
La logique de base comprend les éléments clés suivants:
Il s'agit d'une stratégie de suivi de tendance bien structurée et logiquement rigoureuse. La combinaison de plusieurs confirmations de tendance EMA, d'entrées de recul et de gestion dynamique des risques basée sur ATR garantit à la fois la robustesse et l'adaptabilité. Bien qu'il existe des risques inhérents, les optimisations suggérées peuvent encore améliorer la stabilité et la rentabilité de la stratégie. Cette stratégie est particulièrement adaptée au suivi des tendances à moyen et long terme et constitue un choix solide pour les traders qui recherchent des rendements constants sur les marchés en tendance.
/*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")