Estrategia de seguimiento de tendencias con 3 EMA, DMI y MACD

El autor:¿ Qué pasa?, Fecha: 2024-01-25 15:48:59
Las etiquetas:

img

Resumen general

Esta es una estrategia de seguimiento de tendencias que combina 3 promedios móviles exponenciales (EMA) con el índice de movimiento direccional (DMI) y el indicador de convergencia de convergencia promedio móvil (MACD) para determinar la dirección de la tendencia y generar señales de compra / venta.

Estrategia lógica

La lógica básica se basa en 3 EMA - 34, 89 y 200 - calculados en el marco temporal M5 para identificar la tendencia general.

Las señales de compra se activan cuando:

  • El precio de cierre cruza por encima de la EMA 34
  • +DI (movimiento alcista direccional) > 17
  • Se aplicarán las siguientes medidas:

Las señales de venta se generan cuando:

  • El precio de cierre se cruza por debajo de la EMA 34
  • -DI (movimiento en dirección bajista) > 17
  • Se trata de los siguientes tipos de riesgo:

La confirmación adicional proviene del indicador MACD antes de las entradas.

Ventajas

Esta estrategia tiene varias ventajas clave:

  1. Captura temprana la dirección de la tendencia utilizando el cruce de la EMA a corto plazo
  2. Utiliza múltiples EMA para medir la fuerza de la tendencia en diferentes plazos de tiempo
  3. Los filtros DMI ayudan a evitar señales falsas al verificar si hay un fuerte movimiento direccional
  4. El MACD proporciona una confirmación de impulso para las configuraciones de mayor probabilidad
  5. La combinación de indicadores mejora la exactitud y el calendario de las entradas

Los riesgos

Los principales riesgos a tener en cuenta:

  1. Si solo se utiliza el cruce de la EMA, se producen sacas y señales falsas
  2. Posible retraso en la generación de señal por confirmaciones múltiples
  3. Válvulas de tendencia

Métodos de mitigación:

  • Utilice el stop-loss adecuado y el dimensionamiento de las posiciones
  • Optimizar las longitudes de la EMA para las condiciones actuales del mercado

Oportunidades de mejora

Otras mejoras de la estrategia:

  1. Añadir filtros adicionales como el RSI para los niveles de sobrecompra/sobreventa
  2. Incorporar análisis de volumen para señales más fuertes
  3. Prueba y optimización de indicadores y ajustes basados en activos y plazos
  4. Emplear el aprendizaje automático para aprender continuamente de los nuevos datos del mercado

Conclusión

En resumen, este es un sistema robusto de seguimiento de tendencias que combina indicadores simples pero poderosos para operar en la dirección de la tendencia prevaleciente.


/*backtest
start: 2023-01-18 00:00:00
end: 2024-01-24 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("2 EMA di+ Buy Sell, strategy ", overlay=true)

// Define the EMA calculation function
ema(src, length) =>
    ta.ema(src, length)

// Calculate and plot EMA on M5
ema34_M5 = ema(close, 34)
ema89_M5 = ema(close, 89)
ema200_M5 = ema(close, 200)

// Plot EMAs
plot(ema34_M5, color=color.green, title="EMA 34 M5", linewidth=2)
plot(ema89_M5, color=color.blue, title="EMA 89 M5", linewidth=2)
plot(ema200_M5, color=color.black, title="EMA 200 M5", linewidth=2)

// Define DMI parameters
len = input(14, title="DI Length")
up = ta.change(high)
down = -ta.change(low)
plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
trur = ta.rma(ta.tr, len)
plusDI = 100 * ta.rma(plusDM, len) / trur
minusDI = 100 * ta.rma(minusDM, len) / trur

// Calculate ADX
adxValue = 100 * ta.rma(math.abs(plusDI - minusDI) / (plusDI + minusDI == 0 ? 1 : plusDI + minusDI), len)

// Define MACD parameters
fastLength = input(12, title="Fast Length")
slowLength = input(26, title="Slow Length")
signalLength = input(9, title="Signal Length")

// Calculate MACD
[macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalLength)

// Create buy/sell conditions
buyCondition = close > ema34_M5 and plusDI > 17 and adxValue > minusDI 
sellCondition = close < ema34_M5 and minusDI > 17 and adxValue > plusDI 

// Strategy logic
strategy.entry("Buy", strategy.long, when = buyCondition)
strategy.entry("Sell", strategy.short, when = sellCondition)

// Create alerts for buy/sell signals
alertcondition(buyCondition, title="Buy Signal", message="Buy Signal")
alertcondition(sellCondition, title="Sell Signal", message="Sell Signal")

// Plot buy/sell arrows on the price chart
bgcolor(buyCondition ? color.new(color.green, 90) : sellCondition ? color.new(color.red, 90) : na)

plotarrow(buyCondition ? 1 : sellCondition ? -1 : na, colorup=color.new(color.green, 0), colordown=color.new(color.red, 0), offset=-1)


Más.