Esta estrategia toma decisiones comerciales basadas en la tendencia del histograma MACD

El autor:¿ Qué pasa?, Fecha: 2024-01-25 14:31:57
Las etiquetas:

img

Resumen general

Esta estrategia toma decisiones comerciales basadas en la tendencia del Histograma MACD. Utiliza las tendencias ascendentes y descendentes del Histograma para generar señales de compra y venta.

Estrategia lógica

La estrategia utiliza la línea rápida, la línea lenta y el histograma del indicador MACD. Primero calcular la EMA rápida y la EMA lenta. Luego restar la EMA lenta de la EMA rápida para obtener MACD y restar la señal que es el promedio móvil de MACD para obtener el histograma.

Cuando el histograma continúa subiendo durante el período establecido, se genera una señal de compra. Esto indica que el MACD está acelerando para romper su línea de señal hacia arriba, prediciendo que los precios pueden subir.

Cuando el histograma continúa disminuyendo durante el período establecido, se genera una señal de venta. Esto indica que el MACD está acelerando para romper su línea de señal hacia abajo, prediciendo que los precios pueden caer.

Análisis de ventajas

La estrategia tiene las siguientes ventajas:

  1. Utilizando la característica de tendencia del histograma MACD, puede capturar los puntos de inflexión de los cambios de precios y mejorar la rentabilidad.

  2. Combinado con la condición de aumento o caída consecutivos del histograma, algunas operaciones ruidosas pueden filtrarse para reducir las pérdidas innecesarias.

  3. Al permitir la personalización de los parámetros MACD y el período de tendencia del histograma, se puede ajustar para adaptarse a diferentes productos y sesiones de negociación.

  4. La lógica de la estrategia es simple y clara, fácil de entender y modificar, y también conveniente de combinar con otros indicadores o estrategias.

Análisis de riesgos

La estrategia también tiene algunos riesgos:

  1. Las señales erróneas pueden ocurrir cuando los precios oscilan en el rango.

  2. Después de que el histograma suba o baje, la línea MACD puede no poder romper la línea de señal, incapaz de salir con ganancia.

  3. El coste de negociación y el deslizamiento no se tienen en cuenta.

  4. Los parámetros deben ser optimizados para productos y sesiones.

Estos riesgos se pueden controlar y reducir mediante métodos como combinar con indicadores de tendencia, establecer un mecanismo de stop loss, optimizar parámetros, etc.

Direcciones de optimización

La estrategia se puede optimizar en los siguientes aspectos:

  1. Combinar otros indicadores para determinar la dirección general de la tendencia, evitando el comercio en rangos oscilantes.

  2. Agregue el mecanismo de stop loss, por ejemplo, stop loss cuando el MACD rompe la línea de señal hacia abajo.

  3. Optimizar los parámetros del MACD para adaptarse a los productos de diferentes frecuencias, por ejemplo, acortar los parámetros de período para los datos de alta frecuencia.

  4. Optimizar el período mínimo de aumento o caída consecutivo del histograma, equilibrando la frecuencia y fiabilidad de la señal.

  5. Pruebe la lógica de señales traseras después de un fallo de escape, es decir, señal trasera inversa después de la inversión del histograma.

  6. Combinar otros indicadores como el volumen o los indicadores de volatilidad para medir el calor del mercado y filtrar las señales.

Conclusión

En conclusión, la estrategia de tendencia del histograma del MACD realiza el juicio de los puntos de inflexión del cambio de precio al capturar los cambios de tendencia del histograma. La combinación de la optimización de parámetros e indicadores de combinación puede filtrar eficazmente las señales incorrectas. Como una herramienta de juicio auxiliar importante en el comercio cuantitativo, esta estrategia proporciona una idea de comercio simple y práctica utilizando el histograma del MACD.


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

//@version=4
//study(title="Histogram Strategy by Sedkur", shorttitle="Histogram Strategy by Sedkur")
strategy (title="Histogram Trends Strategy by Sedkur", shorttitle="Histogram Trends Strategy by Sedkur")


/// Getting inputs
dyear = input(title="Year", type=input.integer, defval=2017, minval=1950, maxval=2500)
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
hist_length = input(title="Trend of Histogram Number", type=input.integer, defval=1, minval=1, maxval=100)
//buyh = input(title="Buy histogram value", type=input.float, defval=0.0, minval=-1000, maxval=1000, step=0.1)
//sellh = input(title="Sell histogram value", type=input.float, defval=0.0, minval=-1000, maxval=1000, step=0.1)
src = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
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 = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00

/// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal

plot(hist, title="Histogram", style=plot.style_columns, 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)

//bullish = hist[1] <= hist and buyh<=hist?true:false
//bearish = hist[1] >= hist and sellh>=hist?true:false
bull=0
bear=0


for i=0 to hist_length
    if (hist[i+1] <= hist[i])
        bull:=bull+1
bullish = bull==hist_length+1?true:false   

for j=0 to hist_length
    if (hist[j+1] >= hist[j])
        bear:=bear+1
bearish = bear==hist_length+1?true:false 



//bullish = hist[1] <= hist and hist[2] <= hist and hist[3] <= hist and hist[4] <= hist and hist[5] <= hist?true:false
//bearish = hist[1] >= hist and hist[2] >= hist and hist[3] >= hist and hist[4] >= hist and hist[5] >= hist?true:false

strategy.entry("buy", strategy.long, comment="buy", when = bullish and year>=dyear)
strategy.entry("sell", strategy.short, comment="sell", when = bearish and year>=dyear)


Más.