
La estrategia es un sistema de negociación basado en señales cruzadas de promedios móviles de múltiples índices (EMA), que combina el indicador EMA de diferentes períodos y el mecanismo de stop loss dinámico ATR. La estrategia utiliza EMA de 10 ciclos, 39 ciclos y 73 ciclos como indicador principal de la señal, mientras que introduce EMA de períodos de tiempo alto de 143 ciclos como filtro de tendencia y establece objetivos de stop loss y ganancias a través del indicador ATR.
La lógica central de la estrategia se basa en el cruce de señales y la confirmación de tendencias de múltiples EMAs. Cuando el corto EMA (de 10 ciclos) cruza hacia arriba el EMA medio (de 39 ciclos) y el precio está por encima del EMA largo (de 73 ciclos) y el EMA más largo (de 143 ciclos), el sistema genera una señal de multiplicación. Por el contrario, cuando el corto EMA cruza hacia abajo el EMA medio y el precio está por debajo del EMA largo y el EMA más largo, el sistema genera una señal de ruptura.
La estrategia se basa en el cruce de múltiples EMAs en combinación con el ATR para detener la dinámica, la construcción de un sistema de negociación que combina el seguimiento de la tendencia y la gestión del riesgo. La principal ventaja de la estrategia es el mecanismo de confirmación de múltiples períodos de tiempo y la gestión de posiciones dinámicas, pero también hay que tener en cuenta los riesgos que conlleva el mercado horizontal y el atraso.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-28 00:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Enhanced EMA Crossover Strategy", overlay=true)
// Define the EMA lengths
ema_short_length = 10
ema_long_length = 39
ema_filter_length = 73
ema_higher_tf_length = 143
// Calculate the EMAs
ema_short = ta.ema(close, ema_short_length)
ema_long = ta.ema(close, ema_long_length)
ema_filter = ta.ema(close, ema_filter_length)
ema_higher_tf = request.security(syminfo.tickerid, "D", ta.ema(close, ema_higher_tf_length))
// Calculate ATR for volatility-based stop loss and take profit
atr_length = 14
atr = ta.atr(atr_length)
// Plot the EMAs
plot(ema_short, title="EMA 10", color=color.blue)
plot(ema_long, title="EMA 35", color=color.red)
plot(ema_filter, title="EMA 75", color=color.orange)
plot(ema_higher_tf, title="EMA Higher TF", color=color.purple)
// EMA crossover conditions with EMA 75 and higher timeframe EMA filter
longCondition = ta.crossover(ema_short, ema_long) and close > ema_filter and close > ema_higher_tf
shortCondition = ta.crossunder(ema_short, ema_long) and close < ema_filter and close < ema_higher_tf
// Execute long trade with dynamic stop loss and take profit
if (longCondition)
strategy.entry("Long", strategy.long)
strategy.exit("Take Profit/Stop Loss", "Long", limit=close + 2 * atr, stop=close - 1 * atr)
// Execute short trade with dynamic stop loss and take profit
if (shortCondition)
strategy.entry("Short", strategy.short)
strategy.exit("Take Profit/Stop Loss", "Short", limit=close - 2 * atr, stop=close + 1 * atr)
// Plot signals on the chart
plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal", text="BUY")
plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal", text="SELL")