En la carga de los recursos... Cargando...

Tendencia del MACD siguiendo la estrategia

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

img

Resumen general

La estrategia de seguimiento de tendencias del MACD es una estrategia de trading cuantitativa basada en el indicador MACD.

Estrategia lógica

La lógica central de la estrategia de seguimiento de tendencias del MACD es:

  1. Calcular la línea MACD y la línea de señal.
  2. Cuando la línea MACD cruce por encima de 0 desde abajo hacia arriba, registrar el punto más alto entonces, y esperar a la señal de cruz de muerte.
  3. Cuando la línea MACD cruce por debajo de 0 desde arriba hacia abajo, registra el punto más bajo y espera la señal de cruz dorada.
  4. Cuando ocurra una cruz dorada, registra el precio de cierre actual como punto de entrada largo, establece el punto de stop loss, abre la posición larga.
  5. Cuando ocurre la cruz de muerte, registra el precio de cierre actual como punto de entrada corto, establece el punto de stop loss, abre la posición corta.
  6. Cuando se mantiene una posición larga, si la relación de ganancias alcanza el objetivo preestablecido o la retirada alcanza el punto de stop loss, se cierra la posición para obtener ganancias.
  7. Cuando se mantiene una posición corta, si la relación de ganancias alcanza el objetivo preestablecido o la retirada alcanza el punto de stop loss, se cierra la posición para obtener ganancias.

A través de este mecanismo de seguimiento de tendencias, la estrategia puede capturar oportunamente los cambios de tendencias del mercado y obtener ganancias.

Análisis de ventajas

La estrategia de seguimiento de tendencias MACD tiene las siguientes ventajas:

  1. La fuente de las señales de estrategia es singular y clara, generada directamente por el indicador MACD, evitando la interferencia de las señales.
  2. Utilice las características de la cruz de oro y la cruz de muerte del indicador MACD para determinar las direcciones de tendencia del mercado, con juicios precisos.
  3. Seguimiento oportuno de las tendencias, con una fuerte capacidad de seguimiento de ganancias.
  4. Control de riesgos adecuado, con un mecanismo de stop loss.

Análisis de riesgos

La estrategia MACD Trend Following también tiene los siguientes riesgos:

  1. El indicador MACD tiende a generar señales falsas, lo que puede conducir a pérdidas en operaciones a muy corto plazo.
  2. La configuración incorrecta del punto de parada de pérdida puede aumentar la pérdida única.
  3. Difícil de equilibrar entre el índice de seguimiento de ganancias y el punto de stop loss, con riesgo de que el seguimiento exceda lo necesario para generar pérdidas.

Para hacer frente a los riesgos anteriores, pueden adoptarse las siguientes medidas de optimización:

  1. Combinar con otros indicadores para filtrar las señales falsas.
  2. Ajuste dinámico de los puntos de stop loss.
  3. Optimizar los parámetros de la relación de seguimiento de ganancias y los puntos de stop loss.

Direcciones de optimización

La estrategia de seguimiento de tendencias del MACD se puede optimizar en los siguientes aspectos:

  1. Optimizar los parámetros del indicador MACD para reducir la tasa de señales falsas.

  2. Añadir otros indicadores como el volumen de negociación para filtrar las señales.

  3. Configure un mecanismo de stop loss dinámico y los puntos de stop loss se pueden ajustar dinámicamente según la volatilidad.

  4. Optimizar la lógica de determinación de la señal para la apertura de posiciones.

  5. Incorporar modelos de aprendizaje automático para filtrar las señales. Los modelos pueden ser entrenados para juzgar la fiabilidad de las señales.

Conclusión

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

Más.