Estrategia de negociación de varios plazos basada en el MACD

El autor:¿ Qué pasa?, Fecha: 2024-01-12 11:46:59
Las etiquetas:

img

Visión general: Esta estrategia utiliza el indicador MACD para generar señales comerciales a través de múltiples marcos de tiempo para rastrear las tendencias.

Principio de la estrategia: La estrategia utiliza los cruces entre la línea de diferencia MACD y la línea de señal para determinar la dirección de la tendencia. Específicamente, calcula la diferencia MACD y las líneas de señal en marcos de tiempo más altos (default 60min). Cuando la línea de diferencia cruza por encima de la línea de señal, se genera una señal de compra. Cuando cruza por debajo, se genera una señal de venta para confirmar la dirección general de la tendencia.

La estrategia luego calcula el MACD en marcos de tiempo más bajos (período actual) y entra en posiciones cuando ocurren cruces entre la diferencia y las líneas de señal.

La estrategia también utiliza el cambio de color del histograma MACD para ayudar a juzgar la tendencia. Las barras verdes indican una tendencia alcista mientras que las barras rojas indican una tendencia bajista.

Análisis de ventajas:

  1. El diseño de marcos de tiempo múltiples confirma la tendencia a una TF más alta y encuentra entradas en TF más baja, mejorando la capacidad del sistema.

  2. Utiliza cruces MACD para determinar entradas y salidas, parámetros optimizados para señales confiables.

  3. El color del histograma ayuda a determinar el estado actual de la tendencia, mejorando la precisión de la decisión.

  4. Rastrea automáticamente las tendencias, reduce los errores emocionales.

Análisis de riesgos:

  1. Como indicador de tendencias a medio y largo plazo, el MACD puede producir señales falsas a corto plazo que conducen a pérdidas innecesarias.

  2. Las estrategias de marcos de tiempo múltiples son más difíciles de optimizar y probar ya que se deben considerar múltiples períodos simultáneamente.

  3. No se fija ningún stop loss que plantee el riesgo de grandes pérdidas.

Direcciones de optimización:

  1. Optimice los parámetros del MACD para encontrar las mejores combinaciones.

  2. Agregue el stop loss para limitar la pérdida máxima.

  3. Evaluar otros filtros para mejorar la calidad de la señal.

  4. Prueba diferentes combinaciones de plazos para encontrar coincidencias óptimas.

Resumen: La estrategia está bien diseñada sistemáticamente y combina múltiples puntos fuertes del indicador MACD para rastrear efectivamente las tendencias a mediano y largo plazo. Sin embargo, la falta de un mecanismo de stop loss significa que las pérdidas a corto plazo pueden expandirse fácilmente, lo que necesita ser mejorado. En general, con fuertes capacidades de seguimiento de tendencias, la estrategia proporciona un marco de alta calidad para la selección de acciones y la toma de decisiones en el comercio cuantitativo.


/*backtest
start: 2023-12-12 00:00:00
end: 2024-01-11 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@author : SudeepBisht
//@version=2
strategy(title="SB_CM_MacD_Ult_MTF", shorttitle="SB_CM_Ult_MacD_MTF")
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 ? aqua : histA_IsDown ? blue : histB_IsDown ? red : histB_IsUp ? maroon :yellow :gray
macd_color = macd_colorChange ? macd_IsAbove ? lime : 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=4)
plot(smd and outSignal ? outSignal : na, title="Signal Line", color=signal_color, style=line ,linewidth=2)
plot(sh and outHist ? outHist : na, title="Histogram", color=plot_color, style=histogram, linewidth=4)
plot(sd and cross(outMacD, outSignal) ? circleYPosition : na, title="Cross", style=circles, linewidth=4, color=macd_color)
// hline(0, '0 Line', linestyle=solid, 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, comment="BBandLE")

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


Más.