La estrategia de seguimiento de tendencias del MACD es una estrategia de trading cuantitativa basada en el indicador MACD.
La lógica central de la estrategia de seguimiento de tendencias del MACD es:
A través de este mecanismo de seguimiento de tendencias, la estrategia puede capturar oportunamente los cambios de tendencias del mercado y obtener ganancias.
La estrategia de seguimiento de tendencias MACD tiene las siguientes ventajas:
La estrategia MACD Trend Following también tiene los siguientes riesgos:
Para hacer frente a los riesgos anteriores, pueden adoptarse las siguientes medidas de optimización:
La estrategia de seguimiento de tendencias del MACD se puede optimizar en los siguientes aspectos:
Optimizar los parámetros del indicador MACD para reducir la tasa de señales falsas.
Añadir otros indicadores como el volumen de negociación para filtrar las señales.
Configure un mecanismo de stop loss dinámico y los puntos de stop loss se pueden ajustar dinámicamente según la volatilidad.
Optimizar la lógica de determinación de la señal para la apertura de posiciones.
Incorporar modelos de aprendizaje automático para filtrar las señales. Los modelos pueden ser entrenados para juzgar la fiabilidad de las señales.
En general, la estrategia de seguimiento de tendencias MACD es una estrategia cuantitativa relativamente madura. Utiliza el indicador MACD para determinar las direcciones de tendencia del mercado y controla los riesgos con un mecanismo de stop loss, que puede rastrear efectivamente las tendencias de precios. Pero el indicador MACD en sí también tiene algunos defectos, fácil de generar señales falsas. Por lo tanto, hay espacio para una mayor optimización de esta estrategia, principalmente en aspectos como parámetros del indicador, mecanismo de stop loss, filtrado de señales, etc.
/*backtest start: 2023-11-10 00:00:00 end: 2023-12-10 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("MACD Cross Strategy", overlay=true) // Get MACD values [macdLine, signalLine, _] = ta.macd(close, 12, 26, 9) var float entryLongPrice = na var float entryShortPrice = na var float highestLongProfit = 0 var float highestShortProfit = 0 var float highestMACD = 0 var float lowestMACD = 0 var bool haveOpenedLong = false var bool haveOpenedShort = false var float stoploss = 0.04 // To be adjust for different investment var float minProfit = 0.05 // To be adjust for different investment if macdLine > 0 lowestMACD := 0 highestMACD := math.max(highestMACD, macdLine) haveOpenedShort := false else highestMACD := 0 lowestMACD := math.min(lowestMACD, macdLine) haveOpenedLong := false // Enter long position when MACD line crosses above the signal line if ta.crossover(macdLine, signalLine) and macdLine < highestMACD and macdLine > 0 and haveOpenedLong == false strategy.entry("Long", strategy.long) strategy.exit("Exit Long", from_entry = "Long", stop=close*(1 - stoploss)) entryLongPrice := close haveOpenedLong := true if ta.crossunder(macdLine, signalLine) and macdLine > lowestMACD and macdLine < 0 and haveOpenedShort == false strategy.entry("Short", strategy.short) strategy.exit("Exit Short", from_entry = "Short", stop=close*(1 + stoploss)) entryShortPrice := close haveOpenedShort := true // log.info("entryLongPrice:{0}", entryLongPrice) if strategy.position_size > 0 profit = close - entryLongPrice log.info("profit:{0}", profit) if profit > 0 highestLongProfit := math.max(highestLongProfit, profit) if profit / entryLongPrice > minProfit and highestLongProfit * 0.8 > profit strategy.close("Long") highestLongProfit := 0 if strategy.position_size < 0 profit = entryShortPrice - close if profit > 0 highestShortProfit := math.max(highestShortProfit, profit) log.info("highestShortProfit={0}, profit={1}", highestShortProfit, profit) if profit / entryShortPrice > minProfit and highestShortProfit * 0.8 > profit strategy.close("Short") highestShortProfit := 0