
La estrategia es un sistema de trading basado en cruces de medias móviles exponenciales (EMA), combinado con rango verdadero promedio (ATR) para lograr una gestión dinámica del riesgo. La estrategia utiliza líneas EMA de corto y largo plazo para capturar los cambios de impulso en las tendencias de precios, y utiliza ATR para establecer dinámicamente posiciones de toma de ganancias y stop loss, logrando un control preciso de los riesgos comerciales.
La lógica central de la estrategia se basa en las señales de cruce de dos medias móviles exponenciales de diferentes períodos (9 y 21). Cuando la EMA de corto plazo cruza la EMA de largo plazo hacia arriba, se genera una señal larga; cuando la EMA de corto plazo cruza la EMA de largo plazo hacia abajo, se genera una señal corta. Para gestionar mejor los riesgos, la estrategia introduce un mecanismo dinámico de stop-profit y stop-loss basado en un ATR de 14 períodos. El nivel de take-profit se establece en 2 veces el ATR y el nivel de stop-loss se establece en 1 vez. ATR. Esta configuración garantiza suficiente margen de beneficio y permite controlar los riesgos a tiempo.
Esta estrategia realiza un sistema de trading relativamente completo al combinar el clásico sistema de cruce de EMA y la gestión dinámica de riesgos ATR. Las principales ventajas de la estrategia son sus capacidades de gestión dinámica de riesgos y sus buenas características de seguimiento de tendencias. A través de las direcciones de optimización sugeridas, todavía hay margen para mejorar aún más la estrategia. Cuando se aplica en tiempo real, se recomienda realizar pruebas retrospectivas y optimización de parámetros suficientes y hacer los ajustes apropiados en función de las características específicas del mercado.
/*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)