Estrategia de negociación MACD basada en EVWMA

El autor:¿ Qué pasa?, Fecha: 2024-01-22 10:50:25
Las etiquetas:

img

Resumen general

Esta estrategia es una estrategia de negociación MACD basada en el promedio móvil ponderado por volumen elástico (EVWMA). Utiliza las ventajas de EVWMA y diseña una estrategia con señales comerciales claras y una gran practicidad.

Principios

El indicador EVWMA incorpora información de volumen en el cálculo de promedios móviles, lo que permite que los promedios móviles reflejen con mayor precisión los cambios de precios. Los cálculos de la línea rápida y la línea lenta en esta estrategia se basan en EVWMA.

Análisis de ventajas

La mayor ventaja de esta estrategia es que al aprovechar el poder del indicador EVWMA, los parámetros de configuración de la estrategia MACD se vuelven más estables y las señales comerciales se vuelven más claras.

Análisis de riesgos

El principal riesgo de esta estrategia es que el propio MACD tiene un cierto retraso y no puede capturar rápidamente las reversiones de precios. Además, los parámetros de configuración de EVWMA también afectan el rendimiento de la estrategia.

Para mitigar los riesgos, los parámetros deben ajustarse adecuadamente para tener una diferencia moderada entre las líneas rápidas y lentas. El histograma puede ayudar a juzgar si se necesita un ajuste de parámetros. Además, las estrategias de stop loss también pueden diseñarse para evitar pérdidas individuales excesivamente grandes.

Direcciones de optimización

Los principales aspectos para optimizar esta estrategia incluyen:

  1. Utilice técnicas de ajuste de parámetros adaptativos para ajustar automáticamente los parámetros EVWMA de acuerdo con las condiciones del mercado para garantizar la claridad de la señal.

  2. Aumentar los mecanismos de stop loss para controlar eficazmente las pérdidas individuales.

  3. Incorporar otros indicadores para filtrar señales falsas, por ejemplo, combinar con el volumen para activar señales solo durante cambios significativos de precios.

  4. Optimizar las selecciones de puntos de entrada. Actualmente, la estrategia abre posiciones en cruces de línea cero del MACD. Se puede examinar si el uso de la divergencia funciona mejor.

Conclusión

Esta estrategia utiliza las ventajas del indicador EVWMA para construir una estrategia MACD simple y práctica. Tiene una mejor estabilidad y adaptabilidad. Al mismo tiempo, también tiene el problema de retraso inherente a MACD. Podemos mejorar la robustez de la estrategia a través de la optimización de parámetros adaptativos, el diseño de stop loss, el filtrado de señales y otros aspectos.


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

//@version=4
strategy("QuantNomad - EVWMA MACD Strategy", shorttitle = "EVWMA MACD", overlay = false)

// Inputs
fast_sum_length = input(10, title = "Fast Sum Length",  type = input.integer)
slow_sum_length = input(20, title = "Slow Sum Length",  type = input.integer)
signal_length   = input(9,  title = "Signal Smoothing", type = input.integer, minval = 1, maxval = 50)

// Calculate Volume Period
fast_vol_period = sum(volume, fast_sum_length)
slow_vol_period = sum(volume, slow_sum_length)

// Calculate EVWMA
fast_evwma = 0.0
fast_evwma := ((fast_vol_period - volume) * nz(fast_evwma[1], close) + volume * close) / (fast_vol_period)

// Calculate EVWMA
slow_evwma = 0.0
slow_evwma := ((slow_vol_period - volume) * nz(slow_evwma[1], close) + volume * close) / (slow_vol_period)

// Calculate MACD
macd   = fast_evwma - slow_evwma
signal = ema(macd, signal_length)
hist   = macd - signal

// Plot 
plot(hist,   title = "Histogram", style = plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? #26A69A : #B2DFDB) : (hist[1] < hist ? #FFCDD2 : #EF5350) ), transp=0 )
plot(macd,   title = "MACD",      color = #0094ff, transp=0)
plot(signal, title = "Signal",    color = #ff6a00, transp=0)

// Strategy
strategy.entry("Long",   true, when = crossover(fast_evwma, slow_evwma))
strategy.entry("Short", false, when = crossunder(fast_evwma, slow_evwma))

Más.