Estrategia de cruce de la media móvil del casco

El autor:¿ Qué pasa?, Fecha: 2024-03-22 14:57:10
Las etiquetas:

img

Resumen general

Esta estrategia se basa en las señales de cruce del Hull Moving Average (HMA). El Hull Moving Average es un indicador técnico desarrollado por Alan Hull, que tiene como objetivo reducir el retraso de los promedios móviles tradicionales.

Principio

  1. Calcular la media móvil del casco (HMA)

La HMA se calcula de la siguiente manera:

  • En primer lugar, calcule la media móvil ponderada (WMA) del precio con un período de la mitad del parámetro de entrada longth
  • Luego, calcule la WMA de la WMA anterior con un período de longth
  • Utilice la fórmula: HMA = 2 * WMA (longitud/2) - WMA (longitud)
  • Calcular el WMA del resultado anterior de nuevo con un período de la raíz cuadrada de length para obtener el HMA final
  1. Generación de señales comerciales
  • Cuando el precio de cierre cruza por encima de la HMA, se genera una señal de compra
  • Cuando el precio de cierre se cruza por debajo del HMA, se genera una señal de venta
  1. Ejecución de operaciones basadas en señales
  • Señales de compra: abrir una posición larga
  • Señales de venta: abrir una posición corta

Ventajas

  1. En comparación con el promedio móvil simple y el promedio móvil ponderado, el promedio móvil Hull tiene menos retraso, por lo que puede reaccionar más rápidamente a los cambios de precios, mejorando la capacidad de respuesta de la estrategia.

  2. Al utilizar el cruce de dos HMA con períodos diferentes para generar señales, se puede filtrar eficazmente una gran cantidad de ruido y falsas señales, mejorando la fiabilidad de las señales.

  3. Los parámetros son ajustables y, al ajustar los parámetros del período de las HMA, la estrategia puede adaptarse a diferentes mercados e instrumentos de negociación.

Los riesgos

  1. El Hull Moving Average es un indicador con retraso, que puede generar señales falsas en las primeras etapas de una inversión de tendencia.

  2. Si el período es demasiado largo, la estrategia responderá lentamente; si el período es demasiado corto, puede dar lugar a señales falsas excesivas.

  3. Como todas las estrategias basadas en un solo indicador, esta estrategia puede no funcionar bien en los mercados laterales, generando más señales falsas y perdiendo operaciones.

Direcciones de optimización

  1. Considere la posibilidad de introducir otros indicadores técnicos o factores fundamentales como filtros, como el volumen de operaciones, los indicadores de tendencia, etc., para confirmar aún más la validez de las señales cruzadas de la HMA.

  2. Para la optimización de parámetros, se pueden utilizar métodos como algoritmos genéticos y búsqueda en cuadrícula para encontrar la combinación óptima de parámetros en datos históricos que mejor se adapte al mercado actual.

  3. Incorporar mecanismos de stop-loss y take-profit en la estrategia para controlar el riesgo y el rendimiento de cada operación.

  4. Consideremos la tendencia del mercado: mediante la introducción de indicadores para juzgar las tendencias del mercado, se puede operar en mercados de tendencia y evitar mercados laterales.

Resumen de las actividades

La estrategia de cruce de promedio móvil de Hull es una estrategia de negociación simple y fácil de usar. Con la característica de respuesta rápida de HMA, puede capturar los cambios de precios de manera oportuna. Sin embargo, como todas las estrategias, también tiene sus limitaciones y su rendimiento se verá afectado por los tipos de mercado y la selección de parámetros. En la aplicación práctica, se puede combinar con otros métodos de análisis para confirmar aún más las señales. Al mismo tiempo, las medidas razonables de control de riesgos, como stop-loss y take-profit, gestión de posiciones, etc., también son partes indispensables para el funcionamiento estable 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)


Más.