Preguntas sobre el MQL4. - página 8

 
Figura 6
Archivos adjuntos:
zigtester.jpg  16 kb
 
ANK:
¿Quién sabe si esto es correcto?
un archivo no puede incluirse más de una vez en el código.
así que tiene que ser:
- o hacer varios archivos con diferentes nombres de variables globales y funciones (esta es una versión más floja =)
- o diseñar la lógica de manera que no haya solapamiento al llamar desde diferentes funciones (esto puede requerir algo de trabajo, pero es una buena solución ;)

Y no se puede decir algo más exacto sin ejemplos, descripciones de errores o código completo (lo mejor de todo) =)
 
El Asesor Experto y el script en bucle se ejecutan en la ventana al mismo tiempo.
¿Es correcto asumir que mientras el Asesor Experto está esperando que el servidor responda a una operación de comercio
el script sigue funcionando como siempre, sin paradas ni retrasos, realiza sus cálculos (no las operaciones de trading)?
 
SKif:
El Asesor Experto y el script en bucle se ejecutan en la ventana al mismo tiempo.
¿Es correcto asumir que mientras el Asesor Experto está esperando que el servidor responda a una operación de comercio
el script sigue su curso sin paradas ni retrasos, realiza sus cálculos (no las operaciones comerciales)?
Sí.
tanto el Asesor Experto como el script trabajan en sus propios hilos.
 
Bien, gracias.
¿Debemos considerar normal que la hora de inicio del indicador y del EA no coincida cuando se enciende el botón del EA?
Tal vez estoy entendiendo mal algo o estoy haciendo algo mal, pero resulta que la diferencia de tiempo puede ser más de 250ms.

Una cosa más. ¿El estado del botón EA tiene algún efecto sobre el funcionamiento del indicador?
¿Es posible seguir el estado de este botón desde el indicador?
 
He investigado un poco...

Coloca un indicador en la ventana:
int start() { GlobalVariableSet(GV_Tick, 1); return; }

Poner un EA en la ventana:
int start() { GlobalVariableSet(GV_Knopka, 1); return; }

Y un script con un fragmento como este:
... T_Tick=0; T_Knopka=0; while (Tick==0 || Knopka==0 ) // Ждём тика и разреш. кнопки советн. { Tick = 0; Knopka = 0; Tick = GlobalVariableGet(GV_Tick ); Knopka = GlobalVariableGet(GV_Knopka ); if (Tick>0 && T_Tick==0)T_Tick=GetTickCount(); if (Knopka>0) { T_Knopka=GetTickCount(); Alert("T_Tick=",T_Tick, " T_Knopka=",T_Knopka, " Запазд= ",T_Knopka-T_Tick); } } ... GlobalVariableSet(GV_Knopka, 0 ); // Обнуляем прошлые события GlobalVariableSet(GV_Tick, 0 ); // Обнуляем прошлые события


Y aquí están los resultados:
Durante el periodo resaltado en rojo, el ratón simplemente se movió en un círculo de 50 mm de diámetro a 3 revoluciones por segundo.
No hubo impacto en la terminal.

Resulta que en un periodo de calma "normal" el desfase es de aprox. 20-60 ms, e incluso más durante el periodo en que el usuario está en contacto con el terminal.
Además, descubrí que la función start() del indicador se inicia en el período de redimensionamiento de la ventana y al cambiar de ventana.
---------------
Me interesa sobre todo la legalidad de este retraso, "normal" e "inusual".
Y me gustaría que los desarrolladores comentasen si se ajusta a la intención.
Archivos adjuntos:
1.png  21 kb
 
Haré las pruebas yo mismo e informaré de los resultados.
 
DE ACUERDO.
A falta de otra opción, me guié por la opción de medir el tiempo de retardo de las señales del EA y del indicador, para juzgar si el botón del EA estaba desactivado. Este tiempo debía ser muy corto. Pero varía demasiado.

Es muy interesante lo que vas a descubrir.
(En general, necesito toda esta cocina para responder a una simple pregunta: el estado del botón EA)
 
Los expertos trabajan en sus propios hilos independientemente de otras tareas.
Resulta que la carga de la CPU es causada por el movimiento del ratón, cuando se envían en masa cientos de comandos de movimiento del ratón. Entre estos comandos del "ratón" también hay comandos para refrescar los EAs, lo que provoca retrasos.
 
Entonces, ¿debemos asumir que el funcionamiento no simultáneo del script, el indicador y el Asesor Experto es un fenómeno común?
Entonces... ¿cómo se vive en el mundo?