Estrategia MACD de desglose del impulso

El autor:¿ Qué pasa?, Fecha: 2023-10-20 17:12:31
Las etiquetas:

img

Resumen general

La estrategia de desglose de momento del MACD utiliza principalmente la combinación del indicador MACD y el indicador de momento para generar señales comerciales, pertenecientes a una estrategia de seguimiento de tendencias. Esta estrategia primero calcula la EMA rápida y la EMA lenta, luego calcula el valor MACD y calcula la línea de señal del MACD. Al mismo tiempo, calcula el valor de momento del precio. Cuando el valor de momento cruza el nivel cero junto con la diferencia MACD, genera una señal de compra. Cuando el valor de momento cruza el nivel cero junto con la diferencia MACD, genera una señal de venta. Esto pertenece a un mecanismo de doble confirmación para producir señales comerciales.

Estrategia lógica

Esta estrategia se basa principalmente en la combinación de los indicadores MACD y Momentum.

El indicador MACD es un indicador de tendencia, que consiste en la EMA rápida, la EMA lenta y el histograma MACD. La EMA rápida generalmente tiene un parámetro de 12 días y la EMA lenta tiene un parámetro de 26 días.

EMA rápido = EMA ((precio de cierre, 12)

EMA lento = EMA ((precio de cierre, 26)

El valor de las variaciones de la EMA se calculará en función de las variaciones de las variaciones de la EMA.

La línea de señal = EMA ((MACD, 9)

Cuando la EMA rápida cruza por encima de la EMA lenta, significa que la tendencia alcista a corto plazo es más fuerte que la tendencia a largo plazo, que es una señal de compra. Cuando la EMA rápida cruza por debajo de la EMA lenta, significa que la tendencia bajista a largo plazo es más fuerte que la tendencia a corto plazo, que es una señal de venta.

El indicador Momentum refleja la velocidad del movimiento de los precios, y su fórmula de cálculo es:

Impulso = Precio de cierre de hoy - Precio de cierre de hace N días

Cuando el precio de cierre de hoy sube por encima del precio de cierre de hace N días, el valor de impulso es positivo, lo que indica una tendencia alcista.

Esta estrategia combina el indicador MACD con el indicador Momentum. Los criterios para generar señales comerciales son: cuando la diferencia entre la diferencia MACD y la diferencia de momento cruza por encima del nivel cero, genera una señal de compra, formando un cruce por encima de cero. Cuando la diferencia cruza por debajo del nivel cero, genera una señal de venta, formando un cruce por debajo de cero. Esto pertenece a un mecanismo de confirmación dual para producir señales comerciales, que puede filtrar algunas señales falsas y lograr seguir la tendencia.

Análisis de ventajas

Las ventajas de esta estrategia incluyen:

  1. La combinación de los indicadores MACD y Momentum logra seguir la tendencia, evitando operaciones ineficaces cuando el precio del activo simplemente oscila sin una dirección clara.

  2. Basado en el mecanismo de doble confirmación, puede filtrar algo de ruido y evitar interferencias de señales falsas.

  3. Los parámetros MACD son ajustables, que se pueden optimizar para diferentes productos y ciclos comerciales, lo que lo hace altamente adaptable.

  4. Adopta mecanismos de negociación de compra y venta para captar las tendencias en ambas direcciones.

  5. La estrategia es fácil de entender con menos parámetros, adecuada para que los principiantes aprendan.

Análisis de riesgos

Esta estrategia también tiene algunos riesgos:

  1. Tanto el MACD como el Momentum pertenecen a indicadores que siguen tendencias. Pueden generar operaciones más ineficientes cuando el mercado ve violentas fluctuaciones o carece de una tendencia clara.

  2. Aunque la combinación de dos indicadores puede filtrar señales falsas, también puede perder algunas oportunidades de negociación.

  3. Cuando las principales tendencias del ciclo se invierten, el indicador MACD puede retrasarse, lo que conduce a pérdidas comerciales.

  4. La frecuencia de negociación puede ser alta, lo que requiere atención a la gestión del capital y al control de las comisiones.

  5. Los parámetros inadecuados pueden dar lugar a una sensibilidad excesiva o retraso.

Direcciones de optimización

La estrategia se puede optimizar en los siguientes aspectos:

  1. Optimizar los parámetros MACD para encontrar la mejor combinación de parámetros para diferentes productos y ciclos de negociación.

  2. Optimizar el parámetro de período del indicador de impulso para equilibrar la sensibilidad y el filtrado de ruido.

  3. Añadir mecanismos de stop loss para controlar la pérdida máxima por operación.

  4. Añadir módulos de gestión de posiciones para escalar el tamaño de la operación a lo largo de la tendencia.

  5. Agregue filtros como el indicador ATR para evitar operaciones equivocadas en mercados agitados.

  6. Incorporar otros indicadores como las bandas de Bollinger y el RSI para formar señales comerciales de confirmación múltiple.

  7. Añadir bucles de optimización para la iteración y optimización de parámetros continuos.

Resumen de las actividades

La estrategia MACD de Descomposición de Momentum implementa la negociación de tendencia siguiendo las fortalezas de los indicadores MACD y Momentum. Su mecanismo de confirmación dual puede filtrar eficazmente el ruido del mercado y evitar una negociación ineficiente. Esta estrategia es relativamente simple y fácil de entender, especialmente adecuada para principiantes.


/*backtest
start: 2022-10-13 00:00:00
end: 2023-10-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="MACD MOMENTUM TEST", shorttitle="MACD MOM TEST")

// Getting inputs
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
len = input(title="Momentum", type=input.integer, defval=10)
src1 = input(title="Source MACD", type=input.source, defval=close)
src2 = input(title="Source MOMENTUM", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 14)
sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=false)

// Plot colors
col_grow_above = #0c8e61
col_grow_below = #ffcdd2
col_fall_above = #b2dfdb
col_fall_below = #d42f28
col_macd = #ffffff
col_signal = #d42f28
col_mom = #fbc02d

// Calculating
fast_ma = sma_source ? sma(src1, fast_length) : ema(src1, fast_length)
slow_ma = sma_source ? sma(src1, slow_length) : ema(src1, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal
mom = src2 - src2[len]


ma(s,l) => ema(s,l)
sema = ma( src1, fast_length )
lema = ma( src1, slow_length )
i1 = sema + mom + ma( src1 - sema, fast_length )
i2 = lema + mom + ma( src1 - lema, slow_length )
macdl = i1 - i2
macd1 =sema - lema

delta = mom - macd1

// Strategy
    // Backtest
FromYear  = input(defval = 2001, 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 exampel
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create function "within window of time"

if (crossover(delta, 0))
    strategy.entry("Buy", true, when=window(), comment="Buy")

if (crossunder(delta, 0))
    strategy.close_all(when=window())

// Plot
//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)
plot(hist, title="Histogram", style=plot.style_histogram, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 )
plot(macd, title="MACD", color=col_macd, transp=0)
plot(signal, title="Signal", color=col_signal, transp=0)
plot(mom, color=col_mom, title="Mom")






Más.