Estrategia de conversión de la media móvil de los tipos de cambio del MACD

El autor:¿ Qué pasa?, Fecha: 2023-12-08 15:29:41
Las etiquetas:

img

Resumen general

La estrategia de conversión del MACD calcula las líneas DIFF y DEA del indicador MACD para determinar si la tendencia del mercado se ha invertido, generando así señales comerciales.

Estrategia lógica

La estrategia se basa principalmente en las líneas DIFF y DEA del indicador MACD. MACD significa Divergencia de convergencia de promedio móvil, que consta de las líneas DIFF, DEA y MACD. Entre ellas, DIFF representa la diferencia entre la EMA a corto plazo y la EMA a largo plazo, DEA es la EMA de DIFF utilizada para verificar las señales DIFF, y MACD representa la diferencia entre DIFF y DEA, utilizada para identificar divergencias.

Cuando el DIFF se rompe por encima de DEA, significa que el promedio móvil a corto plazo comienza a fortalecerse y el mercado se vuelve alcista. Cuando el DIFF se rompe por debajo de DEA, sugiere que el promedio móvil a corto plazo se vuelve débil y el mercado se vuelve bajista. Por lo tanto, esta estrategia es larga cuando el DIFF cruza por encima de DEA y corta cuando cruza por debajo.

Además, la estrategia incorpora filtros de EMA de precios para evitar falsas rupturas. Sólo va largo cuando el DIFF rompe por encima de DEA y el precio está por debajo del precio largo anterior, y sólo va corto cuando el DIFF rompe por debajo de DEA y el precio está por encima del precio corto anterior.

Análisis de ventajas

Esta estrategia combina el indicador MACD y los filtros de EMA de precios para evitar señales falsas generadas únicamente por el MACD, mejorando así el rendimiento comercial.

Las principales ventajas incluyen:

  1. Utilizando el MACD para identificar los puntos de inversión de tendencia y capturar los puntos de inflexión
  2. Incorporación de filtros de la EMA de precios para reducir las oportunidades falsas de ruptura
  3. Generación rápida de señales adecuadas para operaciones a corto plazo
  4. Tendencia de ejecución que sigue a la captura de las utilidades de tendencia a medio plazo
  5. Se alinea con la mayoría de los comerciantes patrón de pensamiento de la negociación en los puntos de conversión

Análisis de riesgos

La estrategia de conversión de la media móvil MACD también tiene algunos riesgos:

  1. El MACD es propenso a generar señales falsas, requiriendo filtros de EMA de precios, pero también se perderá algunos movimientos
  2. Necesidad de monitorear de cerca las líneas DIFF y DEA, el ajuste incorrecto de parámetros aumenta las señales falsas
  3. Las señales de ruptura sólo consideran 1 bar, con el riesgo de ser azotado
  4. La estrategia se basa principalmente en el cruce DIFF/DEA para las señales, puede aumentar la frecuencia de comercio si las señales son demasiado frecuentes

Las principales formas de optimizar los riesgos son:

  1. Ajustar los parámetros MACD para reducir las señales falsas
  2. Mejorar la resistencia del filtro para reducir la ocurrencia de la sierra
  3. Añadir filtros en la tenencia de posiciones para limitar la frecuencia de operaciones

Direcciones de optimización

La estrategia de conversión de la media móvil MACD a la tasa de bajada de los precios puede optimizarse aún más en las siguientes dimensiones:

  1. Optimizar los parámetros MACD de los períodos DIFF/DEA
  2. Añadir filtros de tiempo a la frecuencia de negociación más baja
  3. Incorporar estrategias de stop loss/take profit para controlar los objetivos de ganancia
  4. Añadir otros filtros de indicadores como bandas BOLL y KD
  5. Incorporar el sesgo de tendencia para evitar la negociación contra tendencia
  6. Desarrollar estrategias de salida o plantillas de obtención de beneficios basadas en este marco estratégico

Conclusión

La estrategia de conversión de los promedios alcistas y bajistas del MACD identifica la entrada de los mercados alcista/bajista mediante señales cruzadas DIFF y DEA, y utiliza filtros de EMA de precios para eliminar señales falsas, determinando efectivamente los puntos de inversión de tendencia del mercado. Con una lógica simple y clara, identifica rápidamente los puntos de conversión adecuados para el comercio a corto y mediano plazo.


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

//@version=3
strategy("macd_strategy", 
          shorttitle="macd", 
          overlay=true, 
          pyramiding=1, 
          max_bars_back=5000, 
          calc_on_order_fills = false, 
          calc_on_every_tick=true, 
          default_qty_type=strategy.percent_of_equity, 
          default_qty_value=100, 
          commission_type =strategy.commission.percent, 
          commission_value=0.00075)
[diff, dea, _] = macd(close, 12, 26, 7)
dea_close = ema(diff, 3)
price = ema(close, 9)
plot(price)
cross_over_price = na
cross_over_signal = na
cross_over_price := cross_over_price[1]
cross_over_signal := cross_over_signal[1]

cross_under_price = na
cross_under_signal = na
cross_under_price := cross_under_price[1]
cross_under_signal := cross_under_signal[1]
if (crossover(diff,dea))
    cross_over_price := price[1]
    cross_over_signal := diff
if (crossunder(diff,dea))
    cross_under_price := price[1]
    cross_under_signal := diff
if dea > 0
    cross_over_price = na
    cross_over_signal = na
else
    cross_under_price = na
    cross_under_signal = na
if diff > 0
    if cross_under_price > cross_under_price[1]*1 and cross_under_signal < cross_under_signal[1]*0.95
        strategy.entry("S", strategy.short,  comment="S")
else
    if cross_over_price < cross_over_price[1]*1 and cross_over_signal > cross_over_signal[1]*0.95
        strategy.entry("B", strategy.long,  comment="B")
// strategy.exit("exit_s", "S", stop = strategy.position_avg_price*1.05, when=strategy.position_size < 0)
// strategy.exit("exit_b", "B", stop = strategy.position_avg_price*0.95, when=strategy.position_size > 0)
strategy.close_all(when=(strategy.position_size < 0 and (dea < 0 or diff > cross_under_signal*1 or crossover(diff, dea)) or (strategy.position_size > 0 and (dea > 0 or diff < cross_over_signal*1 or crossunder(diff, dea)))))

Más.