Estrategia de negociación de cruce de promedio móvil MACD

El autor:¿ Qué pasa?, Fecha: 2024-02-22 16:25:13
Las etiquetas:

img

Resumen general

La estrategia de negociación de cruce de la media móvil MACD es una estrategia de negociación cuantitativa que rastrea las situaciones de cruce de medias móviles exponenciales (EMA) a corto y largo plazo y realiza operaciones de compra y venta cuando ocurren cruces dorados y cruces muertos.

Estrategia lógica

Esta estrategia se basa principalmente en la EMA de 12 días, la EMA de 26 días y el indicador MACD.

  1. Calcular la EMA de 12 días y la EMA de 26 días.
  2. Calcular el MACD (es decir, la EMA de 12 días menos la EMA de 26 días).
  3. Calcule la EMA de 9 días del MACD como la línea de señal.
  4. Cuando el MACD supera la línea de señal, se genera una señal de compra.
  5. Cuando el MACD cae por debajo de la línea de señal, se genera una señal de venta.
  6. Realice la operación de compra o venta correspondiente al cierre del segundo candelabro después de que se genere la señal.

Además, esta estrategia también establece algunas condiciones de filtrado:

  1. La hora de negociación es la hora de cierre de cada día de negociación.
  2. El valor absoluto de la diferencia entre el MACD y la línea de señal debe ser mayor que 0,08.
  3. Solo se permite una dirección de posición a la vez.

Análisis de ventajas

Esta estrategia combina el cruce de la media móvil y el indicador MACD, que puede capturar eficazmente los puntos de inflexión de las tendencias a corto y mediano plazo del mercado.

  1. Las reglas de la estrategia son simples y claras, fáciles de entender y aplicar.
  2. Los parámetros del indicador están optimizados para un rendimiento relativamente estable.
  3. Se tiene en cuenta el seguimiento de las tendencias a mediano y corto plazo y la salida oportuna de stop loss.
  4. La lógica de negociación es rigurosa para evitar negociación no válida.

Análisis de riesgos

Esta estrategia también tiene algunos riesgos:

  1. El riesgo de sobreajuste de los datos de ensayo de retroceso.
  2. Riesgo de alto deslizamiento de los costos de las operaciones frecuentes.
  3. Riesgo de pérdida por no salir a tiempo cuando la tendencia se invierte.
  4. El riesgo de apalancamiento es inherente a la negociación cuantitativa.

Métodos de mitigación correspondientes:

  1. Optimiza dinámicamente los parámetros y ajusta los umbrales.
  2. Relajar adecuadamente las normas de comercio para reducir el comercio innecesario.
  3. Combine más indicadores para juzgar las señales de inversión.
  4. Controlar las posiciones y el apalancamiento.

Direcciones de optimización

Los principales aspectos para optimizar esta estrategia incluyen:

  1. Prueba las combinaciones de medias móviles de ciclo más largo para encontrar parámetros óptimos.
  2. Añadir fundamentos como el rendimiento financiero, eventos significativos, etc. como filtros.
  3. Incorporar más indicadores para determinar el momento de la inversión de tendencia, como bandas de Bollinger, KDJ, etc.
  4. Desarrollar mecanismos de stop loss. Cortar activamente las pérdidas cuando las pérdidas alcanzan puntos de stop loss preestablecidos.
  5. Se añade la relación de extracción para controlar la extracción máxima.

Resumen de las actividades

La estrategia de negociación MACD genera señales de negociación a través de un simple seguimiento de tendencias y controla eficazmente los riesgos con condiciones de filtrado apropiadas. Es una estrategia de negociación cuantitativa efectiva. La estrategia se puede mejorar en formas como la optimización de parámetros, la adición de mecanismos de stop loss, la incorporación de más indicadores auxiliares, etc.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EMMA", max_bars_back = 200)

var up1 = #26A69A
var up2 = #B2DFDB
var down1 = #FF5252
var down2 = #FFCDD2
var confirmationLength = 2

var earliest = timestamp("20 Jan 2024 00:00 +0000")

// Regn u
shortEMA = ta.ema(close, 12)
longEMA = ta.ema(close, 26)
macd = shortEMA - longEMA
signal = ta.ema(macd, 9)
delta = macd - signal
absDelta = math.abs(delta)
previousDelta = delta[1]

signalCrossover = ta.crossover(macd, signal)
signalCrossunder = ta.crossunder(macd, signal)

harskiftetdag = hour(time[confirmationLength]) > hour(time)

enterLongSignal = signalCrossover[confirmationLength] and (macd > signal) and (absDelta >= 0.08)
exitLongSignal = signalCrossunder[confirmationLength] and (macd < signal)

enterShortSignal = signalCrossunder[confirmationLength] and (macd < signal) and (absDelta >= 0.08)
exitShortSignal = signalCrossover[confirmationLength] and (macd > signal)

// Så er det tid til at købe noe
qty = math.floor(strategy.equity / close)

if time >= earliest and not harskiftetdag
    if exitLongSignal 
        strategy.close("long")
    else if enterLongSignal
        strategy.close("short")
        strategy.entry("long", strategy.long, qty = qty)

    if exitShortSignal
        strategy.close("short")
    else if enterShortSignal
        strategy.close("long")
        strategy.entry("short", strategy.short, qty = qty)

// Så er det tid til at vise noe

plot(macd, color=color.blue)
plot(signal, color=color.orange)

// bgcolor(color = delta > 0.1 ? color.new(color.green, 90) : color.new(color.green, 100))
// bgcolor(color = signalCrossover ? color.purple : signalCrossunder ? color.aqua : color.new(color.green, 100))

histogramColor = delta > 0 ? (previousDelta < delta ? up1 : up2) : (previousDelta > delta ? down1 : down2)

plot(
     delta,
     style=plot.style_columns,
     color=histogramColor
     )

Más.