Construindo um sistema comercial usando filtros digitais de baixa passagem - página 19

 

Olá a todos!

Sim, uma função engraçada no Matcadet - prever, - realmente prediz o número certo de passos à frente!

Vamos tentar fazer uma previsão para n barras à frente em cada barra. Para ter algo com que comparar, vamos fazer uma média de uma série de preços (linha vermelha fina quebrada) por uma simétrica (capaz de olhar para o "futuro") filtro Butterworth LF de ordem 1-st (linha vermelha grossa), e marcar a média real (não podemos olhar para o "futuro") com uma linha azul grossa. Vemos um FZ (lag) perceptível, deve ser assim. Agora vamos anexar nossa previsão de previsão com um horizonte de previsão de 40 barras (linha preta fina) ao indicador de atraso - ele realmente prevê o comportamento do indicador de atraso antes do tempo! É verdade, ela se tornou menos estável.

O que acontecerá se aumentarmos o horizonte de previsão? Você pode ver a resposta na animação anexa, a fina linha azul é a LPF com uma janela de média decrescente suavemente

Arquivos anexados:
1.zip  130 kb
 

Eu acho que o assunto é

Tomou MathLog(Close[i]/Close[i+1]) /// como entendido em MQL4

Decompôs em harmônicas (Muito obrigado pela biblioteca klot)

Criei um Expert Advisor baseado no indicador (também graças ao klot), embora ele seja ligeiramente modificado.

A essência deste Expert Advisor tem 8 harmônicas

Se a primeira for maior que a linha zero (IMHO), consideramos que é uma tendência de "longo prazo" para cima

Se a terceira harmônica cruzar a linha zero de cima para baixo, consideramos (IMHO) que a tendência mudou no nível "inferior".

Correspondentemente, ao contrário, com um bai

Aqui está uma foto do testador

Conjunto de tudo o que usei no arquivo

Admito que escolhi parâmetros de lucro de perda no otimizador

Algumas linhas no indicador foram comentadas

int start()
  {
   int    counted_bars=IndicatorCounted();
   counted_bars=100;
   double m;
   for(int i=M-1; i>=1; i--)
   {
      //aa[i]=iOpen(NULL,0,i);
      //aa[i]=Close[i]-Close[i+1];
      //aa[i]=Open[i+1]-Close[i];
      aa[i]=MathLog(Close[i]/Close[i+1]);
      //aa[i]=MathLog(Close[i]/Open[i+1]);
   }

Você pode comentar cada linha uma a uma e verificar o que pode "funcionar", você pode fazer seu próprio comentário ...

Arquivos anexados:
experts.zip  42 kb
 
ao Neutron

Seryoga, oi, muito tempo sem ver!!! Talvez você possa me explicar brevemente o que o filtro prevê para você e Prival? Obrigado antecipadamente, você realmente fez AF????

Да, забавная функция в Маткаде - predict, -действительно предсказывает на нужное количество шагов вперёд!

Fico feliz em ajudar. E por acaso você não tem um algoritmo detalhado para sua implementação? :о)

 
Neutron:

Sim, a característica divertida do Matcadet - prever - realmente prevê o número certo de passos à frente!

O que acontece se você continuar aumentando o horizonte de previsão? Você pode ver a resposta na animação anexa - a fina linha azul é a LPF com uma janela de média suavemente decrescente


Oi Sergei !

Mas o que acontece se você não ampliar o horizonte de previsão e deixar prever o resultado, ou seja, na linha preta fina?

 
Prival:

grasn

:-) bem, por despeito, vou mostrar a você também o filtro Kalman. É baseado na análise da ACF. A janela é minutos na semana passada 7200. O insumo é apenas uma série de preços, sem otimização. Obrigado pelo link.

A metodologia é a seguinte. Análise de ACF - Retiro os parâmetros ACF no modelo e os coloco no filtro Kalman, ele dá previsão e estimativa atual. Eu escrevi um programa, posso processar os preços de entrada no Matcadet em tempo real e administrar a MT, se necessário posso compartilhar.




Quero entender por que estas linhas são melhores do que "inteligente" MA?

 
Quero entender como essas linhas são melhores do que os MA "enganados"?

Isso é o que eu me pergunto...

 
Mathemat, um presente para você - J. Bendat, A. Pearsol, "Applied Random Data Analysis" (http://dsp-book.narod.ru/bendat.djv). Os autores dão uma descrição e exemplos do uso do método de inversão para verificar a estacionaridade de um processo aleatório. Não entrei nos detalhes e no rigor do método em si, mas superficialmente ele é confiável. Acho que você precisa cavar nesta direção.

Por exemplo, aqui: http://edu.secna.ru/main/review/2001/n3/MONA2001/Morozova.pdf - este trabalho é utilizado para justificar a estacionaridade dos resultados de alguns tipos de transformações wavelet de séries de preços. Na verdade, é o que você precisava.
 
grasn:
ao Neutron

Talvez você possa me explicar brevemente o que o filtro prevê para você e Prival? Obrigado de antemão. Você realmente fez o AF???

Fico feliz em ajudar. Você tem por acaso um algoritmo detalhado para sua implementação? :о)


Não sei o que o filtro em Prival prevê, mas o meu não prevê nada :-(

Eu não entendo o que é AF... Olhe você mesmo, eu faço a função Predict em VR suave com SWF e obtenho VR menos suave com SWF mais baixo, mas pela qualidade de suavização não é melhor do que o mesmo LPF com janela de média menor, e em grandes horizontes é visivelmente mais fraco do que este último (veja avishka). Isto é, o preditor é repelido em seu trabalho da série alisada e "desmorona" à medida que o horizonte se aproxima da PA inicial, mas a FPL, ao contrário, repulsa a PA inicial e se afasta gradualmente dela tornando-se mais suave... Este resultado é de se esperar, de fato não se pode obter muitas informações da BP, mesmo depois de ter suavizado tudo de antemão - não se pode enganar a natureza! Embora houvesse uma foto no fórum com uma demonstração do LPF baseado em NS, nenhuma PF foi observada (quase) com excelente qualidade de suavização! Se não for uma besteira, temos algo para trabalhar.

P.S. Eu não tenho um algoritmo para a função Predict.


Yurixx:

Mas o que acontece se você não aumentar o horizonte de previsão, mas deixar prever sobre o resultado obtido, ou seja, sobre uma linha preta fina?

Então você está sugerindo que você deixe o preditor passar por cima do resultado de sua própria previsão? Afinal, a linha preta fina, é a previsão da média (a linha azul grossa) com um horizonte sempre crescente...

Explique, por favor.

 
bstone писал (а): Mathemat, um presente para você - J. Bendat, A. Pearsol, Análise Aleatória de Dados Aplicada
Muito obrigado, bstone. Já foi feito o download. Vamos ver o que esses autores dizem sobre a estacionaridade...
 
Neutron:
Yurixx:

Mas o que acontece se você não aumentar o horizonte de previsão mas deixar o preditor sobre o resultado, ou seja, a fina linha preta?

Então você está sugerindo que o preditor deve ser informado sobre o resultado de sua própria previsão? Afinal, a linha preta fina, é a previsão média (a linha azul grossa) com um horizonte sempre crescente...



Exatamente. E por que não? Eu percebo, é claro, que o resultado dessas ações, realizadas talvez várias vezes, não pode, em última análise, render uma gama de preços - não há milagres. Mas é interessante ver como este algoritmo funciona. :-) Ele trabalha com dados do passado, não olha para o futuro?