Cálculo de diferencias, ejemplos. - página 3

 
Nikolai Semko:


No es eso lo que quería decir. No he dicho que"en la interpolación es un 'trazador' y no una regresión en absoluto".

Sinceramente, ni siquiera entiendo el significado de esa frase.
Me refería a que todos los tipos de interpolación son redibujables ( y tu versión también lo es). Y no redrawable es sólo el trazado de estas funciones de interpolación, que mis palabras apoyaron la animación gif - kami. Le aconsejo que los estudie una vez más. En estos gifs, el trazado es una línea bicolor azul-púrpura. Pero no es una función de interpolación. El color azul significa que la función de interpolación en ese punto es ascendente, y el morado, descendente.
Si el grado del polinomio es = 0, esta traza es sólo una media móvil


Estos topes no se redibujan. La primera es la interpolación y la segunda la extrapolación. Puedes ver en el código que hay un valor en cada 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:


No es eso lo que quería decir. No he dicho"cuando se interpola esun'trazador' y no una regresión en absoluto".

Sinceramente, ni siquiera entiendo el significado de esa frase.
Me refería a que todos los tipos de interpolación son redibujables ( y tu versión también lo es). Y no redrawable es sólo el trazado de estas funciones de interpolación, que mis palabras apoyaron la animación gif - kami. Le aconsejo que los estudie una vez más. En estos gifs, el trazado es una línea bicolor azul-púrpura. Pero no es una función de interpolación. El color azul significa que la función de interpolación en este punto es ascendente, y el púrpura es descendente.
Si el grado del polinomio es = 0, esta traza es sólo una media móvil


¿y con qué y cómo has grabado el vídeo?
(pregunta eternamente torturadora, porque es dolorosamente penoso para cualquier "no artista" diseñar un software para el Mercado :-) es más fácil escribir )
 

He añadido más líneas de construcción redibujables: primer (rojo), segundo (gris) y tercer (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);

Lo tengo:

El polinomio de segundo grado (gris) toca la línea extrapolada en el último punto, como debe ser.

Archivos adjuntos:
 
Aleksey Panfilov:

Propongo recopilar indicadores y expertos en cálculo de diferencias en este hilo, en el código abierto.

Si hay interés, acabaremos construyendo o dibujando algo útil. :)

He intentado reescribir el indicador de forma más clara como ejemplo:


Compara los calendarios juliano y gregoriano con el año nuevo chino.

 
Vladimir Zubov:

Compare los calendarios juliano y gregoriano con el Año Nuevo chino.


Interesante. ¿Por qué? )))

¿Estás haciendo un paralelismo con el cálculo diferencial y el cálculo de diferencias?

Creo que está bastante justificado. )))

 
Yousufkhodja Sultonov:

¿Has probado esta fórmula?

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


Prueba con esta fórmula:

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

 
Petr Doroshenko:

Prueba a utilizar esta fórmula:

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

También puedo Y = a0 + a1X + a2X^3 + a3X^5 + a4X^7, pero, ¿qué sentido tiene? ¿Cómo justifica usted este enfoque particular?

En la actualidad:

X5 = a0 + a1X1 + a2X2 + a3X3 + a4X4

Es decir, examino la dependencia del precio de la última barra (X5) de los precios de las 4 barras anteriores (X1, X2, X3, X4) y observo el cambio de los coeficientes a0, a1, a2, a3, a4. Aparecen cosas interesantes y pronto informaré de los resultados.

 
Maxim Kuznetsov:
¿Cómo has grabado el vídeo?
(siempre es una pregunta dolorosa, porque es muy doloroso para cualquier "no artista" hacer un software para el Mercado :-) es más fácil escribir )

Se capturó el vídeo de la pantalla y se generó un archivo gif con Camtasia 9. Hay mucha información en YouTube.

 
Aleksey Panfilov:

Estos topes no se redibujan. La primera interpola la segunda extrapola. En el código se puede ver que hay un valor para cada barra.


Sí, me he equivocado. Pensaba que realmente estabas usando la aproximación. He mirado más detenidamente tu código y me he dado cuenta de que no es una aproximación, sino un promedio trivial, aunque muy poco habitual. A continuación, se desplaza la línea púrpura y la línea roja 72 barras hacia la izquierda y se termina de dibujar la cola roja de 92 barras, y se redibuja con cada nueva barra. La línea azul se forma a partir de la línea púrpura desplazada. Y por cierto, es más correcto utilizar el precio de cierre que el de apertura. Si se cambia al cierre, se puede ver inmediatamente que con cada tick salta la cola roja de 92 barras.

Desplazar las medias móviles hacia la izquierda no tiene ninguna utilidad ni aplicación práctica. Sólo sirve para la belleza, el ajuste y el encanto.

Necesito entender la diferencia entre aproximación y suavización. En la aproximación, los coeficientes de una función (polinómica, de Fourier, de Bezier, spline, etc.) se calculan sobre un intervalo de datos determinado, y estos coeficientes suelen cambiar todos cuando cambia al menos un valor de los datos, por lo que la función se redibuja sobre todo el intervalo de datos observados. Pero en el caso de la promediación, sólo se considera un punto actual sobre la base de los datos anteriores; por lo tanto, la promediación (alisamiento) no se vuelve a trazar, sino que siempre va por detrás de los datos, a diferencia de la aproximación.
Y no entiendo qué tienen que ver el polinomio de algún grado y el binomio de Newton, si ni siquiera hay grados en el código.

 

Hola, chicos.

No, todo es interesante, por supuesto. Desde el punto de vista del empleo. ¡Pero! Diversos trucos con el acarreo del resultado y el trazado de líneas en el período pasado??? En tu ejemplo { (Como) a4_Buffer [i+0+z]= 5*a4_Buffer [i+1+z] y TD. ¿A qué puede conducir? ¡Correcto! Para obtener el resultado en el último tick y poder utilizarlo sólo en el gráfico. En forma de una imagen completamente sorprendente.