Estrategia de negociación de promedio móvil de Hull en líneas de tiempo cruzadas


Fecha de creación: 2023-11-07 16:54:14 Última modificación: 2023-11-07 16:54:14
Copiar: 0 Número de Visitas: 697
1
Seguir
1617
Seguidores

Estrategia de negociación de promedio móvil de Hull en líneas de tiempo cruzadas

Descripción general

Esta estrategia se basa en el indicador de promedios móviles de Hull, calcula el Hull MA en diferentes ejes de tiempo y compara el movimiento del Hull MA en diferentes ejes de tiempo para descubrir cambios en la tendencia. Genera una señal de compra cuando el Hull MA de período corto atraviesa el Hull MA de período largo; genera una señal de venta cuando el Hull MA de período corto atraviesa el Hull MA de período largo.

Principio de estrategia

  1. Parámetros de entrada: Hull MA Periodo, HMA2 en el eje de tiempo Resolution2, HMA3 en el eje de tiempo Resolution3

  2. Calcula el valor de Hull MA HMA en la línea K actual

  3. Calcula el MA de Hull HMA2 en la línea de tiempo Resolution 2

  4. Calcula el valor de Hull MA HMA3 en la línea de tiempo Resolution3

  5. Comparación de las relaciones de tamaño entre HMA, HMA2 y HMA3

  6. Cuando HMA>HMA2>HMA3 genera una señal de compra

  7. Cuando HMA < HMA2 < HMA3, genera una señal de venta

  8. En la parte superior izquierda de la interfaz se muestran los valores de Hull MA y las señales en diferentes horarios

  9. Usar colores para distinguir el estado de caída y salida

Análisis de las ventajas

  1. El uso de múltiples ejes de tiempo puede filtrar falsos avances y evitar que se encuentre en la trampa.

  2. Los parámetros de la línea de tiempo se pueden personalizar para diferentes períodos.

  3. La señal se muestra en tiempo real y es intuitiva.

  4. Visualizar el movimiento de la Hull MA para determinar la tendencia actual.

Análisis de riesgos

  1. La configuración inadecuada de los parámetros puede conducir a operaciones demasiado frecuentes.

  2. El Hull MA de gran ciclo está rezagado y puede haber perdido el punto de inflexión de la tendencia.

  3. La estrategia genera falsas señales cuando el toro y el oso se convierten.

  4. La estrategia de la clase de la brecha es fácilmente falsificada para entrar en la celda.

  5. Las comisiones de transacción no se tienen en cuenta, lo que afecta a los ingresos reales.

Se puede reducir el riesgo mediante la optimización de los parámetros, la combinación de otros indicadores como filtros y la liberación adecuada de la línea de parada.

Dirección de optimización

  1. Optimización de los parámetros del ciclo Hull MA para adaptarse a diferentes ciclos y fluctuaciones.

  2. Aumentar el conocimiento de los indicadores de transacción para evitar falsas brechas.

  3. Aumentar los indicadores de conmoción para determinar la intensidad de la tendencia.

  4. El aumento de los modelos de aprendizaje automático para determinar el momento de comprar y vender.

  5. En combinación con los indicadores de sentimiento, descubre los puntos calientes del mercado.

  6. Ajuste de la estrategia de detener los pérdidas y optimización de la gestión de riesgos.

  7. Las condiciones de compra y venta personalizadas, combinadas con otras señales de indicadores.

  8. Aumentar las estrategias de negociación basadas en canales y bandas de precios.

Resumir

Esta estrategia se basa en la comparación de los indicadores de Hull MA con el movimiento de la línea media en diferentes ejes temporales, para determinar la dirección de la tendencia actual y generar una señal de compra y venta cuando la tendencia se revuelve. En comparación con una sola línea media, el Hull MA de múltiples ejes temporales puede filtrar eficazmente las brechas falsas. Sin embargo, la estrategia también tiene problemas con la configuración de parámetros, el juicio de tendencias, etc.

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

//@version=4
//
strategy("wtfBUYorSELLffs",overlay=true,currency="USD",initial_capital=100000,default_qty_type=strategy.percent_of_equity,default_qty_value=100,commission_type=strategy.commission.percent,commission_value=0.1)
Period=input(title="Hull MA Period",type=input.integer,defval=6,minval=1)
Resolution2=input(title="HMA2 Resolution", type=input.resolution,defval="60")
Resolution3=input(title="HMA3 Resolution", type=input.resolution,defval="240")
Price=input(title="Source of Price",type=input.source,defval=open)
xOffset       = input(40, title="Panel offset (X-Axis)")
yOffset       = input(0, title="Panel offset (y-Axis)")
lightgray = #D3D3D3FF
pnlTextColor = color.silver
pnlColor = color.black
HMA = hma(Price,Period)
HMA2 = security(syminfo.tickerid, Resolution2, HMA,barmerge.gaps_off,barmerge.lookahead_off)
HMA3 = security(syminfo.tickerid, Resolution3, HMA,barmerge.gaps_off,barmerge.lookahead_off) 
HUP = HMA > HMA[1]
H1UP = security(syminfo.tickerid, Resolution2, HUP,barmerge.gaps_off,barmerge.lookahead_off)
H2UP = security(syminfo.tickerid, Resolution3, HUP,barmerge.gaps_off,barmerge.lookahead_off) 

int barSize = timeframe.isdaily ? timeframe.multiplier*86400000 : 
           timeframe.isseconds? timeframe.multiplier*1000 :
           timeframe.isminutes? timeframe.multiplier*60000 : (time[0]-time[1])
int   lapos_x = timenow + barSize*xOffset
float lapos_y = highest(20) + yOffset*syminfo.mintick * syminfo.pointvalue
f_draw_infopanel(_x, _y, _line, _text)=>
    _rep_text = ""
    for _l = 0 to _line
        _rep_text := _rep_text + "\n"
    _rep_text := _rep_text + _text
    // var label _la = na
    // label.delete(_la)
//     _la := label.new(
//          x=_x, y=_y, 
//          text=_rep_text, xloc=xloc.bar_time, yloc=yloc.price, 
//          color=pnlColor, style=label.style_labelup, textcolor=pnlTextColor, size=size.normal)
// f_draw_infopanel(lapos_x, lapos_y, 8, "╚═══════════════════════╝")
f_draw_infopanel(lapos_x, lapos_y, 6,  "HMA3 on TF " + Resolution3 + "  = " + tostring(HMA3,"#.####") + (H2UP ? " BUY" : " SELL"))
f_draw_infopanel(lapos_x, lapos_y, 4,  "HMA2 on TF " + Resolution2 + "  = " +  tostring(HMA2,"#.####") + (H1UP ? " BUY" : " SELL"))
f_draw_infopanel(lapos_x, lapos_y, 2,  "HMA1 on TF " + timeframe.period + "  = " + tostring(HMA,"#.####") + (HUP ? " BUY" : " SELL"))
f_draw_infopanel(lapos_x, lapos_y, 0,  "╔═════════ HMA(" + tostring(Period,"#") +") ════════╗")
change_color=HMA>HMA3?color.green:color.red
change_color2=HMA2>HMA3?color.lime:color.yellow
plot1=plot(HMA3,color=change_color2,title="3 Hull MA Line",linewidth=2,transp=75)
plot2=plot(HMA2,color=change_color,title="2 Hull MA Line",linewidth=2,transp=75)
plot3=plot(HMA,color=color.white,title="Hull MA Line",linewidth=2,transp=75)
fill(plot1,plot3,color=change_color,transp=90)
fill(plot2,plot3,color=change_color2,transp=75)
if (H2UP and H1UP and HUP)
    strategy.entry("BUY",strategy.long)
if (not H2UP and not H1UP and not HUP)
    strategy.entry("SELL",strategy.short)