Esta estrategia se basa en las señales de cruce de Hull Moving Average (HMA). Genera señales de negociación cuando dos líneas HMA con períodos diferentes se cruzan entre sí. HMA es un indicador avanzado de promedio móvil que reduce el retraso a través de una combinación especial de promedios móviles ponderados (WMA), proporcionando señales de tendencia de mercado más rápidas y más suaves.
El núcleo de la estrategia radica en capturar los puntos de inversión de tendencia del mercado utilizando cruces de HMA de diferentes períodos. El cálculo de HMA implica tres pasos: primero calcular un WMA de medio período, luego calcular un WMA de período completo y, finalmente, calcular otro WMA con un período igual a la raíz cuadrada del período original utilizando una combinación especial de los dos primeros WMA. Las señales de compra se generan cuando el HMA rápido (períodos predeterminados 9) cruza por encima del HMA lento (períodos predeterminados 16) y las señales de venta cuando el HMA rápido cruza por debajo del HMA lento.
Esta es una estrategia de negociación cuantitativa basada en cruces HMA, que proporciona señales de negociación más oportunas al reducir el retraso de las medias móviles tradicionales.
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-28 00:00:00 period: 2d basePeriod: 2d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Hull Moving Average Crossover", overlay=true) fastLength = input.int(9, "Fast HMA Length", minval=1) slowLength = input.int(16, "Slow HMA Length", minval=1) hma(src, length) => wma1 = ta.wma(src, length / 2) wma2 = ta.wma(src, length) ta.wma(2 * wma1 - wma2, math.floor(math.sqrt(length))) fastHMA = hma(close, fastLength) slowHMA = hma(close, slowLength) plot(fastHMA, color=color.blue, title="Fast HMA") plot(slowHMA, color=color.red, title="Slow HMA") longCondition = ta.crossover(fastHMA, slowHMA) shortCondition = ta.crossunder(fastHMA, slowHMA) if (longCondition) strategy.entry("Long", strategy.long) if (shortCondition) strategy.entry("Short", strategy.short) plotshape(longCondition, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small) plotshape(shortCondition, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small)