Estrategia de compra y venta del casco de cruce de plazos

El autor:¿ Qué pasa?, fecha: 2023-11-07 16:54:14
Las etiquetas:

img

Resumen general

Esta estrategia se basa en el indicador del Hull Moving Average, calculando el Hull MA en diferentes marcos de tiempo y comparando las tendencias del Hull MA en diferentes marcos de tiempo para identificar los cambios de tendencia.

Estrategia lógica

  1. Parámetros de entrada: Período de la MA del casco Período, marco de tiempo HMA2 Resolución2, marco de tiempo HMA3 Resolución3

  2. Calcular el valor de HMA de los bares de corriente de casco

  3. Calcular el valor de HMA de casco HMA2 en el marco de tiempo Resolution2

  4. Calcular el valor de Hull MA HMA3 en el marco de tiempo Resolution3

  5. Compare la relación de magnitud entre HMA, HMA2, HMA3

  6. Generar una señal de compra cuando HMA>HMA2>HMA3

  7. Generar una señal de venta cuando HMA

  8. Mostrar los valores y señales de Hull MA en diferentes plazos en la parte superior izquierda del gráfico

  9. Utilice colores para distinguir tendencias alcistas y bajistas

Análisis de ventajas

  1. Usar múltiples marcos de tiempo puede filtrar falsas fugas y evitar trampas.

  2. Parámetros de marco de tiempo personalizables, adaptables a diferentes períodos y volatilidad.

  3. Muestra de señal en tiempo real, operación intuitiva.

  4. Las tendencias de Hull MA visualizadas ayudan a determinar la tendencia actual.

Análisis de riesgos

  1. La configuración incorrecta de los parámetros puede causar un exceso de negociación.

  2. El Hull MA tiene un efecto de retraso, puede perder los puntos de inflexión de la tendencia.

  3. Puede generar señales falsas en torno a la transición toro-oso.

  4. Las estrategias de fuga son propensas a quedar atrapadas por falsas fugas.

  5. Las comisiones de negociación no se consideran, lo que afecta al beneficio real.

Los riesgos pueden reducirse optimizando los parámetros, combinando otros indicadores para la filtración y permitiendo un stop loss más amplio.

Direcciones de optimización

  1. Optimizar el período de Hull MA adaptado a diferentes períodos y volatilidad.

  2. Añadir un indicador de volumen para evitar falsos brotes.

  3. Agregue osciladores para determinar la fuerza de la tendencia.

  4. Incorporar modelos de aprendizaje automático para el tiempo de compra/venta.

  5. Combina indicadores de sentimiento para detectar el hype del mercado.

  6. Ajustar la estrategia de stop loss para una mejor gestión del riesgo.

  7. Personalizar las condiciones de compra/venta con otras señales de indicadores.

  8. Añadir estrategias comerciales basadas en el canal de precios o las ondas.

Conclusión

Esta estrategia utiliza un Hull MA de múltiples plazos para determinar la dirección de la tendencia comparando las pendientes promedio móvil en los plazos y genera señales en las reversiones de tendencia.


/*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)

Más.