Esta estrategia utiliza el indicador HMA (Hull Moving Average) y el análisis técnico de K-line para realizar juicios de impulso y operaciones de avance en los precios.
El indicador HMA fue creado por Alan Hull en 2005 para crear una media móvil sensible y suave.
(1) Calcular el DMA medio de doble suavizado de medio ciclo
(2) Calcular la media de SMA del ciclo completo
(3) Calcular la diferencia DIFF entre DMA y SMA
(4) Calcular la línea media del ciclo SQRT ((período) de DIFF para obtener HMA
La estrategia utiliza los avances ascendentes y descendentes del indicador HMA como señales, combinados con el avance de la parte de la entidad de la línea K, para generar señales de compra y venta. Al mismo tiempo, establece principios de stop loss y take profit para monitorear la situación de ganancias y pérdidas en tiempo real para proteger las ganancias.
La característica de
El doble mecanismo de avance mejora la fiabilidad de las señales y evita que se atrapen.
El stop loss dinámico y la protección de ganancias optimizan el riesgo y el rendimiento.
El comercio totalmente automatizado simplifica las operaciones.
En violentas fluctuaciones del mercado, la probabilidad de que se produzca un stop loss es mayor.
La alta frecuencia de negociación aumenta los costos de comisión.
La configuración incorrecta de parámetros puede generar muchas señales falsas.
Optimizar las condiciones de stop loss y take profit y establecer retracements razonables.
Ajustar la frecuencia de las operaciones para reducir el impacto de las comisiones.
Prueba y optimización del ciclo HMA y las condiciones de avance para determinar los parámetros óptimos.
Incorporar indicadores de juicio de tendencia para evitar el comercio de contratrends.
Aumentar el juicio automático sobre el cambio de fuente de datos para adaptarse a más entornos de mercado.
Aumentar los algoritmos de aprendizaje automático para lograr la optimización automática de parámetros.
Despliegue en el servidor para lograr una verificación de operaciones en vivo las 24 horas.
La estrategia de ruptura de impulso de HMA utiliza las ventajas únicas de la media móvil de Hull para capturar con precisión el impulso del mercado. El mecanismo de filtración de doble ruptura mejora la calidad de la señal, y el stop de ganancia y stop de pérdida dinámicos protegen los ingresos.
/*backtest start: 2022-12-28 00:00:00 end: 2024-01-03 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 //SeaSide420 strategy("Hull Moving Average and Daily Candle Crossover", shorttitle="Hull&D", 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) // settings---------------------- q=input(title="HullMA",defval=5) SL = input(defval=-10000.00, title="Stop Loss in $", type=float, step=1) TP = input(defval=500.00, title="Target Point in $", type=float, step=1) price=input(ohlc4,title="Price data") ot=1 p=price[1] // Daily candle crossover--------- dt = 0.0010 Daily=(p-p[1])/p[1] //-------------------------------- // Hull MA's---------------------- n2ma=2*wma(p,round(q/2)) nma=wma(p,q) diff=n2ma-nma sqn=round(sqrt(q)) n2ma1=2*wma(p[1],round(q/2)) nma1=wma(p[1], q) diff1=n2ma1-nma1 sqn1=round(sqrt(q)) n1=wma(diff,sqn) n2=wma(diff1,sqn) //--------------------------------- // Plotting------------------------ z1e=n1>n2?green:black z2e=n1>n2?black:red z3e=n1>n2?green:red n1e=plot(n1, title="HMA1", color=z1e, linewidth=2, offset=2) n2e=plot(n2, title="HMA2", color=z2e, linewidth=2, offset=2) fill(n1e, n2e, color=z3e, transp=80) // Order controls------------------- closelong = n1<n2 and n1[1]<n2[1] and n1[2]<n2[2] or strategy.openprofit<SL or strategy.openprofit>TP if (closelong) strategy.close("Long") closeshort = n1>n2 and n1[1]>n2[1] and n1[2]>n2[2] or strategy.openprofit<SL or strategy.openprofit>TP if (closeshort) strategy.close("Short") longCondition = n1>n2 and n1[1]>n2[1] and n1[2]>n2[2] and strategy.opentrades<ot and Daily>dt and close>n1 if (longCondition) strategy.entry("Long",strategy.long) shortCondition = n1<n2 and n1[1]<n2[1] and n1[2]<n2[2] and strategy.opentrades<ot and Daily<dt and close<n1 if (shortCondition) strategy.entry("Short",strategy.short)