Esta estrategia utiliza bandas de Bollinger para determinar la dirección de las tendencias del mercado y combina indicadores de impulso para implementar transacciones de seguimiento de tendencias. El
La estrategia se puede dividir principalmente en tres partes:
La línea media de las bandas de Bollinger representa el promedio móvil, y las líneas superior e inferior representan el rango de volatilidad. Cuando el precio está cerca del tren superior, está sobrecomprado. Cuando está cerca del tren inferior, está sobrevendido. La dirección de las bandas de Bollinger representa la dirección de la tendencia del precio.
Calcular el momento. Esta estrategia utiliza el momento de Hull. El momento de Hull se deriva del promedio móvil rápido menos el promedio móvil lento. Un valor positivo representa una tendencia al alza, y un valor negativo representa una tendencia a la baja.
Cuando el promedio móvil rápido cruza el promedio móvil lento desde abajo, se genera una señal larga.
La regla de negociación es: La dirección de las bandas de Bollinger representa la tendencia principal, y el cruce del indicador de impulso representa el momento de entrada en el mercado. Una señal de negociación se genera cuando el cruce de impulso es consistente con la dirección de las bandas de Bollinger. Es decir, para rastrear la dirección de tendencia representada por las bandas de Bollinger.
Adopte bandas de Bollinger para juzgar las tendencias a gran escala, y luego use indicadores de impulso para determinar puntos de entrada específicos para evitar el riesgo de perseguir avances locales.
Las bandas de Bollinger proporcionan puntos de stop-loss, que son más efectivos que las simples medias móviles.
Indicadores de impulso pueden garantizar suficiente potencia para seguir empujando los precios en la dirección original después de entrar en el mercado, haciendo que el seguimiento de tendencias sea más suave.
El riesgo de fallo de determinación de las bandas de Bollinger Las bandas de Bollinger no siempre determinan con total precisión la tendencia, lo que puede proporcionar señales direccionales incorrectas, aumentando así la tasa de pérdida.
Incluso si las bandas de Bollinger reflejan correctamente la tendencia a gran escala, los precios pueden revertirse a medio y corto plazo, lo que debe tenerse en cuenta al operar.
Riesgo de optimización de parámetros: los parámetros de la estrategia, como el ciclo de cálculo, deben optimizarse para diferentes datos de mercado para lograr el mejor efecto comercial.
Además de las bandas de Bollinger y el momento de Hull, se pueden agregar otros indicadores como MACD y KDJ para formar un indicador FILTER para mejorar la precisión del juicio.
Optimización de parámetros adaptativos. Únete a algoritmos de aprendizaje automático para optimizar parámetros en tiempo real de acuerdo con diferentes variedades y entornos de mercado para mejorar la estabilidad de la estrategia.
Optimización de la estrategia de stop loss. Optimice la estrategia de stop loss para maximizar las ganancias de bloqueo antes de que las tendencias principales cambien, y detenga las pérdidas más rápido cuando las tendencias se inviertan.
Esta estrategia integra bandas de Bollinger para determinar tendencias a gran escala e indicadores de impulso de Hull para determinar puntos de entrada específicos, lo que rastrea efectivamente las tendencias.
/*backtest start: 2024-01-26 00:00:00 end: 2024-02-25 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // Hull Moving Average Crossover by SeaSide420 strategy("Hull Moving Average Crossover Strategy", overlay=true) keh=input(title="HullMA cross",defval=10) p=input(ohlc4) n2ma=2*ta.wma(p,math.round(keh/2)) nma=ta.wma(p,keh) diff=n2ma-nma sqn=math.round(math.sqrt(keh)) n2ma1=2*ta.wma(p[1],math.round(keh/2)) nma1=ta.wma(p[1],keh) diff1=n2ma1-nma1 sqn1=math.round(math.sqrt(keh)) n1=ta.wma(diff,sqn) n2=ta.wma(diff1,sqn) hullcross1 = n1 hullcross2 = n2 longcross1=(n1[0]-n1[3])+(n1[0]-n2[4])*100 longcross2=(n2[0]-n2[3])+(n2[0]-n1[4])*100 closelong = n1<n2 and longcross1<longcross2 if (closelong) strategy.close("Long") closeshort = n1>n2 and longcross1>longcross2 if (closeshort) strategy.close("Short") longCondition = n1>n2 and longcross1>longcross2 and strategy.opentrades<1 if (longCondition) strategy.entry("Long",strategy.long) shortCondition = n1<n2 and longcross1<longcross2 and strategy.opentrades<1 if (shortCondition) strategy.entry("Short",strategy.short) b=hullcross1>hullcross2?color.green:color.red c=hullcross2>hullcross1?color.green:color.red plot(ta.cross(hullcross1, hullcross2) ? hullcross1 : na,color=c, linewidth = 5, offset=3) barcolor(longcross1 < longcross2 ? color.black : color.white) bgcolor(longcross2 < longcross1 ? color.green : color.black, transp=85) plotshape(ta.cross(longcross2, longcross1) ? longcross2 : na, text="X", style=shape.labeldown, location=location.bottom)