
La stratégie est un système de trading basé sur les croisements de moyennes mobiles exponentielles (EMA), combinés à l’Average True Range (ATR) pour obtenir une gestion dynamique des risques. La stratégie utilise des lignes EMA à court et à long terme pour capturer les changements de dynamique dans les tendances de prix et utilise l’ATR pour définir dynamiquement des positions de take-profit et de stop-loss, permettant ainsi un contrôle précis des risques de trading.
La logique principale de la stratégie repose sur les signaux de croisement de deux moyennes mobiles exponentielles de périodes différentes (9 et 21). Lorsque l’EMA à court terme croise l’EMA à long terme vers le haut, un signal long est généré ; lorsque l’EMA à court terme croise l’EMA à long terme vers le bas, un signal court est généré. Afin de mieux gérer les risques, la stratégie introduit un mécanisme dynamique de stop-profit et de stop-loss basé sur un ATR de 14 périodes. Le niveau de take-profit est fixé à 2 fois l’ATR et le niveau de stop-loss est fixé à 1 fois ATR. Ce paramètre garantit un espace de profit suffisant et permet de contrôler les risques dans le temps.
Cette stratégie réalise un système de trading relativement complet en combinant le système de croisement EMA classique et la gestion dynamique des risques ATR. Les principaux avantages de la stratégie sont ses capacités de gestion dynamique des risques et ses bonnes caractéristiques de suivi des tendances. Grâce aux orientations d’optimisation suggérées, il existe encore une marge d’amélioration de la stratégie. Lorsqu’il est appliqué en temps réel, il est recommandé d’effectuer des backtestings et des optimisations de paramètres suffisants, et de procéder aux ajustements appropriés en fonction des caractéristiques spécifiques du marché.
/*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)