Estrategia de seguimiento de tendencias de la media móvil de Hull


Fecha de creación: 2023-09-16 18:41:33 Última modificación: 2023-09-16 18:41:33
Copiar: 0 Número de Visitas: 696
1
Seguir
1617
Seguidores

Descripción general

La estrategia de seguimiento de la tendencia de las medias móviles de Hull es una estrategia de negociación cuantitativa que utiliza las medias móviles de Hull para determinar la dirección de la tendencia del mercado y emitir señales de compra y venta. La estrategia es capaz de capturar la tendencia de la línea media y larga, establecer posiciones en la etapa inicial de la tendencia y cerrar las posiciones antes de que la tendencia se revierta.

El principio

La estrategia utiliza a la vez las medias móviles de Hull y las medias móviles ordinarias para determinar la dirección de la tendencia. Es una señal de compra cuando el Hull MA de período corto atraviesa el Hull MA de período largo. Es una señal de venta cuando el Hull MA de período corto atraviesa el Hull MA de período largo.

Las medias móviles normales se utilizan para determinar la dirección de la tendencia inmediata. Cuando el EMA de corto período atraviesa el EMA de largo período, es un alza, y cuando el EMA de corto período atraviesa el EMA de largo período, es una baja.

Además, la estrategia también utiliza el canal de la entidad de la línea K para determinar la amplitud de la fluctuación del mercado y evitar el error de negociación en un mercado convulso.

Las ventajas

  • El promedio móvil de Hull es más sensible a los cambios en los precios y puede capturar los cambios de tendencia antes de tiempo.

  • La combinación de Hull MA y EMA permite filtrar las señales falsas.

  • Utilice el canal de línea K para determinar la oscilación y evitar el comercio frecuente en la liquidación.

  • El uso de un método de seguimiento de tendencias permite capturar continuamente las ganancias de las tendencias de línea media y larga.

El riesgo

  • Los promedios móviles están rezagados y pueden perderse el punto de entrada óptimo para una reversión de la tendencia.

  • El juez de momento de la conmoción es inexacto, y puede haber un error de transacción en la consolidación.

  • Las transacciones son menos frecuentes y más propensas a sufrir pérdidas individuales.

  • El problema es que no se puede aprovechar la oscilación de la línea corta para obtener ganancias.

Cómo hacer frente

  • Optimización de los parámetros periódicos de las medias móviles para buscar tendencias de respuesta oportuna.

  • El uso de otros indicadores para determinar la oscilación, como el RSI, BBANDS, etc.

  • El uso de una gestión de fondos activa para controlar el porcentaje de pérdidas individuales.

  • El uso de otras estrategias para capturar ganancias de corto plazo puede ser complementario.

Resumir

La estrategia de seguimiento de la tendencia de la media móvil de Hull permite un seguimiento eficaz de la tendencia de la línea media a través de la combinación de Hull MA y EMA. La estrategia de seguimiento de la tendencia de la media móvil de Hull MA y EMA permite un seguimiento eficaz de la tendencia de la línea media a través de la combinación de Hull MA y EMA.

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

//@version=2

// strategy(title='HULLMiguel 2019/ Strategy v3', shorttitle='HULLMiguel_2019_Strategy', overlay=true, pyramiding=0, default_qty_value=1000, initial_capital=1000, currency=currency.USD)

//Candle body resistance Channel-----------------------------//
len = 34
src = input(close, title="Candle body resistance Channel")
out = sma(src, len)
last8h = highest(close, 13)
lastl8 = lowest(close, 13)
bearish = cross(close,out) == 1 and falling(close, 1)
bullish = cross(close,out) == 1 and rising(close, 1)
channel2=input(false, title="Bar Channel On/Off")
ul2=plot(channel2?last8h:last8h==nz(last8h[1])?last8h:na, color=black, linewidth=1, style=linebr, title="Candle body resistance level top", offset=0)
ll2=plot(channel2?lastl8:lastl8==nz(lastl8[1])?lastl8:na, color=blue, linewidth=1, style=linebr, title="Candle body resistance level bottom", offset=0)
//fill(ul2, ll2, color=black, transp=95, title="Candle body resistance Channel")

//-----------------Support and Resistance 
RST = input(title='Support / Resistance length:',  defval=15) 
RSTT = valuewhen(high >= highest(high, RST), high, 0)
RSTB = valuewhen(low <= lowest(low, RST), low, 0)
RT2 = plot(RSTT, color=RSTT != RSTT[1] ? na : red, linewidth=1, offset=+0)
RB2 = plot(RSTB, color=RSTB != RSTB[1] ? na : green, linewidth=1, offset=0)

//--------------------Trend colour ema------------------------------------------------// 
src0 = close, len0 = input(13, minval=1, title="EMA 1")
ema0 = ema(src0, len0)
direction = rising(ema0, 2) ? +1 : falling(ema0, 2) ? -1 : 0
plot_color = direction > 0  ? lime: direction < 0 ? red : na
plot(ema0, title="EMA", style=line, linewidth=3, color = plot_color)

//-------------------- ema 2------------------------------------------------//
src02 = close, len02 = input(21, minval=1, title="EMA 2")
ema02 = ema(src02, len02)
direction2 = rising(ema02, 2) ? +1 : falling(ema02, 2) ? -1 : 0
plot_color2 = direction2 > 0  ? green: direction2 < 0 ? red : na
plot(ema02, title="EMA Signal 2", style=line, linewidth=2, color = plot_color2)

//=============Hull MA//
show_hma = input(false, title="Display Hull MA Set:")
hma_src = input(close, title="Hull MA's Source:")
hma_base_length = input(16, minval=1, title="Hull MA's Base Length:")
hma_length_scalar = input(10, minval=0, title="Hull MA's Length Scalar:")
hullma(src, length)=>wma(2*wma(src, length/2)-wma(src, length), round(sqrt(length)))
plot(not show_hma ? na : hullma(hma_src, hma_base_length+hma_length_scalar*6), color=black, linewidth=5, title="Hull MA")
dif_close_hull= (close-hullma(hma_src, hma_base_length+hma_length_scalar*6))/close
Percent_dif = (dif_close_hull/(hullma(hma_src, hma_base_length+hma_length_scalar*6)))
//direction3 = Percent_dif>0 ? +1 : Percent_dif<0 ? -1 : 0
//plot_color3 = direction3 > 0  ? lime: direction3 < 0 ? red : na
//plot(dif_close_hull, title="dif close hull", style=line, linewidth=6, color = plot_color3)

//============ signal Generator ==================================//
Piriod=input('720')
ch1 = security(syminfo.tickerid, Piriod, open)
ch2 = security(syminfo.tickerid, Piriod, close)
plot(ch1, title="EMA Signal 2", style=line, linewidth=1, color = blue)
//longCondition = crossover(security(tickerid, Piriod, close),security(tickerid, Piriod, open))
//plot((close-ema02)/ema02+close)
longCondition = direction > 0 and direction2> 0

if (longCondition)
    strategy.entry("BUY", strategy.long)
//shortCondition = crossunder(security(tickerid, Piriod, close),security(tickerid, Piriod, open))
shortCondition = direction < 0 and direction2 < 0

if (shortCondition)
    strategy.entry("SELL", strategy.short)

///////////////////////////////////////////////////////////////////////////////////////////