Estratégia de acompanhamento de tendências baseada no filtro de Kalman


Data de criação: 2024-01-25 14:12:26 última modificação: 2024-01-25 14:12:26
cópia: 0 Cliques: 1091
1
focar em
1617
Seguidores

Estratégia de acompanhamento de tendências baseada no filtro de Kalman

Visão geral

O núcleo desta estratégia é o uso da técnica de filtro de Carman para suavizar a linha média de preços, produzindo um sinal de negociação quando o ângulo de corte da linha média após a suavização é calculado. A estratégia se dedica a seguir a tendência de linha média-longa, reduzindo o impacto do ruído com a técnica de filtro de Carman, resultando em um sinal de tendência mais claro e confiável.

Princípio da estratégia

A lógica central desta estratégia consiste principalmente nos seguintes passos:

  1. Calcule a média móvel simples (SMA) do preço por minuto como a média original;

  2. Uma onda de Karmann sobre a linha de equilíbrio original e uma linha de equilíbrio de saída;

  3. Calcule o ângulo de corte da linha média depois de suavizada;

  4. Definir o período de parâmetros, a soma dos ângulos de corte dentro do período estatístico;

  5. Quando a soma dos ângulos de corte no ciclo é maior que 360 graus, o sinal de compra é gerado; quando é menor que 360 graus, o sinal de venda é gerado.

Com esse design, quando os preços tendem para cima ou para baixo, os ângulos de corte da linha uniforme se acumulam gradualmente, e quando se acumulam até certo ponto, geram um sinal de negociação, permitindo assim acompanhar efetivamente a tendência da linha média longa.

O filtro de Kalman é um algoritmo recursivo que, ao mesmo tempo em que prevê o estado atual, também prevê o ruído do processo e mede os valores do ruído, e usa os valores desse ruído para corrigir as previsões do estado anterior, resultando em uma estimativa de estado mais precisa e confiável.

Nesta estratégia, o SMA de preço pode ser visto como uma medida de estado, influenciado pelo ruído do mercado. O filtro de Kalman estimará a tendência real dos preços de forma recursiva, reduzindo significativamente o impacto do ruído, tornando a operação de mediana posterior mais confiável, resultando em um sinal de negociação mais estável e preciso.

Vantagens estratégicas

Em comparação com as estratégias de indicadores como a média móvel simples, a maior vantagem desta estratégia é que o uso do filtro de Kalman reduz o impacto do ruído, tornando os sinais de negociação mais claros e confiáveis. As vantagens concretas se manifestam principalmente nos seguintes aspectos:

  1. Redução de falsos sinais. O filtro de Kármán, estimulando e eliminando o ruído de forma adaptativa, efetivamente filtra o grande número de falsos sinais causados por oscilações aleatórias, tornando os sinais de negociação gerados mais confiáveis.

  2. Melhor efeito de acompanhamento. A forma de linha uniforme depois do suavização é mais fluida e pode refletir melhor a tendência de linha média e longa de preços, permitindo um melhor efeito de acompanhamento de tendências.

  3. Parâmetros ajustáveis incluem comprimento médio da linha, parâmetros da onda de Kármán e períodos estatísticos, permitindo adaptação flexível a diferentes condições de mercado.

  4. Risco controlado. Esta estratégia foca mais na tendência de longo prazo do que na volatilidade de curto prazo, alcançando um melhor equilíbrio de risco e retorno.

  5. Implementação simples e fácil de expandir. O algoritmo central desta estratégia é simples, fácil de implementar e testar, e também oferece espaço para expansão, como parâmetros de otimização automática de algoritmos de aprendizado de máquina que podem ser introduzidos.

Risco estratégico

A estratégia também apresenta os seguintes principais riscos:

  1. Risco de reversão de tendência. Esta estratégia se concentra no acompanhamento de tendências, com grandes perdas em caso de reversão de tendência acentuada.

  2. Risco de otimização de parâmetros. A configuração inadequada de parâmetros pode causar frequência de transações ou atraso de sinais, o que requer otimização de testes completos. A otimização automática pode ser combinada com algoritmos de aprendizagem de máquina.

  3. Risco de otimização excessiva. A otimização excessiva em dados históricos também pode levar a falhas de parâmetros, que precisam ser controladas fora da amostra.

  4. A implementação de complexidade aumenta o risco. A introdução de algoritmos de onda de Karmann e de ângulo de corte aumenta a complexidade do código e é necessário garantir a implementação correta.

Direção de otimização da estratégia

Tendo em conta os fatores de risco acima mencionados, a estratégia pode ser otimizada de forma a:

  1. Introdução de stop loss e gestão de posições. O stop loss adequado pode controlar eficazmente o risco de perda individual. A gestão de posições dinâmica também pode ajustar o risco de cobertura de posições de acordo com as condições do mercado.

  2. Otimização automática de parâmetros. Com algoritmos de otimização de aprendizado de máquina, é possível otimizar automaticamente os parâmetros, evitando o risco de otimização excessiva.

  3. Integração de outros indicadores. Pode-se integrar alguns outros indicadores na estratégia, formando um portfólio de indicadores para melhorar a estabilidade da estratégia.

  4. Aumentar a avaliação de eficiência. Introduzir mais indicadores de ajuste de risco, avaliar a eficiência e a estabilidade da estratégia, resultando em conclusões mais abrangentes e precisas.

  5. Expandir para várias variedades. Se o resultado for bom, pode-se considerar a expansão para mais variedades, acumulando uma amostra mais rica a médio e longo prazo, facilitando a otimização de parâmetros entre variedades.

Resumir

Em geral, esta estratégia é uma estratégia de acompanhamento de tendências mais simples e prática. Em comparação com a estratégia de média móvel tradicional, a introdução do algoritmo de onda de Kalman é a maior inovação e permite que a estratégia produza um sinal de negociação mais claro e confiável.

Código-fonte da estratégia
/*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="切线角") // 这是我为您添加的代码,用于显示实时计算的切线角