Estrategia de trading con MACD de doble conversión y cero retrasos: trading de alta frecuencia basado en la captura de tendencias a corto plazo

MACD EMA SMA
Fecha de creación: 2024-05-24 18:14:37 Última modificación: 2024-05-24 18:14:37
Copiar: 0 Número de Visitas: 1177
1
Seguir
1617
Seguidores

Estrategia de trading con MACD de doble conversión y cero retrasos: trading de alta frecuencia basado en la captura de tendencias a corto plazo

Descripción general

La estrategia se basa en la versión cero de retraso del indicador MACD, que permite realizar operaciones de alta frecuencia mediante la captura de tendencias a corto plazo y la respuesta rápida a los cambios de precios. La estrategia utiliza dos promedios móviles de diferentes períodos (línea rápida y lenta) para construir el indicador MACD, e introduce un algoritmo de retraso cero, eliminando el retraso entre el indicador y el precio y mejorando la puntualidad de la señal.

Principio de estrategia

  1. Calcula el EMA (media móvil indexada) o SMA (media móvil simple) de la línea rápida (de 12 periodos por defecto) y la línea lenta (de 26 periodos por defecto).
  2. Se utiliza un algoritmo de retraso cero para la segunda suavización de las líneas rápidas y lentas, eliminando el retraso de los indicadores y los precios.
  3. La línea MACD se compone de la diferencia entre la línea rápida y la línea lenta.
  4. La línea de señal se compone de EMA (de 9 ciclos por defecto) o SMA de la línea MACD.
  5. El gráfico MACD está formado por el diferencial entre la línea MACD y la línea de señal. El azul representa el valor positivo y el rojo el negativo.
  6. Cuando la línea MACD atraviesa la línea de señal de abajo hacia arriba, y el punto de cruce está por debajo del eje cero, se genera una señal de compra (punto azul).
  7. Cuando la línea MACD atraviesa la línea de señal de arriba hacia abajo y el punto de cruce está por encima del eje cero, se genera una señal de venta (punto rojo).
  8. La estrategia consiste en hacer pedidos automáticamente en función de las señales de compra y venta y activar las alertas correspondientes.

Análisis de las ventajas

  1. El algoritmo de retraso cero elimina efectivamente la demora entre el indicador y el precio, mejorando la puntualidad y la precisión de la señal.
  2. El diseño de las medias móviles dobles permite capturar mejor las tendencias del mercado y adaptarse a diferentes entornos.
  3. El gráfico de la MACD refleja de forma intuitiva la oposición de fuerzas en el aire, ayudando a las decisiones comerciales.
  4. Las órdenes automáticas y las alertas permiten a los operadores aprovechar las oportunidades de negociación a tiempo y mejorar la eficiencia de las operaciones.

Análisis de riesgos

  1. En un mercado convulso, las frecuentes señales de cruce pueden provocar exceso de operaciones y pérdidas.
  2. La configuración incorrecta de los parámetros puede causar fallas en la señal y afectar el rendimiento de la estrategia.
  3. Las estrategias se basan en datos históricos para realizar sus cálculos y son poco adaptadas a los eventos de emergencia y al evento de los cisnes negros.

Dirección de optimización

  1. La introducción de indicadores de confirmación de tendencias, como el ADX, filtrará las falsas señales en los mercados de oscilación.
  2. Optimización de los parámetros para encontrar la combinación óptima de ciclo de línea rápida y ciclo de línea de señal para mejorar la estabilidad de la estrategia.
  3. Construir modelos multifactoriales, en combinación con otros indicadores técnicos o fundamentales, para mejorar los beneficios ajustados al riesgo de la estrategia.
  4. Introducción de mecanismos de stop loss y de suspensión para controlar el riesgo de una sola transacción.

Resumir

La estrategia de negociación de retraso cero de la doble conversión MACD responde rápidamente a los cambios en los precios, captura tendencias a corto plazo y permite el comercio de alta frecuencia. El diseño del algoritmo de retraso cero y el doble promedio móvil mejora la puntualidad y la precisión de la señal. La estrategia tiene ciertas ventajas, como la intuición de la señal, la facilidad de operación, etc., pero también existe el riesgo de exceso de parámetros de negociación, sensibilidad a los parámetros, etc.

Código Fuente de la Estrategia
/*backtest
start: 2024-04-23 00:00:00
end: 2024-05-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("BNM INTRADAY SETUP MACD 3M - Version 1.2", shorttitle="Zero Lag MACD Enhanced 1.2")
source = close

fastLength = input(12, title="Fast MM period", minval=1)
slowLength = input(26,title="Slow MM period", minval=1)
signalLength =input(9,title="Signal MM period", minval=1)
useEma = input(true, title="Use EMA (otherwise SMA)")
useOldAlgo = input(false, title="Use Glaz algo (otherwise 'real' original zero lag)")
showDots = input(true, title="Show symbols to indicate crossing")
dotsDistance = input(1.5, title="Symbols distance factor", minval=0.1)

// Fast line
ma1 = useEma ? ema(source, fastLength) : sma(source, fastLength) 
ma2 = useEma ? ema(ma1, fastLength) : sma(ma1, fastLength) 
zerolagEMA = ((2 * ma1) - ma2)

// Slow line
mas1 = useEma ? ema(source, slowLength) : sma(source, slowLength)
mas2 = useEma ? ema(mas1, slowLength) : sma(mas1, slowLength)
zerolagslowMA = ((2 * mas1) - mas2)

// MACD line
ZeroLagMACD = zerolagEMA - zerolagslowMA 

// Signal line
emasig1 = ema(ZeroLagMACD, signalLength)
emasig2 = ema(emasig1, signalLength)
signal = useOldAlgo ? sma(ZeroLagMACD, signalLength) : (2 * emasig1) - emasig2

hist = ZeroLagMACD - signal

upHist = (hist > 0) ? hist : 0
downHist = (hist <= 0) ? hist : 0

p1 = plot(upHist, color=color.blue, transp=40, style=plot.style_columns, title='Positive delta')
p2 = plot(downHist, color=color.red, transp=40, style=plot.style_columns, title='Negative delta') 

zeroLine = plot(ZeroLagMACD, color=color.red, transp=0, linewidth=2, title='MACD line')
signalLine = plot(signal, color=color.blue, transp=0, linewidth=2, title='Signal')

ribbonDiff = hist > 0 ? color.blue : color.red
fill(zeroLine, signalLine, color=ribbonDiff)

circleYPosition = signal * dotsDistance
ribbonDiff2 = hist > 0 ? color.blue : color.red

// Generate dots for cross signals
plot(showDots and cross(ZeroLagMACD, signal) ? circleYPosition : na, style=plot.style_circles, linewidth=4, color=ribbonDiff2, title='Dots')

// Alerts for buy and sell signals
buySignal = cross(ZeroLagMACD, signal) and (ribbonDiff2 == color.blue) and (ZeroLagMACD < 0)
sellSignal = cross(ZeroLagMACD, signal) and (ribbonDiff2 == color.red) and (ZeroLagMACD > 0)

// Use 'strategy.entry' for placing orders in strategy context
if (buySignal)
    strategy.entry("Buy", strategy.long)
    alert("Buy Signal: Blue dot below zero line", alert.freq_once_per_bar_close)

if (sellSignal)
    strategy.entry("Sell", strategy.short)
    alert("Sell Signal: Red dot above zero line", alert.freq_once_per_bar_close)