Discusión sobre el artículo "Indicador de perfil de mercado — Market Profile (Parte 2): Optimización y dibujado en canvas"

 

Artículo publicado Indicador de perfil de mercado — Market Profile (Parte 2): Optimización y dibujado en canvas:

En este artículo analizaremos una versión optimizada del indicador de Perfil de mercado Market Profile, donde el dibujado por parte de un conjunto de objetos gráficos se sustituye por el dibujado en un lienzo: un objeto de la clase CCanvas.

Volviendo al tema del indicador de Perfil de mercado iniciado en el artículo anterior, me gustaría decir que la implementación de la construcción de un diagrama de perfil de mercado utilizando objetos gráficos ordinarios consume bastantes recursos. Después de todo, cada punto de precio desde el mínimo hasta el máximo de la barra diaria se rellena con objetos rectangulares gráficos en el número de barras que han alcanzado ese nivel de precio a lo largo del día. Y así, para cada elemento, todos contienen muchos objetos gráficos, y todos estos objetos se crean y dibujan para cada día en el que se dibuja el diagrama de perfil. Cuando un indicador crea miles de objetos gráficos, puede provocar ralentizaciones sustanciales al trabajar con otros objetos gráficos y al redibujar el gráfico. 

Durante tres días comerciales, el perfil del mercado tendrá finalmente este aspecto:


Autor: Artyom Trishkin

 
Por qué no escribir el perfil de volumen perfecto
 
__zeus__ #:
Por qué no escribir un perfil de volumen perfecto

¿Qué se entiende por "perfecto"?

 
__zeus__ #:
Por qué no escribir el perfil de volumen perfecto
Apoyo a Igor en su pregunta
 

Es un tema interesante. Yo también cambié a Canvas para mostrar mi perfil. Pero este método tiene algunas desventajas. Si las figuras graficas son "dibujadas y olvidadas", mt5 las escalara por si mismo cuando mueva el grafico, cambie el TF, etc. acciones, entonces Canvas deberia ser redibujado siempre, en cualquier CHARTEVENT_CHART_CHANGE, incluso si VP esta en algun lugar de la historia, sobre datos ya no cambiados. Y estos datos deben ser obtenidos y no siempre ellos (datos de tick) están en la caché de mt5, aquí o bien almacenar la memoria y comprobar si los límites de VP han cambiado o constantemente solicitar de mt5 (ahora lo tengo tan implementado), que no funciona rápidamente y por lo que los datos no siempre se da por completo, y no inmediatamente con seguridad.

El dibujo es una parte del problema. La segunda parte es que un trader no siempre necesita sólo una imagen para admirarla, necesita señales basadas en esta imagen, como POC, VHL, VLL, "entrada en el vacío", etc. Y podemos vincular eventos sólo a objetos gráficos (condicionalmente, podemos guardarlos en un array en algún lugar del indicador, pero sigue siendo deseable visualizar dónde está este nivel, dónde se disparó la alerta). Es decir, seguimos necesitando objetos gráficos para el kanvas VP, aunque por supuesto serán un orden o incluso varios órdenes de magnitud menos que en el caso de visualizar VP a través de objetos gráficos.

En general, el resumen es el siguiente - no podemos obtener un terminal volumétrico de mt5 (¿todavía?) (y necesitamos clusters, deltas, etc.).

La imagen es un ejemplo de cómo VP parece en una onda de impulso, POC se muestra por una línea, aquí están los volúmenes de garrapatas, si hubiera volúmenes reales que trabajaría en ellos (finam, amp global). Como ha demostrado la práctica de comparar los volúmenes tick y reales en TFs superiores, o coinciden o están muy cerca el uno del otro, excepto en los casos de grandes volúmenes que pasan por las velas altas o bajas, aquí los volúmenes tick son impotentes para ayudarnos.



 
Nikolay Kuznetsov #:

Es un tema interesante. Yo también cambié a Canvas para mostrar mi perfil. Pero este método tiene algunas desventajas. Si las figuras graficas son "dibujadas y olvidadas", mt5 las escalara por si mismo cuando mueva el grafico, cambie el TF, etc. acciones, entonces Canvas deberia ser redibujado siempre, en cualquier CHARTEVENT_CHART_CHANGE, incluso si VP esta en algun lugar de la historia, sobre datos ya no cambiados. Y estos datos hay que obtenerlos y no siempre ellos (datos de tick) están en la caché de mt5, aquí o se almacena la memoria y se comprueba si los límites del VP han cambiado o se solicita constantemente a mt5 (ahora lo tengo así implementado), lo cual no funciona rápido y los datos no siempre se dan completos, y no inmediatamente seguro.

El dibujo es una parte del problema. La segunda parte es que un trader no siempre necesita sólo una imagen para admirarla, necesita señales basadas en esta imagen, como POC, VHL, VLL, "entrada en el vacío", etc. Y podemos vincular eventos sólo a objetos gráficos (condicionalmente, podemos mantenerlos en una matriz en algún lugar del indicador, pero sigue siendo deseable visualizar dónde está este nivel, donde se disparó la alerta). Es decir, seguimos necesitando objetos gráficos para el lienzo VP, aunque por supuesto serán un orden o incluso varios órdenes de magnitud menos que en el caso de visualizar VP a través de objetos gráficos.

En general, el resumen es el siguiente: no podemos obtener un terminal volumétrico de mt5 (¿todavía?) (y necesitamos clusters, deltas, etc.).

La imagen es un ejemplo de cómo se ve VP en una onda de impulso, POC se muestra por una línea, aquí están los volúmenes de garrapatas, si hubiera volúmenes reales que trabajaría en ellos (finam, amp global). Como ha demostrado la práctica de comparar los volúmenes tick y reales en TFs superiores, o coinciden o están muy cerca el uno del otro, excepto en los casos de grandes volúmenes que pasan por las velas altas o bajas, aquí los volúmenes tick son impotentes para ayudarnos.



No es exactamente así. No son desventajas, sino características que hay que conocer para utilizar la herramienta con las máximas posibilidades y libertad de acción.
Se puede hacer de todo, incluso con clusters 3D.
Aquí tienes un ejemplo de MQL5 utilizando sólo Canvas sin usar OpenCL. Si usas OpenCL (es decir, una tarjeta gráfica), puedes conseguir una aceleración significativa (decenas de veces).