
A estratégia de previsão de ondas de Gauss é uma estratégia de negociação quantitativa baseada em ondas de Gauss. Utiliza as características de suavização das ondas de Gauss para filtrar várias vezes a sequência de preços, gerando várias sequências de preços após suavização.
O núcleo da estratégia é o algoritmo de Gauss. O filtro de Gauss é um filtro de suavização linear que usa a função de Gauss como peso. A estratégia define o parâmetro p como o tamanho da janela de filtro.[i] representa o resultado de i vezes a onda de Gauss sobre a sequência de preços original.
A estratégia usa a ideia da recorrência. Primeiro, com a sequência de preços alfa e original price, calcula-se a primeira onda ret. Em seguida, com base em ret, a segunda onda é feita, obtendo ret2 repetido várias vezes. Finalmente, a combinação de várias sequências de preços, compõe-se uma curva para prever o preço futuro ret4. Se o preço previsto for maior que o preço real atual, faça mais; Se for menor que o preço atual, faça zero.
Assim, através de várias ondas de filtragem, pode ser mais suave e combinar tendências. Ao mesmo tempo, a combinação de várias combinações permite a previsão de movimentos de preços no curto prazo.
A estratégia tem as seguintes vantagens:
O uso de ondas de alta freqüência para suavizar o preço. Pode filtrar eficazmente o ruído de alta freqüência, tornando a estratégia mais estável.
O uso de filtragem recorrente em várias ondas permite uma melhor adaptação das tendências de preços e uma melhor previsão.
Preços de previsão de simulação baseados em múltiplos formulários. Pode modelar movimentos de preços de curto prazo, gerando assim um sinal de negociação.
Combinação de preços atuais com preços de previsão. Os sinais de negociação são combinados diretamente com a previsão de tendências para evitar oportunidades de negociação perdidas.
A implementação é simples, fácil de entender e de otimizar. Pode ser usado como um módulo básico de estratégia de alta frequência, estendendo-se a outros indicadores de análise.
A estratégia também apresenta os seguintes riscos:
Os filtros de Gauss podem ser usados para suavizar mudanças bruscas de preços, podendo perder oportunidades de negociação de curto prazo.
Há um risco de sobre-conformidade na adaptação de múltiplos modelos. Se o padrão de mudança de preço for mutante, isso reduzirá a eficácia da previsão.
O tamanho da janela de filtro e o número de fases de integração de polinômios precisam ser definidos com precisão. Se não for adequado, pode falhar.
Dependendo apenas do preço de abertura como sinal de negociação. Não é possível realizar operações de negociação no disco interno.
A estratégia pode ser otimizada em:
Aumentar o treinamento do modelo e o mecanismo de retreinamento da janela de deslizamento. Permitir o ajuste dinâmico dos parâmetros da política, reduzindo o risco de sobreajuste.
Combinando mais indicadores e características de preços. Input estratégico rico, fazendo previsões mais estáveis.
Aumentar o mecanismo de suspensão de perdas. Definir a proporção máxima de perdas para evitar que os eventos extremos causem perdas significativas.
Optimizar o gerenciamento de posições. Ajustar posições de forma dinâmica com base na precisão de previsão e na volatilidade.
Tente fazer previsões baseadas em modelos de aprendizagem de máquina convencionais. Modelos de aprendizagem profunda, como o LSTM. Aumente ainda mais a capacidade de previsão de estratégias.
Em geral, esta estratégia é uma estratégia de quantificação de alta frequência que utiliza as ondas de Gauss e a simulação de múltiplos termos para fazer previsões de preços. Ela tem certas vantagens, mas também há espaço para melhorias.
/*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)