Errores, fallos, preguntas - página 2202

 
Комбинатор:
¿Qué es tan difícil? Vigilar el archivo de resultados + el sueño nativo resuelve el problema.

Por cierto, sí. Más fácil )))

 
¿Un objeto de sincronización con una sobrecarga mayor que la del archivo no podría ofrecer? Mentira.
 
Alexey Navoykov:

Sí, existe ese problema. Al pasar un puntero por referencia a un operador sobrecargado se produce un error. Esto ha aparecido en las últimas compilaciones, antes todo estaba bien. He enviado una solicitud al servicio de atención al cliente desde hace un par de meses, pero no hay respuesta ni adiós.

Esto es especialmente crítico para las matrices de punteros, ya que no hay otra forma de enviarlas, excepto por referencia:

Por lo tanto, todavía estoy sentado en 1554 construir.

Me he encontrado con lo mismo con los punteros en las últimas builds, antes se podía pasar void sin problemas, ahora por referencia no funciona, he tenido que corregir código en varias de mis librerías

 
Sergey Dzyublik:
¿Un objeto de sincronización con una sobrecarga mayor que la del archivo no podría ofrecer? Mentira.

¿Es necesario escribir en un archivo durante las pruebas? ¿Qué pasa con la memoria?

 
Alexey Navoykov:

¡Gracias por el consejo sobre Sleep() de Kernel!

 
Комбинатор:
¿Por qué es tan difícil de hacer? Mantener un ojo en el archivo de resultados + sueño nativo resuelve el problema.

MQL Sleep() durante las pruebas se salta el tiempo virtual (es decir, hace un tic en el tiempo de 0,6 segundos) mientras que el tiempo real se salta menos de un milisegundo y el programa externo se ejecuta en tiempo real.

Pero con Sleep from Kernel lo intentaré ).

 
Konstantin:

¿es necesario escribir en un archivo durante las pruebas? ¿qué pasa con la memoria?

Sí, usar la memoria en lugar de escribir en un archivo durante las pruebas ahorrará algo de tiempo (no lo he calculado con exactitud, pero supongo que hasta 30 milisegundos como máximo por ciclo), pero sigue siendo el programa externo el que más tarda.

Así que, por ahora, lo fundamental es suspender las pruebas mientras se ejecuta el programa externo.

 
romachandr:

Sí, usar la memoria en lugar de escribir en un archivo durante las pruebas ahorrará algo de tiempo (no lo he calculado exactamente, pero supongo que hasta 30 milisegundos como máximo por ciclo), pero la mayor parte del tiempo se sigue gastando en la ejecución del programa externo.

Así que, por ahora, lo fundamental es suspender las pruebas mientras se ejecuta el programa externo.

En general, la velocidad de escritura en el archivo y en la memoria difiere en un factor de dos.

 
romachandr, parece que he entendido mal la tarea. No uso un probador, y no estoy seguro de que al detener el EA se detenga la generación de ticks. Soy incompetente aquí.
 

Y ahora (build 1809) viceversa

https://www.mql5.com/ru/forum/1111/page2181#comment_6765277

La 3ª línea (en OnStart) compila, pero la 4ª línea no.

En otras palabras

typedef int (*fn)( uint ); 
#import "Test1.ex5"
        void f( fn );
#import "Test2.ex5"
        int g(  int ); //(1)
        int g( uint ); //(2)
#import
void OnStart()
{
        f( g ); //Error: 'g' - cannot resolve function address
}

Y si intercambias las líneas (1) y (2), está bien. ¿Cuál es la diferencia?

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2018.03.09
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы