MT5 y la velocidad en acción - página 66

 

En cuanto al código fuente presentado

#include <fxsaber\Benchmark\Benchmark.mqh> // https://www.mql5.com/ru/code/31279

void OnStart()
{
  for (int i = 0; i < 5; i++)
    _BV(Sleep(1), 1);
}

Si quieres velocidad, deberías renunciar a este monstruo, porque te estás ralentizando.

Esta herramienta de medición es inadecuada porque introduce un enorme error

En mi script puse

#define  ITERATIONS 5

Aquí está el registro de 5 iteraciones.

2020.11.04 16:37:24.430 TestSleep (EURUSD,H1)   total 9673 microseconds (1.935 ms per iteration)

Menos de 2 milisegundos.

 
fxsaber:
Los promotores, con su silencio, han reconocido plenamente dos problemas.

Los desarrolladores han admitido con su silencio que no hay problemas.

 
Slava:

Este es el registro para 5 iteraciones

Menos de 2 milisegundos.

Tu guión.

2020.11.04 16:46:40.341 Test9 (EURCHF,M1)       total 67620 microseconds (13.524 ms per iteration)


Máquina.

2020.11.04 16:47:52.962 Terminal        Windows 10 build 19042, Intel Core i7-2700 K  @ 3.50 GHz, 7 / 15 Gb memory, 18 / 29 Gb disk, IE 11, Admin, GMT+2
 
Anton:

Los desarrolladores han admitido con su silencio que no hay problemas.

¡Guapo! ¿Es normal que las garrapatas lleguen con menos tiempo que en la revisión del mercado anterior?

 
fxsaber:

¡Guapo! ¿Es normal que las garrapatas lleguen con menos tiempo que en la revisión del mercado anterior?

Normal.

Ya respondí a esta pregunta hace 5 días, en el mismo hilo:


SymbolInfoTick envía los datos recibidos del servidor del broker. Lo que el servidor envió es lo que se obtiene.

Si tiene dudas sobre el flujo de ticks emitido por su corredor, debe ponerse en contacto con él.

 
Slava:

La cola de expertos es un recurso bloqueable. Cuando se escribe un evento en la cola, el Asesor Experto espera (a menos que, por supuesto, el Asesor Experto esté procesando un evento)

Los eventos para el Asesor Experto provienen de la cola de eventos del gráfico correspondiente, que a su vez proviene del ciclo de procesamiento del símbolo correspondiente. Y este bucle de procesamiento no sólo distribuye los eventos a sus propios gráficos, sino que también hace muchas otras cosas.

Ya te he dicho que Windows no es un sistema operativo en tiempo real.

La tarea está formulada de forma muy sencilla: ¿cómo escribir un Asesor Experto que no se ralentice mientras espera una cola? No se puede utilizar un bucle infinito porque Sleep es un freno. Entonces, el bucle asíncrono se extravía. Ahora bien, atrapar las esperas en forma de largos milisegundos no es la cuestión en absoluto.

 
fxsaber:

Tu guión.


¿Y para 10.000 iteraciones?

 
Slava:

¿Y para 10.000 iteraciones?

2020.11.04 17:09:30.483 total 155965249 microseconds (15.597 ms per iteration)

Invito a otros a compartir el resultado de la ejecución de este script en su máquina.

 
Anton:

Eso está bien.

Ya respondí a esta pregunta hace 5 días, en el mismo hilo:

SymbolInfoTick envía los datos recibidos del servidor del broker. Lo que el servidor envió es lo que se obtiene.

Si tiene dudas sobre el flujo de ticks emitido por su corredor, debe ponerse en contacto con él.

Por eso hago la pregunta a los propietarios de MQ-Demo.

 
fxsaber:

El problema está formulado de forma muy sencilla: ¿cómo escribir un EA que no se ralentice al esperar una cola? Un bucle infinito es imposible, porque el Sueño es un freno. Y el modo asíncrono no funcionará en absoluto. Ahora bien, atrapar las esperas en forma de largos milisegundos no es la cuestión en absoluto.

No te engañes a ti mismo ni a los que te rodean.

Todas tus afirmaciones aquí describen una tarea bastante diferente: cómo escribir un Asesor Experto que no se sienta lento en un hardware de 9 años muy cargado.