Esta estrategia tiene como objetivo explotar posibles reversiones o continuidades de tendencia utilizando promedios móviles exponenciales (EMA) y una parada de seguimiento basada en el método de Chande Dynamic Convergence Divergence (CDC) Average True Range. La estrategia combina múltiples indicadores para determinar el momento de entrada y establece niveles de stop loss y de ganancias basados en la volatilidad del mercado para controlar el riesgo mientras captura nuevas tendencias.
Esta estrategia utiliza EMAs dobles de 60 períodos y 90 períodos para determinar la dirección de la tendencia. Un cruce donde la EMA de período más corto se mueve por encima de la EMA de período más largo da una señal alcista. Al mismo tiempo, un cruce de la línea MACD por encima de su línea de señal puede confirmar la visión alcista. La entrada requiere que el precio esté por encima del nivel de parada de seguimiento de CDC calculado previamente.
Las reglas de salida son: cierre de la posición cuando el precio alcanza el nivel de take profit basado en ATR o cae por debajo del nivel de stop loss del CDC.
Esta estrategia combina dos EMA para juzgar la dirección de la tendencia principal y MACD para confirmar el momento de entrada, evitando falsos breakouts.
Además, los parámetros de entrada de esta estrategia son personalizables. Los usuarios pueden ajustar los períodos EMA, ATR y CDC multiplicador de acuerdo con su propio estilo de negociación.
El mayor riesgo de esta estrategia es un juicio de tendencia incorrecto. Cuando el mercado se está consolidando, las EMA pueden fácilmente dar señales erróneas. En este momento, el papel de confirmación del MACD es especialmente importante. Además, se necesita aumentar adecuadamente el multiplicador de stop loss de CDC para lidiar con grandes brechas de precios causadas por eventos repentinos.
Esta estrategia hace un buen uso de las ventajas de los indicadores de tendencia y volatilidad para identificar oportunidades potenciales en valores. A través de la optimización de parámetros y mejoras de mecanismos, esta estrategia tiene el potencial de mejorar aún más la estabilidad y la rentabilidad. Proporciona a los operadores cuantitativos un marco estratégico confiable y escalable.
/*backtest start: 2023-01-17 00:00:00 end: 2024-01-23 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Improved EMA & CDC Trailing Stop Strategy", overlay=true) // Define the inputs ema60Period = input(60, title="EMA 60 Period") ema90Period = input(90, title="EMA 90 Period") atrPeriod = input(24, title="CDC ATR Period") multiplier = input(4.0, title="CDC Multiplier") profitTargetMultiplier = input(2.0, title="Profit Target Multiplier (ATR)") // Calculate EMAs ema60 = ta.ema(close, ema60Period) ema90 = ta.ema(close, ema90Period) // Calculate ATR atr = ta.atr(atrPeriod) // MACD calculation [macdLine, signalLine, _] = ta.macd(close, 12, 26, 9) // Define the trailing stop and profit target longStop = close - multiplier * atr shortStop = close + multiplier * atr longProfitTarget = close + profitTargetMultiplier * atr shortProfitTarget = close - profitTargetMultiplier * atr // Entry conditions longCondition = close > ema60 and ema60 > ema90 and macdLine > signalLine and close > longStop shortCondition = close < ema60 and ema60 < ema90 and macdLine < signalLine and close < shortStop // Exit conditions based on profit target longProfitCondition = close >= longProfitTarget shortProfitCondition = close <= shortProfitTarget // Plot the EMAs, Stops, and MACD for visualization plot(ema60, color=color.blue, title="60 EMA") plot(ema90, color=color.red, title="90 EMA") plot(longStop, color=color.green, title="Long Stop", style=plot.style_linebr) plot(shortStop, color=color.red, title="Short Stop", style=plot.style_linebr) hline(0, "Zero Line", color=color.gray) plot(macdLine - signalLine, color=color.blue, title="MACD Histogram") // Strategy execution using conditional blocks if longCondition strategy.entry("Long", strategy.long) if shortCondition strategy.entry("Short", strategy.short) // Exit based on profit target and trailing stop if longProfitCondition or close < longStop strategy.close("Long") if shortProfitCondition or close > shortStop strategy.close("Short")