La estrategia de comercio de cruce MACD es una estrategia de seguimiento de tendencias. Utiliza el cruce de líneas de promedio móvil rápido y lento como señales de compra y venta. Cuando la línea de promedio móvil rápido cruza por encima de la línea de promedio móvil lento, se genera una señal de compra. Cuando la línea de promedio móvil rápido cruza por debajo de la línea de promedio móvil lento, se genera una señal de venta.
Esta estrategia se basa en el indicador MACD. El indicador MACD es la diferencia entre dos líneas de promedio móvil con parámetros diferentes, que reflejan los cambios en el impulso de los precios. Específicamente, es la diferencia entre la línea de promedio móvil rápido (parámetro predeterminado es la línea de 12 días) y la línea de promedio móvil lento (parámetro predeterminado es la línea de 26 días), llamada barra MACD. Para eliminar las oscilaciones, el indicador MACD también introduce una línea DEA o línea de señal, generalmente la media móvil ponderada de 9 días del MACD.
Cuando la barra MACD atraviesa la línea DEA desde abajo hacia arriba y entra en el área positiva, indica que la línea promedio a corto plazo cruza por encima de la línea promedio a largo plazo, lo que indica que la tendencia del precio se vuelve al alza y se genera una señal de compra.
La estrategia utiliza el cruce de la barra MACD y la línea DEA para determinar el momento de compra y venta.
Las ventajas de esta estrategia incluyen:
Esta estrategia también tiene algunos riesgos:
Para reducir los riesgos, los parámetros se pueden ajustar o combinar con otros indicadores como los indicadores de volumen y volatilidad.
Esta estrategia puede optimizarse en los siguientes aspectos:
Optimización de parámetros para encontrar los parámetros óptimos y evitar la sobreoptimización.
Combinar con otros indicadores para formar estrategias de combinación más poderosas.
Establecer el stop loss adecuado y tomar puntos de ganancia para controlar eficazmente los riesgos.
Optimización adaptativa para aplicar esta estrategia a diferentes mercados y plazos en función de las condiciones reales.
La estrategia de negociación cruzada del MACD captura los cambios de tendencia a bajo costo siguiendo las tendencias de precios. Es simple, práctica y fácil de implementar, por lo que es una estrategia de inicio adecuada para principiantes. Pero esta estrategia también tiene algunos defectos. Al optimizar y mejorar constantemente, el efecto real de esta estrategia puede ser mejor. Vale la pena recomendarla.
/*backtest start: 2022-12-29 00:00:00 end: 2024-01-04 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("MACD Strategy by Forbes",default_qty_type=strategy.percent_of_equity, default_qty_value=100, overlay=false) fastLength = input(20) slowlength = input(40) MACDLength = input(4) // === INPUT BACKTEST RANGE === FromYear = input(defval = 2011, title = "From Year", minval = 2009) FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) ToYear = input(defval = 9999, title = "To Year", minval = 2009) ToMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31) // === FUNCTION EXAMPLE === start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => true // create function "within window of time" MACD = ema(close, fastLength) - ema(close, slowlength) aMACD = ema(MACD, MACDLength) delta = MACD - aMACD // Plot colors col_grow_above = #26A69A col_grow_below = #FFCDD2 col_fall_above = #B2DFDB col_fall_below = #EF5350 f1 = plot(MACD,color=red) s1 = plot(aMACD,color=blue) plotColor = if delta > 0 delta > delta[1] ? lime : green else delta < delta[1] ? maroon : red plot(delta, color=plotColor, style=columns) if (crossover(delta, 0)) strategy.entry("Buy", true, when=window(), comment="Buy") if (crossunder(delta, 0)) strategy.close_all(when=window()) //plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)