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


Fecha de creación: 2023-09-19 16:40:00 Última modificación: 2023-09-19 16:40:00
Copiar: 1 Número de Visitas: 393
1
Seguir
1166
Seguidores

Descripción general

Esta estrategia se basa en el Hull Moving Average, desarrollado por Alan Hull, y pertenece a la estrategia de seguimiento de tendencias. La estrategia utiliza el Hull Moving Average para determinar la dirección de la tendencia y enviar señales de negociación en combinación con condiciones de filtración adicionales.

Principio de estrategia

  1. Calcula el promedio móvil de Hull de los grupos de corto y largo período. El corto período determina la dirección de las operaciones específicas, y el largo período determina la dirección de la tendencia general.

  2. Cuando el ciclo corto Hull MA se rompe, se juzga que la tendencia se invierte. En combinación con la dirección de la gran tendencia, se filtra el ruido de las transacciones.

  3. Aumentar el precio de la ruptura de Hull MA para asegurar el éxito de la ruptura.

  4. Aumentar las condiciones de variación de precios para evitar una ruptura no deseada.

  5. Establecer las condiciones para detener y detener el daño y controlar el riesgo.

Análisis de las ventajas

La estrategia tiene las siguientes ventajas en comparación con la media móvil normal:

  1. El Hull MA responde más rápidamente a los cambios en los precios y puede capturar el cambio de tendencia a tiempo.

  2. La estructura de doble Hull MA puede determinar tendencias en dos dimensiones de tiempo, mayor y menor.

  3. Las condiciones de brecha de precios y de cambio de tasa pueden filtrar efectivamente las brechas falsas.

  4. El stop loss dinámico bloquea las ganancias y controla el riesgo.

Análisis de riesgos

La estrategia también tiene los siguientes riesgos:

  1. Si los parámetros se establecen incorrectamente, se puede perder el cambio de tendencia de los precios.

  2. Los errores en el análisis de las grandes tendencias pueden llevar a un comercio en contra.

  3. La extensión excesiva de la configuración de stop loss puede generar grandes pérdidas.

  4. El número de transacciones es demasiado frecuente, lo que aumenta los costos de las transacciones y el riesgo de deslizamiento.

Dirección de optimización

Se puede optimizar en los siguientes aspectos:

  1. Optimización del ciclo Hull MA, equilibrando sensibilidad y suavidad.

  2. Optimiza los parámetros de entrada y salida para encontrar los valores óptimos.

  3. Prueba de la robustez de los parámetros de las diferentes variedades para mejorar la adaptabilidad de la estrategia.

  4. Indicador de la capacidad de combinación para evitar el riesgo de desviación.

  5. Aumentar las condiciones y mejorar la estabilidad de la estrategia.

Resumir

En general, la estrategia utiliza la rapidez de respuesta de Hull MA para un seguimiento oportuno de las tendencias, con una mayor capacidad de rentabilidad, con el riesgo controlado. Sin embargo, se debe tener en cuenta la optimización de los parámetros y la prevención de algunos riesgos sistemáticos más difíciles de evitar.

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

//@version=2
//SeaSide420
strategy("SS420FX", overlay=true, default_qty_type=strategy.percent_of_equity, max_bars_back=720, default_qty_value=100, calc_on_order_fills= true, calc_on_every_tick=true, pyramiding=0)
q=input(title="HullMA Short",defval=14)
z=input(title="HullMA Long",defval=14)
dt = input(defval=0.0010, title="Decision Threshold", type=float, step=0.0001)
SL = input(defval=-50000.00, title="Stop Loss in $", type=float, step=1)
TP = input(defval=100000.00, title="Target Point in $", type=float, step=1)
ot=1
n2ma=2*wma(close,round(q/2))
nma=wma(close,q)
diff=n2ma-nma
sqn=round(sqrt(q))
n2ma1=2*wma(close[1],round(q/2))
nma1=wma(close[1], q)
diff1=n2ma1-nma1
sqn1=round(sqrt(q))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
z2ma=2*wma(close[11],round(z/2))
zma=wma(close[11],z)
ziff=n2ma-nma
zqn=round(sqrt(z))
z2ma1=2*wma(close[12],round(z/2))
zma1=wma(close[12], z)
ziff1=n2ma1-nma1
zqn1=round(sqrt(z))
z1=wma(diff,sqn)
z2=wma(diff1,sqn)
z1e=z1>z2?green:black
z2e=z1>z2?black:red
z3e=z1>z2?green:red
n1e=plot(z1, title="HMA1", color=z1e, linewidth=2, offset=2)
n2e=plot(z2, title="HMA2", color=z2e, linewidth=2, offset=2)
fill(n1e, n2e, color=z3e, transp=80)
confidence=(security(syminfo.tickerid, 'D', close)-security(syminfo.tickerid, 'D', close[1]))/security(syminfo.tickerid, 'D', close[1])
closelong = n1<n2 and close<n2 and confidence<dt or strategy.openprofit<SL or strategy.openprofit>TP
if (closelong)
    strategy.close("Long")
closeshort = n1>n2 and close>n2 and confidence>dt or strategy.openprofit<SL or strategy.openprofit>TP
if (closeshort)
    strategy.close("Short")
longCondition = n1>n2 and z1>z2 and strategy.opentrades<ot and confidence>dt and close>n1
if (longCondition)
    strategy.entry("Long",strategy.long)
shortCondition = n1<n2 and z1<z2 and strategy.opentrades<ot and confidence<dt and close<n1 
if (shortCondition)
    strategy.entry("Short",strategy.short)