Esta estrategia es un sistema de negociación basado en múltiples señales cruzadas de promedio móvil exponencial (EMA), que combina EMA de diferentes períodos con un mecanismo de stop-loss dinámico basado en ATR. La estrategia utiliza EMA de 10, 39 y 73 períodos como indicadores de señal primarios, al tiempo que incorpora una EMA de 143 períodos más alto como filtro de tendencia, e implementa objetivos dinámicos de stop-loss y take-profit utilizando el indicador ATR.
La lógica central se basa en múltiples cruces de la EMA y la confirmación de tendencias. Una señal larga se genera cuando la EMA a corto plazo (10 períodos) cruza por encima de la EMA a mediano plazo (39 períodos), y el precio está por encima tanto de la EMA a largo plazo (73 períodos) como de la EMA a mayor plazo (143 períodos). Por el contrario, una señal corta se genera cuando la EMA a corto plazo cruza por debajo de la EMA a mediano plazo, y el precio está por debajo de ambas EMA a largo plazo. La estrategia implementa una relación riesgo-rendimiento de 1:2 utilizando 1x ATR para objetivos de stop-loss y 2x ATR para objetivos de take-profit.
Esta estrategia construye un sistema de negociación que combina el seguimiento de tendencias y la gestión de riesgos a través de múltiples cruces EMA y paradas dinámicas basadas en ATR. Sus principales fortalezas se encuentran en mecanismos de confirmación de marcos de tiempo múltiples y gestión de posiciones dinámicas, al tiempo que se tiene en cuenta los riesgos de mercado y de retraso. La estabilidad y la rentabilidad de la estrategia se pueden mejorar aún más a través de la confirmación de volumen, el filtrado de la fuerza de la tendencia y otras optimizaciones. En la aplicación práctica, los parámetros deben ajustarse de acuerdo con diferentes entornos de mercado y características de los instrumentos comerciales.
/*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")