
Cette stratégie est un système de trading de suivi de tendance qui combine une moyenne mobile indicielle ((EMA) et un arrêt basé sur l’amplitude de fluctuation réelle ((ATR)). La stratégie utilise des EMA de 9 cycles et de 21 cycles pour identifier les tendances du marché, tout en utilisant l’ATR pour ajuster dynamiquement les positions d’arrêt, réalisant une combinaison organique de suivi de tendance et de contrôle du risque.
La logique centrale de la stratégie comprend deux parties principales: le jugement de la tendance et le contrôle du risque. Dans le jugement de la tendance, la tendance du marché est déterminée par la surveillance de l’intersection de l’EMA rapide (cycle 9) et l’EMA lente (cycle 21).
La stratégie est construite en combinant la tendance de jugement de la ligne de croix uniforme et l’arrêt dynamique de l’ATR, pour construire un système de trading de suivi de tendance complet. L’avantage de la stratégie réside dans la détermination de l’objectivité de la norme, la flexibilité du contrôle des risques, mais aussi la nécessité de faire face aux problèmes de risque de marché et de retard de signal. La stratégie a encore beaucoup de place pour l’amélioration par l’ajout de la force de la tendance, la confirmation des paramètres d’arrêt, etc.
/*backtest
start: 2024-02-20 00:00:00
end: 2024-05-31 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"TRB_USDT"}]
*/
//@version=5
strategy("EMA 9/21 + ATR SL Strategy", shorttitle="EMA+ATR", overlay=true)
// ===== Input Parameters ===== //
emaFastLen = input.int(9, "Fast EMA")
emaSlowLen = input.int(21, "Slow EMA")
atrLen = input.int(14, "ATR Length")
atrMult = input.float(1.5, "ATR Multiplier")
// ===== EMA Calculation ===== //
emaFast = ta.ema(close, emaFastLen)
emaSlow = ta.ema(close, emaSlowLen)
// ===== ATR Calculation ===== //
atrValue = ta.atr(atrLen)
// ===== Conditions for Entry ===== //
longCondition = ta.crossover(emaFast, emaSlow) // Long when 9 EMA crosses above 21 EMA
shortCondition = ta.crossunder(emaFast, emaSlow) // Short when 9 EMA crosses below 21 EMA
// ===== Entry Commands ===== //
if longCondition
strategy.entry("Long", strategy.long)
if shortCondition
strategy.entry("Short", strategy.short)
// ===== Set Stop-Loss Using ATR ===== //
//
// For LONG: stop-loss = entry price - (atrMult * ATR)
// For SHORT: stop-loss = entry price + (atrMult * ATR)
//
// Note: You can adjust the atrMult values based on market volatility
//
if strategy.position_size > 0
// If holding LONG, define stop-loss below the entry price
strategy.exit("Exit Long", "Long", stop = strategy.position_avg_price - atrMult * atrValue)
if strategy.position_size < 0
// If holding SHORT, define stop-loss above the entry price
strategy.exit("Exit Short", "Short", stop = strategy.position_avg_price + atrMult * atrValue)