Calcolo delle differenze, esempi. - pagina 10

 
Aleksey Panfilov:

Per vedere la dinamica.

Lo stesso esperto di M15.



Non fate caso alle parole di rimprovero su questo sito: 'overdraws'. Gli indicatori che ridisegnano hanno almeno una certa capacità predittiva, ma quelli che non lo fanno di solito non hanno alcuna capacità predittiva. La capacità predittiva non è un argomento di discussione qui. Nella loro essenza i vostri indicatori sono sintonizzati per prevedere (estrapolare) nel futuro e potete ricavarne qualcosa.


In termini di immagini, ciò che è prezioso secondo me

Mi piace molto l'immagine verde precedente. Il triangolo verde chiaro ti mostra che c'è una piattaforma abbastanza ampia che corrisponde ai parametri che influenzeranno le prestazioni del tuo EA in futuro. Ma la seconda immagine non indica una proprietà così preziosa dell'Expert Advisor

 

Lo stesso esperto della M5. La storia è lunga circa la metà.


File:
2018_02_05.zip  219 kb
 
SanSanych Fomenko:

Non fate caso alle parole di rimprovero su questo sito, 'overdraws'. Gli indicatori che ridisegnano hanno almeno una certa capacità predittiva, ma quelli che non ridisegnano di solito non hanno alcuna capacità predittiva. La capacità predittiva non è un argomento di discussione qui. Nella loro essenza i vostri indicatori sono sintonizzati per prevedere (estrapolare) nel futuro e potete ricavarne qualcosa.


In termini di immagini, ciò che è prezioso secondo me

Mi piace molto l'immagine verde precedente. Il triangolo verde chiaro ti mostra che c'è una piattaforma abbastanza ampia che corrisponde ai parametri che influenzeranno le prestazioni del tuo EA in futuro. Ma la seconda immagine non mostra una proprietà estremamente preziosa del vostro Expert Advisor

Grazie.

Sono d'accordo con te. Sembra che su M30 e ora su M5 l'indicatore si sincronizzi meglio con il comportamento del prezzo.

E naturalmente è ancora una stima, un approccio molto "approssimativo".

 

Vorrei far notare che la condizione di risparmio delle risorse evidenziata in giallo negli indicatori allegati è azzerata in modo che la linea non disegnata sia visualizzata in tutto il grafico.

      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]; 

Nei test, per quanto ne so, la barra zero è quella disegnata per ultima dal tester. Poi durante l'ottimizzazione è ragionevole limitare il numero di barre completamente calcolate all'ultima.

      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]; 

O un certo numero di ultimi.

      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]; 

Ma in questo caso l'indicatore non corrisponderà a quello calcolato durante la visualizzazione su tutto il grafico.

 

Ho aggiunto all'indicatore la possibilità di selezionare il grado di estrapolazione:

      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 di conseguenza nell'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);
 

Ottimizzazione per attraversare la linea estrapolata dal polinomio di quarto grado (con una leva di estrapolazione di 72, questo è il prezzo di apertura della barra), la linea estrapolata dal polinomio di terzo grado.


File:
2018_02_08_2.zip  211 kb
 

Stavo sfogliando il thread e ho notato che un commento del post 64 è morto immeritatamente. ))

Cari moderatori, può essere ripristinato, al suo posto nel contesto appropriato? O aprirlo per modificarlo? (sotto, il commento stesso)

Aleksey Panfilov2018.01.30 21:41RU
Aleksey Panfilov:

Sì.

Direttamente collegato al Binomio di Newton. E il triangolo di Pascal, aggiunto il 30.01.2018.

Per i punti equidistanti è vero:

1*Y1-2*Y2+1*Y3=0 è l'equazione della differenza della linea.

1*Y1-3*Y2+3*Y3-1*Y4=0 - equazione della differenza della parabola di secondo grado.

1*Y1-4*Y2+6*Y3-4*Y4+1*Y5=0 - equazione della differenza della parabola di terzo grado.

Si interseca anche con i temi:

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- equazione della differenza della parabola di quarto grado.

1*Y1-6*Y2+15*Y3-20*Y4+15*Y5-6*Y6 +1*Y7=0- equazione della differenza della parabola di quinto grado.

1*Y1-7*Y2+21*Y3-35*Y4+35*Y5-21*Y6 +7*Y7-1*Y8=0- equazione della differenza della parabola di sesto grado.


Le formule di interpolazione con una spalla di 1 intervallo sono derivate direttamente dalle equazioni per i punti equidistanti.

3*Y2=1*Y1+3*Y3-1*Y4 - interpolazione tramite la parabola di secondo grado.

4*Y2=1*Y1+6*Y3-4*Y4 +1*Y5- interpolazione per parabola di terzo grado.

5*Y2=1*Y1+10*Y3-10*Y4+5*Y5-1*Y6- interpolazione tramite la parabola della quarta potenza.

6*Y2=1*Y1+15*Y3-20*Y4+15*Y5-6*Y6 +1*Y7- interpolazione con parabola di quinto grado.

7*Y2=1*Y1+21*Y3-35*Y4+35*Y5-21*Y6 +7*Y7-1*Y8- interpolazione per parabola di sesto grado.

Come codice:

 
      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;

La figura mostra l'inizio del grafico.

È chiaro che le linee costruite usando polinomi di potenze 2-4 (grigio, blu, verde) stanno tranquillamente vicino al grafico.

Le linee costruite con polinomi di potenza 5 e 6 (rosso, giallo) entrano in qualcosa di simile alla risonanza o all'auto-oscillazione e accumulano gradualmente ampiezza. Aumentare la leva per i polinomi di grado 5 o superiore non cambia la situazione.


L'interpolazione con un'equazione della differenza di una funzione costituita dauna somma di sinusoidi di periodi dati permette di aumentare il "grado del polinomio" a, diciamo, 12 gradi (questo è come 6 sinusoidi intorno a una costante).

Tuttavia, una situazione simile(risonanza) può essere incontrata anche interpolando una funzione di una sinusoide intorno a una costante (analoga a un polinomio di secondo grado), con una certa combinazione di spalla e periodo.

L'analogia con i polinomi è disegnata dal numero di punti minimi richiesti.

 

Ottimizzazione dell'indicatoreNikolai SemkoBanzai.mq4 dal messaggio 57 di questo thread.

Stesso Expert Advisor, il parametro ottimizzabile è lo spostamento della linea a destra.

 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);

Risultati:


File:
2018_02_09.zip  245 kb
 

Ottimizzazione dell'indicatoreNikolai SemkoBanzai.mq4 dalmessaggio 57di questo thread.

Lo stesso su M15:


File:
2018_02_09_2.zip  212 kb
 

La maggior parte dei grafici di ottimizzazione mostra chiaramente il limite del segnale "inverso" (linea rossa), e di conseguenza un certo "rispecchiamento" dei risultati (esempio evidenziato dalla linea gialla).