Calcolo delle differenze, esempi. - pagina 3

 
Nikolai Semko:


Non è quello che intendevo. Non ho detto"quando si interpola è un 'tracciante' e non è affatto una regressione".

Onestamente non capisco nemmeno il significato di questa frase.
Intendevo dire che tutti i tipi di interpolazione sono ridisegnabili (e anche la tua versione lo è). E non ridisegnabile è solo il tracciato di queste funzioni di interpolazione, che le mie parole supportate da gif di animazione. Consiglio di studiarli ancora una volta. In queste gif, la traccia di tracciamento è una linea bicolore blu-viola. Ma non è una funzione di interpolazione. Il colore blu significa che la funzione di interpolazione in questo punto è verso l'alto, e quella viola è verso il basso.
Se grado del polinomio = 0, questa traccia è solo una media mobile


Questi buffer non vengono ridisegnati. La prima è l'interpolazione e la seconda l'estrapolazione. Come potete vedere dal codice, c'è un valore su ogni barra.

 
      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;

      a2_Buffer[i]=  3160*a1_Buffer[i]   -6240   *a1_Buffer[i+1 ]    +  3081*a1_Buffer[i+2 ];
 
Nikolai Semko:


Non è quello che intendevo. Non ho detto"quando si interpola è un 'tracciante' e non è affatto una regressione".

Onestamente non capisco nemmeno il significato di questa frase.
Intendevo dire che tutti i tipi di interpolazione sono ridisegnabili (e anche la tua versione lo è). E non ridisegnabile è solo la traccia di tracciamento di queste funzioni di interpolazione, che le mie parole hanno sostenuto l'animazione gif - kami. Consiglio di studiarli ancora una volta. In queste gif, la traccia di tracciamento è una linea bicolore blu-viola. Ma non è una funzione di interpolazione. Il colore blu significa che la funzione di interpolazione in questo punto è verso l'alto, e quella viola è verso il basso.
Se grado del polinomio = 0, questa traccia è solo una media mobile


e con cosa e come hai girato il video?
(domanda eternamente torturante, perché è dolorosamente doloroso per qualsiasi "non artista" progettare un software per il Mercato :-) è più facile da scrivere)
 

Ho aggiunto altre linee di costruzione ridisegnabili: primo (rosso), secondo (grigio) e terzo (verde) grado.

      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;

      a2_Buffer[i]=  2701*a1_Buffer[i]   -5328   *a1_Buffer[i+1 ]    +  2628 *a1_Buffer[i+2 ];

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

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

      a5_Buffer[i+92]=a1_Buffer[i];   if(i<=1) { 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]   ;  }}

      a6_Buffer[i+92]=a1_Buffer[i];   if(i<=1) { for(z=92-1;z>=0;z--){        a6_Buffer[i+0+z]=  2*a6_Buffer[i+1+z]  -  1*a6_Buffer[i+2+z]     ;  }}

//----
   SetIndexShift(2,-72);
   SetIndexShift(5,20);
   SetIndexShift(4,20);
   SetIndexShift(0,20);
   SetIndexShift(1,20);

Capito:

Il polinomio di secondo grado (grigio) tocca la linea estrapolata nell'ultimo punto, come dovrebbe.

 
Aleksey Panfilov:

Propongo di raccogliere indicatori ed esperti sul calcolo delle differenze in questo thread, nel codice open source.

Se ci sarà interesse, alla fine costruiremo o disegneremo qualcosa di utile. :)

Ho cercato di riscrivere l'indicatore in una forma più chiara come esempio:


Confronta i calendari giuliano e gregoriano con il capodanno cinese.

 
Vladimir Zubov:

Confronta il calendario giuliano e quello gregoriano con il capodanno cinese.


Interessante. Perché? )))

Sta facendo un parallelo con il calcolo differenziale?

Penso che sia abbastanza giustificato. )))

 
Yousufkhodja Sultonov:

Avete provato questa formula?

Y = a0 + a1X + a2X^2 + a3X^3 + a4X^4


Prova con questa formula:

Y = a0 + a1X + a2X^3 + a3X^5

 
Petr Doroshenko:

Prova a usare questa formula:

Y = a0 + a1X + a2X^3 + a3X^5

Posso anche Y = a0 + a1X + a2X^3 + a3X^5 + a4X^7, ma, qual è il punto? Come giustifica questo particolare approccio?

Attualmente facendo:

X5 = a0 + a1X1 + a2X2 + a3X3 + a4X4

Cioè, esamino la dipendenza del prezzo dell'ultima barra (X5) dai prezzi delle 4 barre precedenti (X1, X2, X3, X4) e guardo i cambiamenti dei rapporti a0, a1, a2, a3, a4. Appaiono cose interessanti e presto riporterò i risultati.

 
Maxim Kuznetsov:
Come hai girato il video?
(è sempre una domanda dolorosa, perché è così doloroso per qualsiasi "non artista" fare un software per il mercato :-) è più facile scrivere)

Il video è stato catturato dallo schermo e un file gif è stato generato con Camtasia 9. Ci sono molte informazioni su youtube.

 
Aleksey Panfilov:

Questi buffer non vengono ridisegnati. Il primo interpola il secondo estrapola. Potete vedere dal codice che c'è un valore per ogni barra.


Sì, mi sono sbagliato. Credevo che usasse davvero l'approssimazione. Ho dato un'occhiata più da vicino al tuo codice e mi sono reso conto che non è un'approssimazione, ma solo una media banale, anche se molto insolita. Dopo di che si sposta la linea viola e la linea rossa di 72 barre a sinistra e si finisce di disegnare la coda rossa di 92 barre, e viene ridisegnata con ogni nuova barra. La linea blu è formata dalla linea viola spostata. E a proposito, è più corretto usare il prezzo di chiusura piuttosto che quello di apertura. Se si passa alla chiusura, si può immediatamente vedere che ad ogni tick la coda rossa di 92 barre salta.

Spostare le medie mobili a sinistra non ha alcuna utilità e applicazione pratica. Serve solo per la bellezza, la forma e il fascino.

Ho bisogno di capire la differenza tra approssimazione e smoothing. Quando si approssima, i coefficienti di una funzione (polinomiale, Fourier, Bezier, spline, ecc.) sono calcolati su un dato intervallo di dati, e questi coefficienti di solito cambiano tutti quando cambia almeno un valore dei dati, quindi la funzione viene ridisegnata sull'intero intervallo di dati osservati. Ma nel caso della media, viene considerato solo un punto corrente sulla base dei dati precedenti; quindi, la media (smoothing) non viene ridisegnata, ma rimane sempre indietro rispetto ai dati, a differenza dell'approssimazione.
E non capisco cosa c'entrino il polinomio di qualche grado e il binomio di Newton, se non ci sono gradi nemmeno nel codice.

 

Salve, ragazzi.

No, è tutto interessante, naturalmente. Dal punto di vista dell'occupazione. Ma! Vari trucchi per portare il risultato e disegnare le linee nel periodo passato? Nel tuo esempio { (Come)a4_Buffer[i+0+z]= 5*a4_Buffer [i+1+z] e TD. } A cosa può portare? Corretto! Per ottenere il risultato sull'ultimo tick e poterlo utilizzare solo sul grafico. Sotto forma di un'immagine del tutto sorprendente.