Cette stratégie est un système de négociation basé sur des croisements de moyennes mobiles exponentielles (EMA), combinés avec une plage moyenne vraie (ATR) pour une gestion dynamique des risques.
La logique de base de la stratégie est basée sur des signaux croisés entre deux EMA de périodes différentes (9 et 21). Un signal d'achat est généré lorsque l'EMA à court terme franchit le niveau supérieur de l'EMA à long terme, tandis qu'un signal de vente est généré lorsque l'EMA à court terme franchit le niveau inférieur de l'EMA à long terme. Pour mieux gérer le risque, la stratégie intègre un mécanisme dynamique de prise de profit et de stop-loss basé sur l'ATR à 14 périodes, avec des niveaux de prise de profit fixés à 2x ATR et des niveaux de stop-loss à 1x ATR, garantissant un profit potentiel suffisant tout en maintenant un contrôle rapide des risques.
Cette stratégie crée un système de trading complet en combinant le système de croisement classique de l'EMA avec la gestion dynamique des risques ATR. Ses principales forces résident dans ses capacités de gestion dynamique des risques et ses caractéristiques efficaces de suivi des tendances.
/*backtest start: 2019-12-23 08:00:00 end: 2025-01-04 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Improved EMA Crossover Strategy", overlay=true) // User-defined inputs for EMAs shortTermLength = input(9, title="Short-Term EMA Length") longTermLength = input(21, title="Long-Term EMA Length") // Dynamic Take Profit and Stop Loss atrLength = input(14, title="ATR Length") atrMultiplierTP = input(2.0, title="ATR Multiplier for Take Profit") atrMultiplierSL = input(1.0, title="ATR Multiplier for Stop Loss") // Calculate EMAs and ATR shortTermEMA = ta.ema(close, shortTermLength) longTermEMA = ta.ema(close, longTermLength) atr = ta.atr(atrLength) // Plot the EMAs plot(shortTermEMA, color=color.blue, title="Short-Term EMA") plot(longTermEMA, color=color.red, title="Long-Term EMA") // Generate Entry Conditions longCondition = ta.crossover(shortTermEMA, longTermEMA) shortCondition = ta.crossunder(shortTermEMA, longTermEMA) // Optional Debugging: Print conditions (you can remove this later) var label longLabel = na var label shortLabel = na if longCondition longLabel := label.new(bar_index, high, "Buy Signal", color=color.green, style=label.style_label_down, textcolor=color.white) if shortCondition shortLabel := label.new(bar_index, low, "Sell Signal", color=color.red, style=label.style_label_up, textcolor=color.white) if (longCondition) strategy.entry("Long", strategy.long) strategy.exit("Long Exit", "Long", limit=close + atr * atrMultiplierTP, stop=close - atr * atrMultiplierSL) if (shortCondition) strategy.entry("Short", strategy.short) strategy.exit("Short Exit", "Short", limit=close - atr * atrMultiplierTP, stop=close + atr * atrMultiplierSL)