Estrategia de cruce de medias móviles de Hull


Fecha de creación: 2024-03-22 14:57:10 Última modificación: 2024-03-22 14:57:10
Copiar: 2 Número de Visitas: 1150
1
Seguir
1617
Seguidores

Estrategia de cruce de medias móviles de Hull

Descripción general de la estrategia

La estrategia utiliza dos líneas de HMA de diferentes períodos, que generan una señal de compra cuando la HMA de período más corto cruza la HMA de período más largo de abajo hacia arriba y, a su vez, generan una señal de venta.

Principio de estrategia

  1. Calcula el promedio móvil de Hull (HMA)

El proceso de cálculo de la HMA es el siguiente:

  • Medias móviles ponderadas calculadas previamente (WMA) con un ciclo de media longitud de los parámetros de entrada
  • Calculando el WMA de la WMA, el período es length
  • Utiliza la fórmula: HMA = 2 * WMA (length/2) - WMA (length)
  • Para el resultado anterior, vuelva a calcular el WMA, con el período como la raíz cuadrada de la longitud, y obtenga el HMA final.
  1. Generación de señales de negociación
  • Cuando el precio de cierre está en HMA, se genera una señal de compra
  • Cuando el precio de cierre se cruza por debajo de la HMA, genera una señal de venta
  1. Ejecución de las operaciones según las señales de negociación
  • Las señales de compra: abrir posiciones de más de la cabeza
  • La venta de señales: posiciones abiertas

Ventajas estratégicas

  1. Los promedios móviles de Hull tienen menos retraso que los promedios móviles simples y los promedios móviles ponderados, por lo que pueden reaccionar más rápidamente a los cambios en los precios, lo que aumenta la sensibilidad de la estrategia.

  2. La intersección de dos líneas HMA de diferentes periodos genera una señal que puede filtrar eficazmente algunos ruidos y falsas señales, lo que mejora la fiabilidad de la señal.

  3. Los parámetros son ajustables y se pueden adaptar a diferentes mercados y variedades de transacciones mediante el ajuste de los parámetros de ciclo de la HMA.

Riesgo estratégico

  1. El promedio móvil de Hull es un indicador de retraso que puede dar una señal errónea en las primeras etapas de la reversión de la tendencia.

  2. La selección incorrecta de los parámetros puede causar un mal rendimiento de la estrategia. Un ciclo demasiado largo puede hacer que la estrategia sea lenta en responder, y un ciclo demasiado corto puede causar demasiadas señales falsas.

  3. Al igual que todas las estrategias basadas en un solo indicador, esta estrategia puede funcionar mal en mercados convulsionados, generando más señales falsas y pérdidas.

Dirección de optimización

  1. Se puede considerar la introducción de otros indicadores técnicos o factores fundamentales como condiciones de filtrado, como volumen de operaciones, indicadores de tendencia, etc., para confirmar aún más la eficacia de la señal cruzada de HMA.

  2. Para la optimización de parámetros, se pueden utilizar métodos como algoritmos genéticos, búsqueda de grillas y otros para optimizar los parámetros en los datos históricos y encontrar la combinación de parámetros más adecuada para el mercado actual.

  3. Incluir en la estrategia mecanismos de stop loss y stop-loss para controlar el riesgo y los beneficios de una sola operación.

  4. Teniendo en cuenta la tendencia del mercado, se puede evaluar el indicador mediante la introducción de la tendencia del mercado, comerciar en el mercado de tendencia y evitar el mercado de la oscilación.

Resumir

La estrategia de cruce de la media móvil de Hull es una estrategia de negociación simple y fácil de usar, que puede capturar los cambios en los precios de manera más oportuna gracias a las características de respuesta rápida de la HMA. Pero, como todas las estrategias, también tiene sus limitaciones. Su rendimiento se ve afectado por el tipo de mercado y la elección de los parámetros.

Código Fuente de la Estrategia
/*backtest
start: 2023-03-16 00:00:00
end: 2024-03-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//Basic Hull Ma Pack tinkered by InSilico 
strategy("RKTD BETA - Hull Suite by InSilico", overlay=true)

//INPUT
src = input(close, title="Source")
modeSwitch = input("Ehma", title="Hull Variation", options=["Hma", "Thma", "Ehma"])
length = input(200, title="Length(180-200 for floating S/R , 55 for swing entry)")
lengthMult = input(1.0, title="Length multiplier (Used to view higher timeframes with straight band)")

useHtf = input(false, title="Show Hull MA from X timeframe? (good for scalping)")
htf = input("240", title="Higher timeframe", type=input.resolution)

switchColor = input(true, "Color Hull according to trend?")
candleCol = input(false,title="Color candles based on Hull's Trend?")
visualSwitch  = input(true, title="Show as a Band?")
thicknesSwitch = input(1, title="Line Thickness")
transpSwitch = input(40, title="Band Transparency",step=5)

// Alert Messages
longAlertMessage = '{"base": "BTC", "quote": "USDT", "price": ' + tostring(close) + ', "action": "long", "orderType": "market", "close":true}'
shortAlertMessage = '{"base": "BTC", "quote": "USDT", "price": ' + tostring(close) + ', "action": "short", "orderType": "market", "close":true}'

//FUNCTIONS
//HMA
HMA(_src, _length) =>  wma(2 * wma(_src, _length / 2) - wma(_src, _length), round(sqrt(_length)))
//EHMA    
EHMA(_src, _length) =>  ema(2 * ema(_src, _length / 2) - ema(_src, _length), round(sqrt(_length)))
//THMA    
THMA(_src, _length) =>  wma(wma(_src,_length / 3) * 3 - wma(_src, _length / 2) - wma(_src, _length), _length)
    
//SWITCH
Mode(modeSwitch, src, len) =>
      modeSwitch == "Hma"  ? HMA(src, len) :
      modeSwitch == "Ehma" ? EHMA(src, len) : 
      modeSwitch == "Thma" ? THMA(src, len/2) : na

//OUT
_hull = Mode(modeSwitch, src, int(length * lengthMult))
HULL = useHtf ? security(syminfo.ticker, htf, _hull) : _hull
MHULL = HULL[0]
SHULL = HULL[2]

//COLOR
hullColor = switchColor ? (HULL > HULL[2] ? #00ff00 : #ff0000) : #ff9800

//PLOT
///< Frame
Fi1 = plot(MHULL, title="MHULL", color=hullColor, linewidth=thicknesSwitch, transp=50)
Fi2 = plot(visualSwitch ? SHULL : na, title="SHULL", color=hullColor, linewidth=thicknesSwitch, transp=50)
alertcondition(crossover(MHULL, SHULL), title="Hull trending up.", message="Hull trending up.")
alertcondition(crossover(SHULL, MHULL), title="Hull trending down.", message="Hull trending down.")
///< Ending Filler
fill(Fi1, Fi2, title="Band Filler", color=hullColor, transp=transpSwitch)
///BARCOLOR
barcolor(color = candleCol ? (switchColor ? hullColor : na) : na)

// Define Buy and Sell Conditions based on crossovers
buyCondition = crossover(MHULL, SHULL)
sellCondition = crossunder(MHULL, SHULL)

// Plotting the Hull Moving Average (HMA)
plot(MHULL, title="MHULL", color=hullColor, linewidth=thicknesSwitch)
plot(SHULL, title="SHULL", color=hullColor, linewidth=thicknesSwitch, transp=transpSwitch)
fill(Fi1, Fi2, title="Band Filler", color=hullColor, transp=transpSwitch)

// Execute Strategy based on Buy and Sell Conditions
strategy.entry("Buy", strategy.long, when=buyCondition, alert_message=longAlertMessage)
strategy.entry("Sell", strategy.short, when=sellCondition, alert_message=shortAlertMessage)

// Additional elements like bar coloring remain unchanged
barcolor(color = candleCol ? (switchColor ? hullColor : na) : na)