Prevendo o futuro com as transformações de Fourier - página 2

 
ANG3110:

Somente o indicador anexo não desenha nada.

E é verdade. Percorra o gráfico para a esquerda, você verá.

 

Na linha paralela 'Not Mashka's Business! ' há uma discussão sobre a previsão com 'MA perfeito'. Acredito que o alisamento perfeito só pode ser obtido usando Fourier e limiar, como feito aqui. A estimativa mais precisa está logo no meio da janela da amostra. Você precisa fazer uma pesquisa semelhante, mas baseie-a neste algoritmo em vez de MA.

Em segundo lugar, você pode justificar matematicamente com precisão o valor do limiar(porog), livrando-se assim de tentar (encontrar o valor ótimo) deste valor.

Em terceiro lugar, para aumentar o tempo de previsão, é necessário aumentar a precisão das medições do valor atual, é possível de duas maneiras - análise simultânea de várias moedas, ou aumentar o número de fornecedores de cotações . Otimização. DDE em VB (VBA)'.

 

Para ver o futuro,

A caixa de seleção "Offset graph" deve ser selecionada nas configurações da janela gráfica,

int. externo InPast=0,

externo inttern Futur=100 para quantas barras a previsão

 

Quanto ao porog, em princípio vou refazer esta parte, porque quando uma freqüência ultrapassa o limite, o gráfico muda drasticamente, talvez eu o deixe como estava no klot, ou farei uma diminuição suave.

 

Engraçado idyuk, obrigado!

Experimentei no testador, por assim dizer, em condições reais. Às vezes parece ser o mesmo, mas às vezes é o contrário, especialmente antes dos movimentos fortes ou no final dos movimentos fortes.

Situação muito interessante é formada quando 3 indicadores com potência diferente de dois, por exemplo, 8, 9 e 10 são aplicados ao gráfico, e muitas vezes olham em direções diferentes. E se tentarmos usar o valor médio desses 3 indicadores?

Você já tentou?

 
m_keeper:

Quanto ao porog, em princípio vou refazer esta parte, porque quando qualquer freqüência ultrapassa o limite o gráfico muda drasticamente, talvez eu o deixe como estava no klot ou farei uma diminuição suave.

Mais uma coisa que eu gostaria de fazer, para me livrar do FFT (grau dois não é a melhor escolha para encontrar a melhor janela). Melhor uma transformação discreta.

Sobre o limiar, existem os critérios de Neumann Pearson, observador ideal, consultá-los. A aplicação desta teoria permitirá fugir da otimização (encontrar o valor ideal na história), e permitirá fazer um limiar adaptativo, existem muitas variantes de realização.

 

Parece que o canto do digitalizador está agora nesta linha :), então aqui está uma pergunta de reflexão. Se você tirar a densidade espectral média para a tabela de preços, você obtém este tipo de imagem


Você pode ver que para baixas freqüências não é um 1/f ruim, mas para altas freqüências há um desvio perceptível desta lei. Isto foi discutido há algum tempo e a versão principal sugeriu que temos algum tipo de ruído de digitalização. A idéia é que poderia ser útil filtrar este componente. Ou seja, deixar um 1/f limpo para toda a faixa de freqüência. E a questão é como fazer isso. A idéia é ter algum procedimento que tome como entrada uma matriz de densidade espectral e coeficientes de saída do filtro digital. Em princípio, posso pensar em uma simples função de ponderação para as amplitudes de Fourier, mas um filtro digital seria mais econômico de usar.
 

A biblioteca agora contém o arquivo __lib_FFT.mq4, enquanto o texto indicador contém #_lib_FFT.mq4, é por isso que não é desenhado.

 
Prival:
m_keeper:

Quanto ao porog, em princípio vou refazer esta parte, porque quando qualquer freqüência ultrapassa o limite o gráfico muda drasticamente, talvez eu o deixe como estava no klot ou farei uma diminuição suave.

Mais uma coisa que eu gostaria de fazer, para me livrar do FFT (grau dois não é a melhor escolha para encontrar a melhor janela). Melhor uma transformação discreta.

Sobre o limiar, existem os critérios de Neumann Pearson, observador ideal, consultá-los. Aplicando esta teoria, você se afastará da otimização (encontrando o valor ideal na história), e permitirá que você faça um limiar adaptativo, há muitas opções de implementação.

Em princípio, é muito fácil se livrar do grau 2:

w=2*pi/T;

for (int k=0; k<=N; k++)
   {                                                              
      sum_cos=0.0; 
      sum_sin=0.0;                                           
      for (int n=0; n<T; n++) 
      {
         sum_cos+=Close[n]*MathCos(k*n*w); 
         sum_sin+=Close[n]*MathSin(k*n*w);
      }
      ak[k]=sum_cos*2/T; 
      bk[k]=sum_sin*2/T;
   }
   ak[0]=ak[0]/2;
   //------------------------------------
   for (n=T-1; n>=0; n--)
   {                                                        
      sum=0.0;                                       
      for (k=0; k<=N; k++)
      {                                                             
         sum+=ak[k]*MathCos(k*n*w)+bk[k]*MathSin(k*n*w);
      }                                                             
      fx[n]=sum;
   }

N - número de harmônicas,

T - período.


A janela ideal, ou mais precisamente o período ideal T, é mais fácil de escolher por 2 critérios, pelo RMS mínimo e pelo máximo da soma das amplitudes harmônicas. Mas devido às múltiplas ondas no mercado, haverá várias janelas ideais.

E você também deve levar em conta que quando você tentar extrapolar, devido a pecados periódicos e cosenos, os componentes periódicos anteriores serão apenas adicionados ao final e, embora a probabilidade de repetição seja bastante alta, a fase e especialmente a amplitude ainda será diferente e, de fato, você deve sempre ajustar a fase, como um detector de fase.


A definição de fase como MathArctan( ) não é boa devido às propriedades arctan, pelo menos +/- pi/2 deve ser levada em conta.

É melhor definir a fase de uma maneira ligeiramente diferente.

 

Não há necessidade de fugir do FFT, na verdade não é necessário dividir a série exatamente ao meio, ela é dividida para aumentar a velocidade de contagem, e não porque é necessário dividir estritamente por dois. Uma vez eu trabalhei com FFT que trabalha com séries de qualquer comprimento, vou reescrevê-lo para mql algum tempo depois.


Estou tentando descobrir quais características podem indicar falsos positivos

aqui estão duas fotos, com n=9 e n=10

Em ambos os casos, a cauda da janela atingiu um pico agudo que pode ser o do futuro.

Agora estou experimentando com o pré-processamento em série, talvez ele ajude.


Mudou a condição de alisamento, agora não há saltos no gráfico, tudo corre bem.


Quanto ao gráfico que está sendo redesenhado, não vejo nenhum problema.

Os preços de fechamento não são o passado, mas os eventos que os geraram - as ondas (no caso de Fourier) - são o passado

e aprendemos mais e mais sobre eles a cada novo bar.

Arquivos anexados: