
Esta estrategia es un sistema de trading de seguimiento de tendencias que combina un mecanismo de stop loss basado en un promedio móvil de índice (EMA) y un mecanismo de stop loss basado en amplitud de fluctuación real (ATR). La estrategia utiliza EMA de 9 y 21 períodos para identificar tendencias en el mercado, mientras que utiliza ATR para ajustar dinámicamente las posiciones de stop loss, lo que permite una combinación orgánica de seguimiento de tendencias y control de riesgo.
La lógica central de la estrategia incluye dos partes principales: el juicio de tendencia y el control de riesgo. En el juicio de tendencia, se determina la tendencia del mercado mediante la supervisión de la intersección entre el EMA rápido (ciclo 9) y el EMA lento (ciclo 21). Cuando la línea rápida atraviesa la línea lenta, se activa una señal de más; cuando la línea rápida atraviesa la línea lenta, se activa una señal de menos. En el control de riesgo, la estrategia utiliza el indicador ATR para calcular la posición de parada dinámica.
La estrategia combina el juicio de tendencias de cruzamiento equilátero y el deterioro dinámico del ATR para construir un sistema de seguimiento de tendencias completo. La estrategia tiene la ventaja de juzgar la objetividad de los estándares y la flexibilidad del control de riesgos, pero también debe tener en cuenta los riesgos de los mercados de crisis y los problemas de la demora de la señal.
/*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)