Lienzo vs. Etiquetas - página 12

 
Andrey Khatimlianskii:

¿Cómo puedo limitar la frecuencia de actualización del kanvas en el visualizador de forma humana?

¿Para que en velocidad lenta la imagen se actualice en tiempo real, y en velocidad rápida no ralentice la prueba?

Ahora mismo el lienzo (si se actualiza en cada tick) ralentiza mucho toda la visualización (el perfil muestra un 80-90% de tiempo de renderizado). Me retorcí con la pausa configurable en segundos, pero es una muleta que limita la funcionalidad (la imagen se actualiza raramente incluso a velocidad lenta).

¿A qué se vincula para que no se actualice con demasiada frecuencia? ¿GetMicrosegundos?

¿Qué funciones omitir?

Andrey ya escribí sobre ello aquí hace más de un año.

Funciona bastante bien.
Aquí hay un vídeo en directo (sólo dos kanvases):

Sólo me falta añadir que en el tester el evento CHARTEVENT_CHART_CHANGE no funciona,

por lo que incluyo lo siguiente en el bloque de formación del lienzo (cuando se utiliza iCanvas):

void BildParabolas() {
   if(Canvas.tester) ChartChanged();
   static uint lastCalc=0;
   uint cur=GetTickCount();
   if (cur-lastCalc<17) return;
...

Y aquí está parte del código en OnCalculate del indicador que está en el gif:

static uint lastCalc=0; 
if (Canvas.tester) {
      uint cur=GetTickCount();
      if (cur-lastCalc>17) {
         lastCalc=cur;
         BildParabolas();
         menu.Draw();
      }
   }

 
Dmitry Fedoseev:
es obvio a simple vista que kanvas es significativamente más lento


 
Taras Slobodyanik:

En el probador de MT5, el temporizador funciona, puedes ponerlo a 60 segundos y se actualizará cada minuto a la hora del probador)

Sobre la muletilla de la pausa que escribí, no encaja.

 
Nikolai Semko:

Andrei, escribí sobre ello aquí hace más de un año.

Funciona bastante bien.
Aquí hay un vídeo en directo (sólo dos kanvases):

Parece un poco lento, en cuanto a la velocidad máxima.

Gracias, lo intentaré a través de GetTickCount.

 
Andrey Khatimlianskii:

Parece un poco lento para la velocidad máxima.

Gracias, lo intentaré a través de GetTickCount.

No es el máximo. Es muy sensible frente al máximo.
Aquí está el máximo:

 
Andrey Khatimlianskii:

Parece un poco lento para la velocidad máxima.

¡Gracias, lo intentaré a través de GetTickCount!

Además, para que no haya un sesgo con respecto al propio gráfico, deberíamos probar a experimentar con OBJ_BITMAP en lugar deOBJ_BITMAP_LABEL. Para vincularse a la hora y al precio en lugar de a las coordenadas XY.
Tengo muchas ganas de probarlo, pero no puedo hacerlo. En este caso tendremos que hacer el lienzo más grande que el tamaño de la ventana y cambiar la lógica de control. El código puede tener una importante ventaja de velocidad al no tener que redibujar todo el lienzo, sino sólo una parte más pequeña, si la escala vertical se mantiene. En cualquier caso, no será molesto ver el kanvas desequilibrado con el gráfico principal cuando se mueve rápido.

 
Nikolai Semko:

No es el máximo. Es muy sensible frente al máximo.
Eso es lo máximo:

¡¿Es eso "todas las garrapatas"?! Si es así, genial. Lo comprobaré.


Nikolai Semko:

Además, para que no haya un sesgo en relación con el propio gráfico, deberíamos probar a experimentar con OBJ_BITMAP en lugar deOBJ_BITMAP_LABEL. Para vincularse a la hora y al precio en lugar de a las coordenadas XY.
Tengo muchas ganas de probarlo, pero no puedo hacerlo. En este caso tendríamos que hacer el lienzo más grande que el tamaño de la ventana y cambiar la lógica de control. Tal vez haya una ganancia de velocidad. De todos modos, el lienzo desequilibrado y el gráfico principal no romperán el ojo cuando el movimiento sea rápido.

Tengo un panel sencillo. No hay enlace al gráfico.

 
Andrey Khatimlianskii:

Tengo un salpicadero normal. No hay ningún enlace al gráfico.

Ah, bueno, está bien entonces.
Yo también tengo un lienzo en mi hypha, y es el panel que menos recursos consume, porque no tengo que redibujarlo tan a menudo y captar el momento en que entra una nueva barra.

 
Andrey Khatimlianskii:

¡¿Es eso "todos los tics"?! Si es así, genial. Lo comprobaré.

No, fue un minuto OHLC en 3 minutos. Pero he comprobado todas las garrapatas. La imagen es casi la misma. Porque el redibujado del kanvas en este caso no está ligado a los ticks, sino sólo al tiempo real (no al tiempo del probador). Es decir, cuanto mayor es la velocidad, menor es la densidad de fotogramas. Pero para el ojo la diferencia no es visible.

 
Sí... Los gifs animados son sin duda un argumento de peso.