Crossover del MACD con la estrategia de señales

El autor:¿ Qué pasa?, Fecha: 2023-12-13 16:58:15
Las etiquetas:

img

Resumen general

La estrategia MACD Crossover with Signal genera señales comerciales cuando el MACD cruza por encima o por debajo de la línea de señal.

Principio de la estrategia

La estrategia primero calcula la línea media móvil rápida fastMA y la línea media móvil lenta slowMA. El parámetro promedio móvil rápido es de 12 días, y el parámetro promedio móvil lento es de 26 días. Luego, calcula la diferencia entre las dos líneas de promedio móvil para formar el MACD. Luego, calcula el promedio móvil de 9 días del MACD para obtener la línea de señal. Las señales de negociación se generan cuando el MACD cruza por encima o por debajo de la línea de señal.

La combinación de promedios móviles rápidos y lentos filtra las fluctuaciones de precios a corto plazo y el ruido, y puede capturar las tendencias de precios a mediano plazo. Cuando el precio de las acciones experimenta una reversión a mediano plazo, el MACD romperá la línea de señal y generará señales comerciales relativamente claras.

Análisis de ventajas

La estrategia MACD Crossover with Signal combina la idea de medias móviles dobles para filtrar el ruido a corto plazo y capturar solo los puntos de inflexión de las tendencias a largo y mediano plazo.

El MACD en sí es más sensible y puede responder sensiblemente a los cambios de tendencia de precios. La adición de la línea de señal puede filtrar más señales falsas a corto plazo. Solo cuando la tendencia a mediano plazo cambia significativamente, el MACD rompe la línea de señal hacia arriba y hacia abajo, se generará una señal.

En una tendencia alcista sostenida, el MACD se mantiene por encima de la línea de señal la mayor parte del tiempo, lo que puede capturar múltiples oportunidades a lo largo del camino.

Análisis de riesgos

Dado que las señales de compra y venta de la estrategia dependen completamente del cruce de las medias móviles, si el mercado fluctúa mucho, se generarán más señales falsas, lo que dará lugar a frecuentes pérdidas de parada.

La ruptura de la línea de señal no garantiza necesariamente que la tendencia a mediano plazo haya cambiado.

En el mercado en constante cambio, utilizar el cruce de medias móviles dobles como único umbral puede perder más oportunidades de negociación.

Direcciones de optimización

  1. Añadir indicadores de filtrado de liquidez y volatilidad para reducir la frecuencia de apertura y evitar operaciones ineficaces, como agregar volumen de operaciones, ajustar dinámicamente los parámetros de la media móvil, etc.

  2. Combinar varios otros indicadores técnicos para formar una cartera de indicadores para mejorar la calidad de la señal. La combinación de indicadores a corto plazo y a mediano y largo plazo puede juzgar de manera más completa la estructura del mercado.

  3. Añadir algoritmos de aprendizaje automático para entrenar parámetros y umbrales de atención que sean más adecuados para el entorno actual del mercado, reduciendo la intervención humana.

  4. Combinar el VIX y otros índices de miedo para predecir las tendencias y la volatilidad del mercado y ajustar dinámicamente los parámetros para aprovechar mejor las oportunidades del MACD.

Conclusión

La estrategia MACD Crossover con señal utiliza el principio de doble cruce de media móvil para generar señales comerciales. Dibujando el gráfico de precios por la diferencia entre promedios móviles rápidos y lentos, los cambios de tendencia de precios a mediano plazo tendrán características obvias. La adición de la línea de señal también filtra efectivamente algunas señales ruidosas. La estrategia tiene algunas ventajas para capturar inversiones de tendencia a mediano plazo relativamente claras. Sin embargo, el cruce de MACD y línea de señal no puede determinar completamente el cambio fundamental en la estructura del mercado, y las señales comerciales deben tratarse con precaución. Se recomienda usarlas en combinación con otros indicadores técnicos, y también se puede considerar la optimización de aprendizaje automático.


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

//@author : SudeepBisht
//@version=2
strategy(title="MACD with Signal", shorttitle="MACD_with_Signal")
source = close
useCurrentRes = input(true, title="Use Current Chart Resolution?")
resCustom = input(title="Use Different Timeframe? Uncheck Box Above", defval="60")
smd = input(true, title="Show MacD & Signal Line? Also Turn Off Dots Below")
sd = input(true, title="Show Dots When MacD Crosses Signal Line?")
sh = input(true, title="Show Histogram?")
macd_colorChange = input(true,title="Change MacD Line Color-Signal Line Cross?")
hist_colorChange = input(true,title="MacD Histogram 4 Colors?")

res = useCurrentRes ? timeframe.period : resCustom

fastLength = input(12, minval=1), slowLength=input(26,minval=1)
signalLength=input(9,minval=1)

fastMA = ema(source, fastLength)
slowMA = ema(source, slowLength)

macd = fastMA - slowMA
signal = sma(macd, signalLength)
hist = macd - signal

outMacD = request.security(syminfo.tickerid, res, macd)
outSignal = request.security(syminfo.tickerid, res, signal)
outHist = request.security(syminfo.tickerid, res, hist)

histA_IsUp = outHist > outHist[1] and outHist > 0
histA_IsDown = outHist < outHist[1] and outHist > 0
histB_IsDown = outHist < outHist[1] and outHist <= 0
histB_IsUp = outHist > outHist[1] and outHist <= 0

//MacD Color Definitions
macd_IsAbove = outMacD >= outSignal
macd_IsBelow = outMacD < outSignal

plot_color = hist_colorChange ? histA_IsUp ? green : histA_IsDown ? lime : histB_IsDown ? red : histB_IsUp ? maroon :yellow :gray
macd_color = macd_colorChange ? macd_IsAbove ? green : red : red
signal_color = macd_colorChange ? macd_IsAbove ? yellow : yellow : lime

circleYPosition = outSignal
 
plot(smd and outMacD ? outMacD : na, title="MACD", color=macd_color, linewidth=3)
plot(smd and outSignal ? outSignal : na, title="Signal", color=blue, style=line ,linewidth=1)
plot(sh and outHist ? outHist : na, title="", color=plot_color, style=columns, linewidth=4)
//plot(sd and cross(outMacD, outSignal) ? circleYPosition : na, title="Cross", style=circles, linewidth=4, color=macd_color)
hline(0, '0 Line',  linewidth=2, color=white)

macd_chk=smd and outMacD ? outMacD : na
checker=smd and outSignal ? outSignal : na
if (crossover(macd_chk,checker))
    strategy.entry("BBandLE", strategy.long)

if (crossunder(macd_chk, checker))
    strategy.entry("BBandSE", strategy.short)


Más.