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

Estrategia de seguimiento de tendencias de varios marcos temporales basada en el MACD de impulso y el cruce de dos medias móviles

El autor:¿ Qué pasa?, fecha: 2024-05-17 15:33:02
Las etiquetas:El MACDEl número de personas afectadasLa SMAZLEMAEl EMA- ¿Qué es?

img

Resumen general

Esta estrategia utiliza varios indicadores de promedio móvil, incluyendo SMMA, SMA, ZLEMA y EMA, y construye un indicador MACD mejorado (MACD de impulso) basado en ellos. Genera señales comerciales a través del cruce del MACD de impulso y su línea de señal. La idea principal de la estrategia es capturar las tendencias del mercado utilizando promedios móviles de diferentes marcos de tiempo mientras confirma la fuerza y dirección de la tendencia con el MACD de impulso.

Principio de la estrategia

  1. Calcular el SMMA y el ZLEMA de los precios altos, bajos y cerrados con una longitud de 34 para obtener el Impulse MACD (MD).
  2. Calcular la SMA de 9 períodos del MACD de impulso como la línea de señal (SB).
  3. Calcular la diferencia entre el MACD de impulso y la línea de señal (SH) para reflejar la fuerza de la tendencia.
  4. Generar una señal de compra cuando el Impulse MACD cruza por encima de la línea de señal y cerrar la posición cuando cruza por debajo.
  5. Trace el histograma Impulse MACD con diferentes colores basados en la relación entre el precio, el Impulse MACD y el SMMA de precio alto/bajo para reflejar visualmente la fuerza de la tendencia.

Ventajas estratégicas

  1. El uso de múltiples tipos de medias móviles permite una reflexión más completa de las tendencias del mercado.
  2. El indicador MACD mejorado (MACD de impulso) tiene en cuenta la posición relativa de los precios y las medias móviles, reflejando mejor la fuerza de la tendencia.
  3. La introducción de la línea de señal ayuda a filtrar algunas señales falsas y mejora la calidad de la señal.
  4. Trazar el Impulse MACD con diferentes colores basados en la fuerza de la tendencia facilita el juicio intuitivo de los movimientos del mercado.

Riesgos estratégicos

  1. La selección incorrecta de parámetros puede dar lugar a señales frecuentes o con retraso, lo que requiere una optimización basada en diferentes mercados y plazos.
  2. La estrategia puede generar más señales falsas y causar pérdidas en mercados agitados.
  3. La estrategia carece de un mecanismo de suspensión de pérdidas y puede enfrentar importantes reducciones en mercados volátiles.

Direcciones para la optimización de la estrategia

  1. Introducir indicadores de identificación de tendencias como ADX para operar solo cuando la tendencia sea clara, reduciendo las pérdidas en mercados inestables.
  2. Confirmar las señales de negociación generadas con otros indicadores como RSI y ATR para mejorar la calidad de la señal.
  3. Establecer niveles razonables de stop-loss y take-profit para controlar el riesgo de una operación única.
  4. Optimizar los parámetros utilizando métodos como algoritmos genéticos para encontrar la combinación óptima de parámetros.

Resumen de las actividades

Esta estrategia construye un indicador MACD mejorado basado en varios tipos de promedios móviles y genera señales comerciales a través de su cruce con la línea de señal mientras muestra intuitivamente la fuerza de la tendencia. La idea general es clara, y las ventajas son obvias. Sin embargo, la estrategia también tiene ciertas limitaciones, como mala adaptabilidad a los mercados agitados y la falta de medidas de control de riesgos.


/*backtest
start: 2023-05-11 00:00:00
end: 2024-05-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Impulse MACD Strategy [LazyBear]", shorttitle="IMACD_Strategy", overlay=false)

// Function to calculate SMMA
calc_smma(src, len) =>
    var float smma = na
    smma := na(smma[1]) ? ta.sma(src, len) : (smma[1] * (len - 1) + src) / len
    smma

// Function to calculate SMA
	ta.sma(src, len)
    sum = 0.0
    for i = 0 to len - 1
        sum := sum + src[i]
    sum / len

// Function to calculate ZLEMA
calc_zlema(src, length) =>
    var float ema1 = na
    var float ema2 = na
    var float d = na
    ema1 := ta.ema(src, length)
    ema2 := ta.ema(ema1, length)
    d := ema1 - ema2
    ema1 + d

// Function to calculate EMA
calc_ema(src, len) =>
    ema = 0.0
    ema := ta.ema(src, len)
    ema

// Inputs
lengthMA = input(34, title="Length of Moving Average")
lengthSignal = input(9, title="Length of Signal Line")

// Calculations
src = hlc3
hi = calc_smma(high, lengthMA)
lo = calc_smma(low, lengthMA)
mi = calc_zlema(src, lengthMA) 

md = mi > hi ? (mi - hi) : mi < lo ? (mi - lo) : 0
sb = ta.sma(md, lengthSignal)
sh = md - sb
mdc = src > mi ? src > hi ? color.lime : color.green : src < lo ? color.red : color.orange

// Plotting
plot(0, color=color.gray, linewidth=1, title="MidLine")
plot(md, color=mdc, linewidth=2, title="ImpulseMACD", style=plot.style_histogram)
plot(sh, color=color.blue, linewidth=2, title="ImpulseHisto", style=plot.style_histogram)
plot(sb, color=color.maroon, linewidth=2, title="ImpulseMACDCDSignal")

// Execute trades based on signals
if (ta.crossover(md, sb))
    strategy.entry("Buy", strategy.long)
if (ta.crossunder(md, sb))
    strategy.close("Buy")


Relacionados

Más.