A estratégia de previsão de ondas de Gauss

Autora:ChaoZhang, Data: 2024-01-22 12:37:07
Tags:

img

Resumo

A Estratégia de Previsão de Ondas de Gauss é uma estratégia quantitativa de negociação baseada na filtragem gaussiana. Utiliza o recurso de suavização dos filtros gaussianos para filtrar a série de preços várias vezes e produzir várias séries de preços suavizadas. Em seguida, combinado com o ajuste polinomial dessas séries de preços, realiza a previsão de preços futuros. De acordo com os resultados da previsão, dá sugestões sobre posições longas ou curtas.

Princípio da estratégia

O núcleo desta estratégia é o algoritmo de filtro de Gauss. O filtro de Gauss é um filtro de suavização linear que usa a função de Gauss como pesos. O parâmetro p na estratégia é definido como o tamanho da janela de filtragem. Em seguida, o coeficiente de filtragem alfa é calculado através de funções trigonométricas. Cada série de preços ret\[i\] representa o resultado após a i-a filtragem de Gauss da série de preços original.

A estratégia emprega a idéia de recursividade. Em primeiro lugar, com alfa e o preço da série de preços original, o primeiro ret de filtragem é calculado. Em seguida, com base no ret, a segunda filtragem é realizada para obter ret2. Repita isso várias vezes. Finalmente, combinando várias séries de preços, uma curva é montada para prever os preços futuros ret4. Se o preço previsto for maior que o preço atual, vá longo. Se for menor que o preço atual, vá curto.

Ao filtrar várias vezes, ele pode ser mais suave e melhor adequado à tendência. Ao mesmo tempo, combinado com o ajuste polinomial, ele realiza a previsão das tendências de preços no curto prazo.

Análise das vantagens

A estratégia apresenta as seguintes vantagens:

  1. Utilize o filtro de Gauss para suavizar os preços. Pode efetivamente filtrar o ruído de alta frequência e tornar a estratégia mais estável.

  2. A filtragem múltipla recursiva pode ajustar-se melhor à tendência de preços e melhorar o efeito de previsão.

  3. Previsão de preços baseada em ajuste polinomial. Pode modelar tendências de preços de curto prazo e, assim, gerar sinais comerciais.

  4. Os sinais de negociação são diretamente combinados com as previsões de tendência para evitar oportunidades de negociação perdidas.

  5. Simples de implementar, fácil de entender e otimizar. Pode servir como um módulo básico para estratégias de alta frequência para expandir outros indicadores analíticos.

Análise de riscos

A estratégia apresenta igualmente os seguintes riscos:

  1. O efeito suavizador do filtro de Gauss sobre mudanças repentinas de preços pode perder oportunidades de negociação de curto prazo.

  2. Se o modelo de mudança de preço muta repentinamente, o efeito de previsão diminuirá.

  3. O tamanho da janela do filtro e a ordem de ajuste do polinômio precisam ser definidos com precisão.

  4. Baseia-se exclusivamente no preço de abertura dos sinais de negociação e não pode negociar intradiário.

Orientações de otimização

A estratégia pode ser otimizada nos seguintes aspectos:

  1. Adicionar mecanismos de formação de modelos e de retrabalho de janelas deslizantes para o ajuste dinâmico dos parâmetros, a fim de reduzir os riscos de sobreajuste.

  2. Incorporar mais indicadores e características de preços para enriquecer o input e tornar as previsões mais estáveis.

  3. Adicionar mecanismos de stop loss, definindo a taxa de perda máxima para evitar grandes perdas em condições extremas de mercado.

  4. Otimizar a gestão de posições, ajustar dinamicamente as posições com base na precisão e volatilidade das previsões.

  5. Tente a previsão baseada em modelos de aprendizagem de máquina convencionais como LSTM e melhore ainda mais a capacidade preditiva.

Conclusão

Em resumo, esta é uma estratégia quantitativa de alta frequência que realiza previsão de preços usando filtro de Gauss e ajuste polinomial. Tem certas vantagens, mas também espaço para melhoria. Ao incorporar mais recursos, introduzindo ajuste dinâmico de parâmetros, mecanismos de stop loss, etc., o efeito da estratégia poderia ser muito melhor. Esta estratégia estabelece a base como um módulo básico para pesquisa e otimização de estratégias de alta frequência.


/*backtest
start: 2023-01-15 00:00:00
end: 2024-01-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Gaussbot v1.0", overlay=true)

p = input(20, minval=1, title="Length")
price = input(open, title="Source")

pi=3.1415926535


w=2*pi/p
beta = (1 - cos(w))/(pow(1.414,2.0/3) - 1)
alfa = -beta + sqrt(beta*beta + 2*beta)
ret=  pow(alfa,4)*price+4*(1-alfa)*nz(ret[1])-6*pow(1-alfa,2)*nz(ret[2])+4*pow(1-alfa,3)*nz(ret[3])-pow(1-alfa,4)*nz(ret[4])
ret2 = pow(alfa,4)*ret+4*(1-alfa)*nz(ret2[1])-6*pow(1-alfa,2)*nz(ret2[2])+4*pow(1-alfa,3)*nz(ret2[3])-pow(1-alfa,4)*nz(ret2[4])
ret3 = pow(alfa,4)*ret2+4*(1-alfa)*nz(ret3[1])-6*pow(1-alfa,2)*nz(ret3[2])+4*pow(1-alfa,3)*nz(ret3[3])-pow(1-alfa,4)*nz(ret3[4])
ret4 = 3*ret-3*ret2+ret3


diff2 = nz(ret[1]) - nz(ret[2]) - (nz(ret[2]) - nz(ret[3]) )  
diff22 = nz(ret2[1]) - nz(ret2[2]) - (nz(ret2[2]) - nz(ret2[3]) ) 
diff23 = nz(ret3[1]) - nz(ret3[2]) - (nz(ret3[2]) - nz(ret3[3]) )  
diff24 = nz(ret4[1]) - nz(ret4[2]) - (nz(ret4[2]) - nz(ret4[3]) )  


longCondition =    price[0] - ret4[1]  > 0
shortCondition =  price[0] - ret4[1] < 0

if(longCondition and shortCondition)
    longCondition = longCondition[1]
    shortCondition = shortCondition[1]
if(longCondition==false and shortCondition==false)
    longCondition = longCondition[1]
    shortCondition = shortCondition[1]



if (longCondition==true and shortCondition == false) 
    strategy.entry("Gaussbot Long", strategy.long )
if (longCondition==false and shortCondition == true)
    strategy.entry("Gaussbot Short", strategy.short)



Mais.