Cálculo da diferença, exemplos. - página 10

 
Aleksey Panfilov:

Para ver a dinâmica.

O mesmo perito em M15.



Não preste atenção às palavras de repreensão neste site: "overdraws". Os indicadores que redesenho têm pelo menos alguma capacidade de previsão, mas aqueles que normalmente não têm nenhuma capacidade de previsão. A capacidade preditiva não é um tema de discussão aqui. Na sua essência os seus indicadores estão sintonizados para prever (extrapolar) para o futuro e você pode obter algo deles.


Em termos de imagens, o que é valioso, na minha opinião.

Gosto muito da imagem verde anterior. O triângulo verde simples mostra-lhe que existe uma grande inclinação que afectará o desempenho da sua EA no futuro. Mas a segunda foto não indica uma propriedade tão valiosa do Expert Advisor.

 

O mesmo perito no M5. A história é cerca de metade do tempo.


Arquivos anexados:
2018_02_05.zip  219 kb
 
SanSanych Fomenko:

Não preste atenção às palavras de repreensão neste site, 'overdraws'. Os indicadores que redesenham têm pelo menos alguma capacidade de previsão, mas aqueles que não redesenham normalmente não têm qualquer capacidade de previsão. A capacidade preditiva não é um tema de discussão aqui. Na sua essência os seus indicadores estão sintonizados para prever (extrapolar) para o futuro e você pode obter algo deles.


Em termos de imagens, o que é valioso, na minha opinião.

Gosto muito da imagem verde anterior. O triângulo verde simples mostra-lhe que existe uma grande inclinação que afectará o desempenho da sua EA no futuro. Mas a segunda foto não indica uma propriedade tão valiosa do Expert Advisor.

Obrigado.

Eu concordo contigo. Parece que no M30 e agora no M5 o indicador se sincroniza melhor com o comportamento dos preços.

E é claro que ainda é uma estimativa, uma abordagem muito "áspera".

 

Gostaria de salientar que a condição de economia de recursos destacada em amarelo nos indicadores anexos é zerada para que a linha não desenhada seja exibida ao longo do gráfico.

      a1_Buffer[i]=((open[i] - Znach)    +5061600*a1_Buffer[i+1 ]-7489800    *a1_Buffer[i+2 ]+4926624*a1_Buffer[i+3 ]-1215450*a1_Buffer[i+4 ])/1282975;
      a5_Buffer[i+92]=a1_Buffer[i];   if(i>=0) { for(z=92-1;z>=0;z--){        a5_Buffer[i+0+z]=  4*a5_Buffer[i+1+z]  -  6*a5_Buffer[i+2+z]  +  4*a5_Buffer[i+3+z]  - 1*a5_Buffer[i+4+z];  }}
      a2_Buffer[i+92-leverage]=a5_Buffer[i+92-leverage]; 

No teste, pelo que entendi, a barra zero é a última barra desenhada pelo testador. Então, durante a otimização é razoável limitar o número de barras totalmente calculadas à última.

      a1_Buffer[i]=((open[i] - Znach)    +5061600*a1_Buffer[i+1 ]-7489800    *a1_Buffer[i+2 ]+4926624*a1_Buffer[i+3 ]-1215450*a1_Buffer[i+4 ])/1282975;
      a5_Buffer[i+92]=a1_Buffer[i];   if(i<=0) { for(z=92-1;z>=0;z--){        a5_Buffer[i+0+z]=  4*a5_Buffer[i+1+z]  -  6*a5_Buffer[i+2+z]  +  4*a5_Buffer[i+3+z]  - 1*a5_Buffer[i+4+z];  }}
      a2_Buffer[i+92-leverage]=a5_Buffer[i+92-leverage]; 

Ou um certo número dos últimos.

      a1_Buffer[i]=((open[i] - Znach)    +5061600*a1_Buffer[i+1 ]-7489800    *a1_Buffer[i+2 ]+4926624*a1_Buffer[i+3 ]-1215450*a1_Buffer[i+4 ])/1282975;
      a5_Buffer[i+92]=a1_Buffer[i];   if(i<=1000) { for(z=92-1;z>=0;z--){        a5_Buffer[i+0+z]=  4*a5_Buffer[i+1+z]  -  6*a5_Buffer[i+2+z]  +  4*a5_Buffer[i+3+z]  - 1*a5_Buffer[i+4+z];  }}
      a2_Buffer[i+92-leverage]=a5_Buffer[i+92-leverage]; 

Mas, neste caso, o indicador não corresponderá ao calculado durante a visualização em todo o gráfico.

 

Acrescentei ao indicador a possibilidade de seleccionar o grau de extrapolação:

      a1_Buffer[i]=((open[i] - Znach)    +5061600*a1_Buffer[i+1 ]-7489800    *a1_Buffer[i+2 ]+4926624*a1_Buffer[i+3 ]-1215450*a1_Buffer[i+4 ])/1282975;

      if(line_power ==1)   {    a5_Buffer[i+92]=a1_Buffer[i];   if(i>=0) { for(z=92-1;z>=0;z--){        a5_Buffer[i+0+z]=  2*a5_Buffer[i+1+z]  -  1*a5_Buffer[i+2+z];  }}}
      if(line_power ==2)   {    a5_Buffer[i+92]=a1_Buffer[i];   if(i>=0) { for(z=92-1;z>=0;z--){        a5_Buffer[i+0+z]=  3*a5_Buffer[i+1+z]  -  3*a5_Buffer[i+2+z]  +  1*a5_Buffer[i+3+z];  }}}
      if(line_power ==3)   {    a5_Buffer[i+92]=a1_Buffer[i];   if(i>=0) { for(z=92-1;z>=0;z--){        a5_Buffer[i+0+z]=  4*a5_Buffer[i+1+z]  -  6*a5_Buffer[i+2+z]  +  4*a5_Buffer[i+3+z]  - 1*a5_Buffer[i+4+z];  }}}
      if(line_power ==4)   {    a5_Buffer[i+92]=a1_Buffer[i];   if(i>=0) { for(z=92-1;z>=0;z--){        a5_Buffer[i+0+z]=  5*a5_Buffer[i+1+z]  - 10*a5_Buffer[i+2+z]  +  10*a5_Buffer[i+3+z] - 5*a5_Buffer[i+4+z]  +  1*a5_Buffer[i+5+z];  }}}

      a2_Buffer[i+92-leverage]=a5_Buffer[i+92-leverage]; 
 

E, consequentemente, no Expert Advisor.

 ma_1=iCustom(NULL,0,"2018_02_08_EMA_Polynom_s4_s1_4_p72_v.2",line_1_power, leverage_1,300,3,0);
 ma_2=iCustom(NULL,0,"2018_02_08_EMA_Polynom_s4_s1_4_p72_v.2",line_2_power, leverage_2,300,3,0);
 ma_1_P=iCustom(NULL,0,"2018_02_08_EMA_Polynom_s4_s1_4_p72_v.2",line_1_power, leverage_1,300,3,1);
 ma_2_P=iCustom(NULL,0,"2018_02_08_EMA_Polynom_s4_s1_4_p72_v.2",line_2_power, leverage_2,300,3,1);
 

Otimização para cruzar a linha extrapolada pelo polinômio de quarto grau (com uma alavancagem de extrapolação de 72, este é o preço de abertura da barra), a linha extrapolada pelo polinômio de terceiro grau.


Arquivos anexados:
2018_02_08_2.zip  211 kb
 

Estava a folhear o tópico e reparou que um comentário do post 64 morreu imerecidamente. ))

Caros moderadores, pode ser restaurado, no seu lugar anterior, no contexto apropriado? Ou abri-la para eu a editar? (abaixo, o próprio comentário )

Aleksey Panfilov2018.01.30 21:41RU
Aleksey Panfilov:

Sim.

Directamente relacionado com o Binómio de Newton. E o triângulo de Pascal. Adicionado a 30.01.2018.

É verdade para pontos equidistantes:

1*Y1-2*Y2+1*Y3=0 é a equação da diferença da linha.

1*Y1-3*Y2+3*Y3-1*Y4=0 - equação de diferença da parábola de segundo grau.

1*Y1-4*Y2+6*Y3-4*Y4+1*Y5=0 - equação da diferença da parábola do terceiro grau.

Também se sobrepõe com os tópicos:

https://www.mql5.com/ru/forum/61389/page48#comment_5633264

https://www.mql5.com/ru/forum/211220/page2#comment_5632736 .

1*Y1-5*Y2+10*Y3-10*Y4+5*Y5-1*Y6=0- equação da diferença da parábola de quarto grau.

1*Y1-6*Y2+15*Y3-20*Y4+15*Y5-6*Y6 +1*Y7=0- equação da diferença da parábola de quinto grau.

1*Y1-7*Y2+21*Y3-35*Y4+35*Y5-21*Y6 +7*Y7-1*Y8=0- equação da diferença da parábola do sexto grau.


Directamente das equações para pontos equidistantes derivam fórmulas de interpolação com um ombro de 1 intervalo.

3*Y2=1*Y1+3*Y3-1*Y4 - interpolação pela parábola do segundo grau.

4*Y2=1*Y1+6*Y3-4*Y4 +1*Y5- interpolação por parábola do terceiro grau.

5*Y2=1*Y1+10*Y3-10*Y4+5*Y5-1*Y6- interpolação pela parábola da quarta potência.

6*Y2=1*Y1+15*Y3-20*Y4+15*Y5-6*Y6 +1*Y7- interpolação com parábola de quinto grau.

7*Y2=1*Y1+21*Y3-35*Y4+35*Y5-21*Y6 +7*Y7-1*Y8- interpolação por parábola do sexto grau.

Como um código:

 
      a1_Buffer[i]=(open[i]   +3*a1_Buffer[i+1 ]   -1*a1_Buffer[i+2 ]  )/3;
      a2_Buffer[i]=(open[i]   +6*a2_Buffer[i+1 ]   -4*a2_Buffer[i+2 ]   +1*a2_Buffer[i+3 ]  )/4;
      a3_Buffer[i]=(open[i]   +10*a3_Buffer[i+1 ]  -10*a3_Buffer[i+2 ]  +5*a3_Buffer[i+3 ]  -1*a3_Buffer[i+4 ])/5;
      a4_Buffer[i]=(open[i]   +15*a4_Buffer[i+1 ]  -20*a4_Buffer[i+2 ]  +15*a4_Buffer[i+3 ]  -6*a4_Buffer[i+4 ]  +1*a4_Buffer[i+5 ])/6;
      a5_Buffer[i]=(open[i]   +21*a5_Buffer[i+1 ]  -35*a5_Buffer[i+2 ]  +35*a5_Buffer[i+3 ]  -21*a5_Buffer[i+4 ]  +7*a5_Buffer[i+5 ]  -1*a5_Buffer[i+6 ])/7;

A figura mostra o início do gráfico.

É evidente que as linhas construídas usando polinómios de potências 2-4 (cinza, azul, verde) estão confiantes de permanecer perto do gráfico.

As linhas construídas com polinómios de potências 5 e 6 (vermelho, amarelo) entram em algo parecido com ressonância ou auto-oscilação e gradualmente acumulam amplitude. Aumentar a alavancagem para polinómios de grau 5 ou maior não altera a situação.


A interpolação por uma equação de diferença de uma função constituída poruma soma de sinusoides de determinados períodos permite aumentar o "grau de polinômio" para, digamos, 12 graus (isto é como 6 sinusoides em torno de uma constante).

Contudo, uma situação semelhante(ressonância) também pode ser encontrada interpolando uma função de um sinusoidal em torno de uma constante (análoga a um polinómio de segundo grau), com uma certa combinação de ombro e período.

A analogia com os polinómios é feita através do número de pontos mínimos exigidos.

Arquivos anexados:
 

Otimização do indicadorNikolai SemkoBanzai.mq4 a partir da mensagem 57 deste tópico.

Same Expert Advisor, parâmetro otimizável é o deslocamento da linha para a direita.

 ma_1=iCustom(NULL,0,"Banzai",leverage_1, 0,leverage_1);
 ma_2=iCustom(NULL,0,"Banzai",leverage_2, 0,leverage_2);
 ma_1_P=iCustom(NULL,0,"Banzai",leverage_1, 0,leverage_1+1);
 ma_2_P=iCustom(NULL,0,"Banzai",leverage_2, 0,leverage_2+1);

Resultados:


Arquivos anexados:
2018_02_09.zip  245 kb
 

Otimização do indicadorNikolai SemkoBanzai.mq4 damensagem 57deste tópico.

O mesmo na M15:


Arquivos anexados:
2018_02_09_2.zip  212 kb
 

A maioria dos gráficos de otimização mostra claramente o limite do sinal "reverso " (linha vermelha), e consequentemente um certo "espelhamento " dos resultados (exemplo destacado pela linha amarela).


Razão: