
Esta estrategia combina las medias móviles de Hall y las ondas de Carman para identificar y seguir las tendencias de los precios, y se considera una estrategia de seguimiento de tendencias. Utiliza las medias móviles de Hall de dos períodos diferentes para construir una señal de negociación y trabaja con las ondas de Carman para un procesamiento suave, con el objetivo de mejorar la calidad de la señal y la estabilidad de la estrategia.
La estrategia utiliza una media móvil de Hall de 24 períodos hma y una media móvil de Hall triple hma3 de 24 períodos para construir una señal de negociación.
Cuando la hma 3 se coloca encima, se genera una señal de compra; cuando la hma 3 se coloca debajo, se genera una señal de venta.
La estrategia es desactivar el filtro de Kalman de forma predeterminada, y después de activar el filtro de Kalman, realizar un tratamiento de filtro de Kalman para hma y hma3 para filtrar el exceso de ruido y mejorar la calidad de la señal.
Las ondas de Kalman eliminan el ruido aleatorio de la señal a través de la etapa de predicción y corrección. La diferencia entre cada medida y la última predicción sirve como punto de corrección para predecir con mayor precisión el siguiente valor de medición. Mediante la predicción y corrección repetitiva, se puede reducir gradualmente el impacto del ruido y hacer que la señal sea más suave.
La estrategia utiliza las ondas de Kármán para aumentar la estabilidad de la estrategia de las medias móviles, eliminar los efectos de las fluctuaciones aleatorias y seguir una tendencia continua.
En comparación con las medias móviles simples, los sistemas de medias móviles duales son más capaces de identificar tendencias continuas.
El promedio móvil de Hall se calcula de manera ponderada, otorgando un mayor peso a los precios recientes y captando los cambios de precios de manera más sensible.
El filtro de Kármán puede filtrar eficazmente el ruido aleatorio de la señal, reducir las señales falsas y mejorar la calidad de la señal.
Los parámetros de la estrategia se pueden ajustar, la longitud del ciclo y el aumento de la onda de Kalman se pueden ajustar según el mercado y adaptarse a diferentes situaciones.
Las estrategias utilizan la técnica de construcción de señales transitorias para identificar tendencias más duraderas y evitar ser engañados por demasiadas fluctuaciones aleatorias.
La interfaz visual muestra de forma intuitiva el estado de las señales y tendencias para facilitar su manejo.
Las estrategias de medias móviles dobles son propensas a generar señales erróneas en los puntos de cambio de tendencia y no pueden capturar los cambios a tiempo.
Los promedios móviles están rezagados y pueden perder la oportunidad de una rápida reversión.
No se aplica en situaciones de gran volatilidad, y debe evitarse su uso en la etapa de rebote de la conmoción.
La configuración de los parámetros del filtro de Kalman puede afectar el rendimiento de la estrategia, y un aumento excesivo puede filtrar la señal efectiva.
La configuración de ciclo largo responde con poca sensibilidad, mientras que la configuración de ciclo corto se ve afectada por el ruido y necesita ajustar los parámetros según el mercado.
El tiempo de mantenimiento de la posición libre es inestable, existe una etapa de no mantenimiento de la posición, lo que reduce la eficiencia en el uso de los fondos.
Se puede intentar la adopción de parámetros de optimización dinámica de la media móvil adaptativa, ajustando la duración del ciclo en función de la tasa de fluctuación.
Utilice el índice de volatilidad para evaluar el estado de la situación, evite operar en mercados convulsos y negocie solo cuando la tendencia sea clara.
Se puede configurar una estrategia de stop loss para evitar la expansión de las pérdidas y mejorar la capacidad de control de riesgos.
Optimización de los parámetros de filtro de Kalman, equilibrio de la sensibilidad de seguimiento y el nivel de filtración de ruido.
En combinación con otros indicadores de confirmación de la eficacia de la señal, como el indicador de capacidad cuantitativa, la durabilidad de la tendencia de la banda de Brin, etc.
Los parámetros de entrenamiento pueden utilizarse en métodos como el aprendizaje automático para que las estrategias sean más robustas y adaptables.
Esta estrategia utiliza el seguimiento de tendencias a través de las medias móviles de doble Hall y las ondas de Kalman para identificar de manera efectiva las tendencias persistentes y mejorar la calidad de la señal. Sin embargo, se debe prestar atención a la optimización de los parámetros, la adaptabilidad al mercado y el control del riesgo para obtener ganancias estables.
/*backtest
start: 2022-10-25 00:00:00
end: 2023-10-31 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Hull Trend with Kahlman Strategy Backtest", shorttitle="HMA-Kahlman Trend Strat", overlay=true)
src = input(hl2, "Price Data")
length = input(24, "Lookback")
showcross = input(true, "Show cross over/under")
gain = input(10000, "Gain")
k = input(true, "Use Kahlman")
hma(_src, _length) =>
wma((2 * wma(_src, _length / 2)) - wma(_src, _length), round(sqrt(_length)))
hma3(_src, _length) =>
p = length/2
wma(wma(close,p/3)*3 - wma(close,p/2) - wma(close,p),p)
kahlman(x, g) =>
kf = 0.0
dk = x - nz(kf[1], x)
smooth = nz(kf[1],x)+dk*sqrt((g/10000)*2)
velo = 0.0
velo := nz(velo[1],0) + ((g/10000)*dk)
kf := smooth+velo
a = k ? kahlman(hma(src, length), gain) : hma(src, length)
b = k ? kahlman(hma3(src, length), gain) : hma3(src, length)
c = b > a ? color.lime : color.red
crossdn = a > b and a[1] < b[1]
crossup = b > a and b[1] < a[1]
p1 = plot(a,color=c,linewidth=1,transp=75)
p2 = plot(b,color=c,linewidth=1,transp=75)
fill(p1,p2,color=c,transp=55)
plotshape(showcross and crossdn ? a : na, location=location.absolute, style=shape.labeldown, color=color.red, size=size.tiny, text="S", textcolor=color.white, transp=0, offset=-1)
plotshape(showcross and crossup ? a : na, location=location.absolute, style=shape.labelup, color=color.green, size=size.tiny, text="B", textcolor=color.white, transp=0, offset=-1)
longCondition = crossup
if (longCondition)
strategy.entry("LE", strategy.long)
shortCondition = crossdn
if (shortCondition)
strategy.entry("SE", strategy.short)