Discusión sobre el artículo "WebRequest multiflujo asincrónico en MQL5" - página 6

 
Mihail Matkovskij:
¿Cuál debe ser el offset (input int MessageBroadcast) para los eventos de usuario si en el programa se utilizan elementos UI de la librería estándar(Include\Controls\)? ¿Cómo puedo averiguarlo?

No soy un gran experto en bibliotecas. A juzgar por la definición de eventos en el archivo Defines.mqh, el índice máximo reservado allí es 100.

 
Stanislav Korotky:

No soy un gran experto de la biblioteca. A juzgar por la definición de eventos en el archivo Defines.mqh, el índice máximo reservado allí es 100.

//+------------------------------------------------------------------+
//| Eventos|
//+------------------------------------------------------------------+
#define  ON_CLICK                (0)   // hacer clic en el evento de control
#define  ON_DBL_CLICK            (1)   // doble clic en el evento de control
#define  ON_SHOW                 (2)   // mostrar evento de control
#define  ON_HIDE                 (3)   // ocultar evento de control
#define  ON_CHANGE               (4)   // evento de cambio de control
#define  ON_START_EDIT           (5)   // inicio del evento de edición
#define  ON_END_EDIT             (6)   // fin del evento de edición
#define  ON_SCROLL_INC           (7)   // incremento del evento scrollbar
#define  ON_SCROLL_DEC           (8)   // decremento del evento scrollbar
#define  ON_MOUSE_FOCUS_SET      (9)   // el evento "el cursor del ratón ha entrado en el control
#define  ON_MOUSE_FOCUS_KILL     (10)  // el evento "el cursor del ratón salió del control
#define  ON_DRAG_START           (11)  // el evento "control dragging start
#define  ON_DRAG_PROCESS         (12)  // el evento "control está siendo arrastrado
#define  ON_DRAG_END             (13)  // el evento "control dragging end
#define  ON_BRING_TO_TOP         (14)  // el evento "aumento de la prioridad de los eventos del ratón
#define  ON_APP_CLOSE            (100) // evento "cerrar la aplicación

Obviamente, del 15 al 99 los desarrolladores dejaron una reserva para nuevos id de eventos. Pero además de esto, otra constante me llamó la atención.

#define  CONTROLS_MAXIMUM_ID                 (10000)  // número máximo de ID en la aplicación

Maximum number o número máximo de id's en la aplicación. ¿Qué puede significar...?

 
Mihail Matkovskij:

Obviamente, del 15 al 99 los desarrolladores dejaron un margen para nuevos eventos de id. Pero además de esto, me llamó la atención otra constante.

Número máximo o máximo de ids en la aplicación. ¿Qué puede significar...?

Según las palabras - identificadores de control. Los controles no son eventos.

 
Stanislav Korotky:

A juzgar por las palabras: identificadores de control. Los controles no son eventos.

Tal vez... Pero no dice qué identificadores. Puse MessageBroadcast 10000 y todo funciona. Se puede poner incluso 1000000 y más, el tipo ushort lo permite. Aunque incluso con 100 no habrá conflictos. En cualquier caso, cualquier elemento UI tiene su propio id, que se comprueba en las condiciones de procesamiento de eventos. En general, la probabilidad de funcionamiento normal es bastante alta.

 
Estaría bien que el experto principal pudiera obtener la carga de la CPU para saber cuántas tareas se pueden añadir para su ejecución. Pero desafortunadamente no he encontrado tal función en la documentación.
 
Stanislav Korotky #:


¿Cómo se diseñaría esto ahora que hay servicios en MT5?

 
bot #:

¿Cómo se diseñaría ahora que hay servicios en MT5?

No cambia nada, ya que no hay una manera más fácil de comunicarse con un servicio MT5.
 

Muy buen artículo.

Sin embargo me sale problemas al intentar compilar con metatrader 5.

Inicializar secuencia para la matriz esperada:

en la plantilla 'const TYPETOBYTES::STRUCT_TYPE<T> TYPETOBYTES::FillBytes(const uchar)' especificada con [T=uchar] TypeToBytes.mqh 314 31

Entiendo que es un problema al inicializar el array. Podría intentar arreglarlo. Sin embargo, no veo ningún informe de este problema, me pregunto si es sólo yo mismo frente a la cuestión.

¡Gracias por el artículo de todos modos, maravilloso de todos modos!



 
magnomilk #:

Muy buen artículo.

Sin embargo tengo problemas al intentar compilar con metatrader 5.

Inicializar secuencia de matriz esperada:

en la plantilla 'const TYPETOBYTES::STRUCT_TYPE<T> TYPETOBYTES::FillBytes(const uchar)' especificada con [T=uchar] TypeToBytes.mqh 314 31

Entiendo que es un problema al inicializar el array. Podría intentar arreglarlo. Sin embargo, no veo ningún informe de este problema, preguntándose si es sólo yo mismo frente a la cuestión.

¡Gracias por el artículo de todos modos, maravilloso de todos modos!



Asegúrese de que está utilizando la última biblioteca TypeToBytes.

 
Igor K "WebRequest error code 4002"....


MetaTrader 5

Versión: 5.00 build 2093

02 Jul 2019


===cortar aquí===

2019.07.23 00:47:37.182 multiwebclient (USDJPY,H1) Aceptado: aQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Experts\multiwebclient.ex5::USDJPY_PERIOD_H1_2_128968169154443359 después de 0 reintentos

2019.07.23 00:47:37.182 multiwebclient (USDJPY,H1) WebRequest error code 4002

===cut here===


Sólo los puertos 80 (http) y 443 (https) están permitidos para WebRequest.