Estrategia de seguimiento de tendencias basada en el filtro Kalman


Fecha de creación: 2024-01-25 14:12:26 Última modificación: 2024-01-25 14:12:26
Copiar: 0 Número de Visitas: 1091
1
Seguir
1617
Seguidores

Estrategia de seguimiento de tendencias basada en el filtro Kalman

Descripción general

El núcleo de esta estrategia es el uso de la técnica de las ondas de Carman para el tratamiento de la línea media de precios de forma suave, mediante el cálculo de la línea de corte de la línea media después de la suavización, para generar una señal de comercio cuando la línea de corte supera un determinado umbral en el período especificado. La estrategia se dedica a seguir la tendencia de la línea media larga, a través de la técnica de las ondas de Carman para reducir el impacto del ruido, para obtener una señal de tendencia más clara y fiable.

Principio de estrategia

La lógica central de esta estrategia incluye los siguientes pasos:

  1. Calcula el promedio móvil simple (SMA) de precios de 1 minuto como la media original;

  2. Se hace una filtración de Karmann sobre la línea media original y se produce una línea media suavizada.

  3. Calcular el ángulo de corte de la línea media después de la suavización;

  4. Definir el período de parámetros, la suma de los ángulos de la línea de corte dentro del período estadístico;

  5. Se produce una señal de compra cuando la suma de los ángulos de corte en el ciclo es mayor a 360 grados; se produce una señal de venta cuando es menor a 360 grados.

Con este diseño, cuando los precios se mueven hacia arriba o hacia abajo, el ángulo de corte de la línea uniforme se acumula gradualmente, y cuando se acumula hasta cierto punto, produce una señal de negociación, por lo que puede seguir eficazmente la tendencia de la línea media larga.

Las ondas de Kármán son un algoritmo recursivo que, al tiempo que predice el estado actual, también predice el ruido del proceso y mide los valores del ruido, y utiliza los valores de estos ruidos para corregir las predicciones del estado anterior, lo que permite una estimación del estado más precisa y fiable.

En esta estrategia, el SMA del precio puede ser visto como una medida del estado, afectado por el ruido del mercado, el filtro de Kalman estimará recursivamente la tendencia real de los precios, reduciendo considerablemente el impacto del ruido, lo que hace que la operación de la línea media posterior sea más confiable y, por lo tanto, produzca una señal de negociación más estable y precisa.

Ventajas estratégicas

La mayor ventaja de esta estrategia frente a otras estrategias de indicadores como las medias móviles simples es que el filtro de Kalman reduce el impacto del ruido, lo que hace que las señales de negociación sean más claras y confiables. Las ventajas concretas se reflejan principalmente en los siguientes aspectos:

  1. Reducción de señales falsas. El filtro de Kármán filtra eficazmente la gran cantidad de señales falsas generadas por fluctuaciones aleatorias mediante la estimación y eliminación de ruido de forma adaptativa, lo que hace que la señal de transacción generada sea más confiable.

  2. Mejor seguimiento. La forma de la línea uniforme después de la suavización es más fluida y puede reflejar mejor la tendencia de la línea media de los precios, lo que permite un mejor seguimiento de la tendencia.

  3. Parámetros ajustables de configuración flexible. Los parámetros ajustables incluyen la longitud de la línea media, los parámetros de las ondas de Kármán y los períodos estadísticos, que se adaptan de manera flexible a diferentes entornos de mercado.

  4. El riesgo es controlado. Esta estrategia se centra más en las tendencias de la línea media larga que en las fluctuaciones a corto plazo, logrando un mejor equilibrio entre el riesgo y los beneficios.

  5. La implementación es sencilla y fácil de ampliar. El algoritmo central de esta estrategia es más sencillo, fácil de implementar y probar, y también ofrece espacio para ampliar, como los parámetros de optimización automática de algoritmos de aprendizaje automático que se pueden introducir.

Riesgo estratégico

También existen los siguientes riesgos principales:

  1. Riesgo de reversión de la tendencia. Esta estrategia se centra en el seguimiento de la tendencia, una vez que se produce una reversión de la tendencia drástica, se producen grandes pérdidas. Se puede reducir la pérdida individual mediante la reducción adecuada del ciclo estadístico.

  2. Riesgo de optimización de parámetros. La configuración inadecuada de los parámetros puede provocar una transacción frecuente o un retraso de la señal, lo que requiere una optimización de prueba adecuada. La optimización automática se puede combinar con algoritmos de aprendizaje automático.

  3. Riesgo de optimización excesiva. La optimización excesiva en los datos históricos también puede causar la falla de los parámetros, que necesitan ser controlados fuera de la muestra.

  4. La implementación aumenta el riesgo de complejidad. La introducción de las ondas de Kalman y los algoritmos de ángulo de corte aumentan la complejidad del código y se debe asegurar que se implementa correctamente.

Dirección de optimización de la estrategia

Teniendo en cuenta los factores de riesgo mencionados anteriormente, la estrategia puede ser optimizada en las siguientes áreas:

  1. Introducción de stop loss y gestión de posiciones. Un stop loss adecuado puede controlar eficazmente el riesgo de pérdidas individuales. La gestión dinámica de posiciones también puede ajustar el riesgo de cobertura de posiciones en función de las condiciones del mercado.

  2. Optimización automática de los parámetros. A través de algoritmos de optimización de aprendizaje automático, se puede optimizar automáticamente los parámetros y evitar el riesgo de optimización excesiva.

  3. Integración de otros indicadores. Se pueden integrar algunos otros indicadores en la estrategia para formar una combinación de indicadores para mejorar la estabilidad de la estrategia.

  4. Aumentar la evaluación de la eficiencia. Introducir más indicadores de ajuste al riesgo para evaluar la eficiencia y la estabilidad de las estrategias, lo que permite una conclusión más completa y precisa.

  5. Expandir varias variedades. Si el efecto es bueno, se puede considerar la expansión a más variedades, para acumular una muestra más rica en el medio y largo plazo, también para facilitar la optimización de los parámetros entre variedades.

Resumir

En general, esta estrategia es una estrategia de seguimiento de tendencias más sencilla y práctica. En comparación con las estrategias tradicionales de promedios móviles, la introducción del algoritmo de ondas de Kalman es su mayor innovación, y también permite que la estrategia genere una señal de negociación más clara y confiable.

Código Fuente de la Estrategia
/*backtest
start: 2024-01-17 00:00:00
end: 2024-01-24 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
//@library=math
strategy("策略360°(测试)", overlay=true)

// 定义1分钟均线
ma1 = request.security(syminfo.tickerid, "1", ta.sma(close, 1)) // 在这里使用了 math.sma() 函数
//plot(ma1, color=color.yellow, title="原始均线")

// 定义卡尔曼滤波函数,参考了[1](https://www.tradingview.com/pine-script-docs/en/v5/language/Methods.html)和[2](https://www.tradingview.com/pine-script-docs/en/v5/language/Operators.html)的代码
kalman(x, g) => 
    kf = 0.0 
    dk = x - nz(kf[1], x) // 在这里使用了 nz() 函数
    smooth = nz(kf[1], x) + dk * math.sqrt(g * 2) // 在这里使用了 math.sqrt() 函数
    velo = 0.0 
    velo := nz(velo[1], 0) + g * dk // 在这里使用了 nz() 函数
    kf := smooth + velo 
    kf 

// 定义卡尔曼滤波后的均线
ma2 = kalman(ma1, 0.01) 
plot(ma2, color=color.blue, title="卡尔曼滤波后的均线")

// 定义切线角
angle = math.todegrees(math.atan(ma2 - ma2[1])) // 在这里使用了 math.degrees() 和 math.atan() 函数

// 定义累加的切线角
cum_angle = 0.0
cum_angle := nz(cum_angle[1], 0) + angle // 在这里使用了 nz() 函数

// 定义30分钟周期
period = 30 // 您可以根据您的需要修改这个参数

// 定义周期内的切线角总和
sum_angle = 0.0
sum_angle := math.sum(angle, period) // 在这里使用了 math.sum() 函数,把周期内的切线角总和改成简单地把 5 个切线角相加

// 定义买入和卖出条件
buy = sum_angle > 360// 在这里使用了 math.radians() 函数
sell = sum_angle < -360

// 执行买入和卖出操作
strategy.entry("Long", strategy.long, when=buy)
strategy.close("Short", when=buy)
strategy.entry("Short", strategy.short, when=sell)
strategy.close("Long", when=sell)

// 绘制曲线图
plot(sum_angle, color=color.green, title="周期内的切线角总和")
plot(angle, color=color.red, title="切线角") // 这是我为您添加的代码,用于显示实时计算的切线角