DirectX - página 7

 
Aleksey Vyazmikin:

Qué bonito. ¿Qué pasa con la carga de la CPU al abrir un intercambio, ya sabes, en Si si pones el mercado?

¿Existe una visualización gráfica de la posición abierta en el mercado? Esto es lo que echo de menos en el estándar.

En la anterior la posición abierta se muestra con un marco magenta alrededor del precio con posición en rojo, en la siguiente está en el lado positivo.


 

todo en un lienzo

 
Rafil Nurmukhametov:

El procesador carga bien, en la imagen anterior se puede ver la posición abierta, el marco alrededor del precio es de color magenta, allí la posición está en menos, en la imagen de abajo la posición está en más


¿Qué tal si simplemente se limita la frecuencia de actualización: no más de 10 actualizaciones por segundo? Los retrasos conducirán a un encrespamiento del panel comercial, ¿no?

Puedo ver la indicación del estado de la posición - ¡parece conveniente!

 
Aleksey Vyazmikin:

¿Qué tal si simplemente se limita la frecuencia de actualización a no más de 10 veces por segundo? El frenado hará que el panel de operaciones se congele, ¿no?

...

No sé cómo es exactamente la implementación de Rafil, pero si las celdas se redibujan por separado de todo el kanvas, se solucionaría el problema de la carga.

Para ello:

1. Cada celda debe ser una etiqueta rectangular independiente con texto en la parte superior, con sus propias coordenadas y dimensiones en la matriz.

2. En un evento de cambio de valor, su rectángulo (fondo) se redibuja primero, y luego el texto. El área de redibujado es decenas de veces menor que el área de todo el lienzo y, por lo tanto, la carga disminuirá en decenas de puntos.

 
Реter Konow:

No sé exactamente cómo funciona la implementación de Rafil, pero si las celdas se redibujan por separado de todo el lienzo, se resolverá el problema de la carga.

Para ello:

1. Cada celda debe ser una etiqueta rectangular independiente con texto en la parte superior, con sus propias coordenadas y dimensiones en la matriz.

2. En un evento de cambio de valor, su rectángulo (fondo) se redibuja primero, y luego el texto. El área de redibujado es decenas de veces menor que el área de todo el lienzo, por lo que la carga se reducirá en decenas de puntos.

La esencia del vaso es que cuando el precio se mueve, tiene que ser redibujado en su conjunto, pero la parte izquierda de la visualización - sí, puede haber opciones, pero creo que hay un objeto de cluster (velas?) dibujado por separado y se redibuja sólo cuando la nueva información viene.

 
Aleksey Vyazmikin:

Laesencia del vaso es que tiene que ser redibujado en su totalidad cuando los precios se mueven, pero la parte izquierda de la visualización - sí, puede haber opciones, pero creo que hay un objeto de cluster separado (¿vela?) dibujado y se redibuja sólo cuando entra nueva información.

No necesariamente. Los precios en el mercado no cambian de golpe y algunas células permanecen periódicamente inactivas. No tiene sentido volver a dibujar todo el lienzo.

Lo mismo ocurre con la parte izquierda. Aunque, de todos modos, no hay una carga pesada allí. Si sólo en el desplazamiento del gráfico y en la barra actual. Pero no es mucho.

 
Реter Konow:

No necesariamente. Los precios no cambian todos a la vez y algunas celdas están ocasionalmente inactivas. No es necesario volver a dibujar todo el lienzo.

No es necesario, pero el precio se mueve y, en consecuencia, el valor en las celdas cambia, ¿cómo si no? Otra cosa es si cambias las coordenadas del rectángulo con el precio, pero creo que es el mismo dibujo dentro del kanvas.

 
Aleksey Vyazmikin:

No necesariamente, pero el precio se mueve, lo que significa que el valor en las celdas cambia, ¿cómo si no? Otra cosa es si cambias las coordenadas del rectángulo con el precio, pero creo que esto también es un dibujo dentro del lienzo.

El precio se mueve, el vaso se centraliza y hay que volver a dibujarlo. Nadie lo discute. Se trata de la zona del rediseño.

Muchas celdas están inactivas y no cambian de valor en cada evento de copa. Por ejemplo, a veces los valores límite cambian sólo en algunas celdas, mientras que el precio y los volúmenes en otras celdas no cambian. En este caso, es un desperdicio de recursos redibujar todo el lienzo. Es necesario controlar los cambios en las celdas y dibujarlas individualmente a la llegada de un nuevo evento de valor.

Este sencillo enfoque reducirá la carga muchas veces.

Además, puede reducir la frecuencia de salida de los valores a las celdas.

Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Виды заявок в стакане цен
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Виды заявок в стакане цен
  • www.mql5.com
Для биржевых инструментов доступно окно "Стакан цен", в котором можно посмотреть текущие заявки на покупку и продажу. Для каждой заявки указано желаемое направление торговой операции, требуемый объем и запрашиваемая цена. Для получения информации...
 
Реter Konow:

El precio se mueve, el vaso se centraliza y es necesario volver a dibujarlo. Nadie lo discute. Se trata de la zona del rediseño.

Muchas celdas están inactivas y no cambian de valor en cada evento de copa. Por ejemplo, a veces los valores límite cambian sólo en algunas celdas, mientras que el precio y los volúmenes en otras celdas no cambian. En este caso, es un desperdicio de recursos redibujar todo el lienzo. Es necesario controlar los cambios en las celdas y dibujarlas individualmente ante la llegada de un nuevo valor.

Este sencillo enfoque reducirá la carga muchas veces.

Además, puede reducir la frecuencia de salida de los valores a las celdas.

Sí, entiendo tu idea, pero la información de los cambios de precio y volumen a menudo (supuestamente) pueden venir sincronizados en la apertura del mercado.

Recuerdo que querías hacer tu propia copa, ¿algún resultado?

 
Aleksey Vyazmikin:

Sí, comprendo su idea, pero la información sobre los cambios de precios y volúmenes puede llegar a menudo de forma sincronizada en la apertura del mercado.

Recuerdo que querías hacer tu propia copa de mercado, ¿algún resultado?

Ayer hice un ejemplo del cristal del mercado con el redibujado de celdas independientemente del lienzo de toda la ventana- https://www.mql5.com/ru/forum/333652/page4.

He comprobado que un redibujado separado de las celdas mantiene la carga dentro del 20% (el vídeo muestra más debido a la grabación de vídeo), SIEMPRE que se redibujen TODAS las celdas a 40 fps. La dinámica normal de la secadora con este enfoque cargará un 5-10% aproximadamente.

La carga es alta sólo si se redibuja un área grande (~500*500 px) a alta frecuencia sin pausas (~40+ fps). Cualquier retraso o reducción de la zona de redistribución reduce la carga en un factor de dos.

DirectX
DirectX
  • 2020.03.13
  • www.mql5.com
Привет, кто-нибудь уже разобрался с directx, там есть DirectCompute...