Discusión sobre el artículo "Guía práctica de MQL5: Controles de la subventana del indicador: Botones" - página 8

 
C-4:
MT5 tiene actualización asíncrona de las propiedades del gráfico. Es decir, el hecho de que establezcamos una propiedad no significa que el terminal la recoja inmediatamente. La función ChartRedraw() se utiliza para que todas las propiedades sean releídas por el terminal. También se pueden utilizar las funciones ChartGet... ObjectGet, en este caso las propiedades también serán releídas.
No he encontrado esta información en ningún sitio. Lo he encontrado, he encontrado la solución, ahora lo sabré.
 
komposter:
No he encontrado esta información en ningún sitio. Me he topado con ella, he encontrado la solución, ahora lo sabré.

¿De qué se trata? Aquí al principio de la sección Operaciones con gráficos:

Funciones para trabajar con gráficos. Todas las operaciones con gráficos son aplicables sólo en Asesores Expertos y scripts.

Las funciones que establecen las propiedades de un gráfico se utilizan en realidad para enviar comandos para cambiarlo. Si estas funciones se ejecutan con éxito, el comando se incluye en la cola general de eventos del gráfico. La modificación de un gráfico se realiza mientras se procesa la cola de eventos del gráfico en cuestión.

Por esta razón, no debe esperar una actualización visual inmediata del gráfico después de llamar a estas funciones. En general, la actualización del gráfico la realiza el terminal automáticamente mediante eventos de cambio - llegada de una nueva cotización, cambio del tamaño de la ventana del gráfico, etc. Para actualizar forzosamente la apariencia del gráfico, utilice el comando ChartRedraw() para redibujar el gráfico.

 
komposter:
No he encontrado esta información en ningún sitio. Tropezó con él, encontró la solución, ahora voy a saber.
Por supuesto, porque esta información no está disponible en cualquier lugar (resulta que hay, véase más arriba:))). Yo mismo estaba atormentado con este problema, hasta que me dirigí a la mesa de servicio. Allí me dijeron que los cambios en las propiedades de los objetos del gráfico se producen de forma asíncrona. Y a juzgar por tu ejemplo, se trata de las propiedades del propio gráfico.
 
Rosh:

¿Qué es exactamente? Aquí al principio de la sección Operaciones con gráficos:

No he dicho que no esté, simplemente no me lo he encontrado (o lo he olvidado). Gracias.

¿Qué hay de mi sugerencia de generar un evento CHART_CHANGE cuando se cambien propiedades del gráfico como la bandera de seguimiento de eventos del ratón? ¿Quizás podrías hacer eso?

 
C-4:
Por supuesto, porque esta información no está disponible en cualquier lugar (resulta que es, véase más arriba:))). Yo mismo estuve atormentado con este problema, hasta que acudí al servicio técnico. Allí me dijeron que los cambios en las propiedades de los objetos en el gráfico se producen de forma asíncrona. Y a juzgar por tu ejemplo se trata de las propiedades del propio gráfico.

Más información en la sección Objetos gráficos:

Un grupo de funciones diseñadas para trabajar con objetos gráficos relacionados con cualquier gráfico especificado.

Las funciones que especifican las propiedades de los objetos gráficos, así como las operaciones de crear objetos ObjectCreate() y mover objetos ObjectMove() en el gráfico se utilizan en realidad para enviar órdenes al gráfico. Si estas funciones se ejecutan correctamente, la orden se incluye en la cola general de eventos del gráfico. El cambio visual de las propiedades de los objetos gráficos se realiza mientras se procesa la cola de eventos de un gráfico determinado.

Por esta razón, no se debe esperar una actualización visual inmediata de los objetos gráficos después de llamar a estas funciones. En general, la actualización de los objetos gráficos en el gráfico la realiza el terminal automáticamente mediante los eventos de cambio - llegada de una nueva cotización, cambios en el tamaño de la ventana del gráfico, etc. Para forzar la actualización de los objetos gráficos, utilice el comando ChartRedraw() para redibujar el gráfico.

 
Rosh:

Más en la sección Objetos gráficos:

Los objetos son claros y familiares, pero esperaba algo diferente de las propiedades de los gráficos.

¿No debería repetir mi sugerencia? ¿O debería ponerlo en un servicio de atención al cliente?

 
Al autor, un profundo agradecimiento por un gran artículo.
 
MetaQuotes Software Corp.:

Ha sido publicado el nuevo artículo MQL5 Bylaw Manual : Indicator Subwindow Controls - Buttons:

Autor: Anatoli Kazharsk

Muy buen tutorial, realmente espero que publiques un poco más sobre esto, ¡muchas gracias!

 

Anatoli,

Quiero darte las gracias por tus contribuciones a la comunidad MQL5. Tus ejemplos me han hecho avanzar varios meses en el desarrollo de mi propio código. De nuevo, muchas gracias.

Tengo la necesidad de utilizar este "indicador" para los botones Open Long, Open Short, Close All, y Set Trailing Stop. Mi problema es que necesito interactuar con mi EA para poder

1) acceder a estas funciones dentro del EA, y

2) obtener recomendaciones del EA haciendo parpadear el botón "Open Long" cuando el pSAR, el CCI, el MACD u otros indicadores se activen.

Así que aquí está mi pregunta: ¿Cómo puedo hacer que el EA se comunique con los botones del indicador, y hacer que los botones del indicador interactúen con el EA?

Gracias de antemano,

CipherPips

 
CipherPips:

Gracias.

Creo que esa es la versión que más te gusta: Interfaces Gráficas I: Preparación de la estructura de la biblioteca (Capítulo 1)

Sigue la continuación de esta serie. Habrá muchos ejemplos detallados.