Estrategia de negociación cuantitativa del MACD

El autor:¿ Qué pasa?, Fecha: 2023-12-19 15:11:57
Las etiquetas:

img

Resumen general

Esta estrategia utiliza el indicador MACD para construir señales de negociación de posiciones largas cuando el MACD está por debajo de un cierto nivel para aprovechar las oportunidades de reversión media.

Estrategia lógica

Una señal larga se genera cuando la línea MACD está por debajo de la línea SIGNAL y el valor absoluto de MACD está por debajo de -0.00025. Después de tomar una posición larga, si la línea MACD cruza por encima de la línea SIGNAL nuevamente, la posición se cerrará.

Esta estrategia utiliza el indicador MACD para detectar zonas de sobreventa. Según la teoría de los promedios móviles, existe una probabilidad de reversión media a corto plazo, y se establece una señal larga basada en esta probabilidad.

Ventajas

  1. Utiliza el indicador MACD para juzgar los niveles de sobreventa, que tiene cierta confiabilidad.
  2. Se trata de señales comerciales y reglas simples que son fáciles de implementar.
  3. Los períodos de retención largos significan una menor frecuencia de operaciones, lo que reduce los costes de transacción y el deslizamiento.

Los riesgos

  1. El riesgo de reversión no se traduce en pérdidas.
  2. Las señales no válidas derivadas de una mala selección de parámetros MACD.

Este riesgo puede reducirse mediante la optimización de parámetros.

Mejoras

  1. Optimice los parámetros del MACD para encontrar las mejores combinaciones.
  2. Prueba diferentes períodos de espera para encontrar la duración óptima.
  3. Añadir los mecanismos de pérdida de parada.

Resumen de las actividades

Esta estrategia utiliza la probabilidad de reversiones medias de los niveles de sobreventa identificados por el indicador MACD para generar señales largas y ganancias a través de períodos de retención largos.


//@version=3
strategy(title="MACD - EURUSD", shorttitle="MACD EURUSD")

// Getting inputs
fast_length = input(title="Fast Length",  defval=12)
slow_length = input(title="Slow Length",  defval=26)
src = input(title="Source", defval=close)
signal_length = input(title="Signal Smoothing",  minval = 1, maxval = 50, defval =9)
sma_source = input(title="Simple MA(Oscillator)", type=bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=bool, defval=false)

// Plot colors
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00

// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal

plot(hist, title="Histogram", style=columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 )
plot(macd, title="MACD", color=col_macd, transp=0)
plot(signal, title="Signal", color=col_signal, transp=0)

longCond = crossover(macd, signal) and macd < -0.00025
exitLong = crossover(macd, hist)


strategy.entry("long", strategy.long,  when=longCond==true)
strategy.close("long", when=exitLong==true)

Más.