Probador de guiones y asesores de MG4 - página 11

 
Renat:

CopyXXX tiene la misma velocidad que las funciones iClose/iOpen/iXXXX. Sólo iXXX devuelve un elemento a la vez y CopyXXX devuelve muchos y, por tanto, es más eficiente y rápido.

Probablemente, no consideras que MT4 copia forzosamente _todo_ el historial del gráfico local en el entorno de mercado del EA local (caché) antes de que se inicie cada tick handler. Y esto es muy caro, aunque tenemos un método para actualizar económicamente esta información. La función especial RefreshRates en MQL4 provoca un refresco forzado de las cachés y del historial del gráfico local.

Llamar a CopyXXX es mucho más eficiente, con un mecanismo muy preciso y exacto para almacenar en caché los datos solicitados previamente. Por ejemplo, no es necesario volver a solicitar el historial profundo en cada tic, sino almacenar/escribirlo localmente y acceder a él lo más rápidamente posible.

Si comparamos los antiguos métodos de acceso "directo" (en realidad no es acceso directo) Open/High/Low/Close y el trabajo con el array local double local[xxxx], este último es muchas veces más rápido. Por lo tanto, es mejor copiarse a sí mismo localmente y luego tener un acceso local rápido a los datos consultados repetidamente.

¿Qué se entiende por "tick handler" - funciones personalizadas como OnTick? ¿Por qué quieres copiar todo el historial y no sólo los datos que aparecen?
 
Vinin:
Esto no es un indicador.
He dado un enlace a un indicador OOPaquí.
 
C-4:
¿Qué se entiende por "tick handler" - funciones personalizadas como OnTick? ¿Por qué es necesario copiar todo el historial y no sólo los datos que han aparecido?

Sí, OnTick/OnStart.

Tomo como una revelación para muchos que el acceso directo al gráfico local en MT4 no es realmente directo. Hay un doble consumo de memoria y pérdidas de sincronización.

Afortunadamente, el refresco de la caché es económico, pero sigue provocando costes en el sistema. En MT5 nos deshicimos completamente de la caché local y la sobrecarga del sistema antes de llamar a OnTick/OnStart es menor.

 
Renat:

Sí, OnTick/OnStart.

Tomo como una revelación para muchos que el acceso directo al gráfico local en MT4 no es realmente directo. Hay un doble consumo de memoria y pérdidas de sincronización.

Afortunadamente, tenemos una actualización de la caché que no es necesaria, pero sigue dando costes del sistema. En MT5 nos deshicimos de la caché local por completo y la sobrecarga del sistema antes de la llamada OnTick/OnStart es menor.

Hace un año, hablábamos del rendimiento de los probadores de MT4/MT5. El EA estándar "MovingAverage" en MT4 realizó una sola ejecución en un minuto bajo condiciones de prueba similares mientras que en MT5 lo hizo en 2:34. ¿Por qué la diferencia en la escala de tiempo? Lo primero que me viene a la mente es la "modularidad" de MT5 y el gran volumen del entorno de negociación que tiene que tirar MT5 durante la ejecución.
 
C-4:
Hace un año hablamos del rendimiento de los probadores MT4/MT5. El EA estándar "MovingAverage" en MT4 realizó una sola ejecución en un minuto en condiciones de prueba similares, mientras que en MT5 tardó 2:34. ¿Por qué la diferencia en la escala de tiempo? Lo primero que me viene a la mente es la "modularidad" de MT5 y el gran volumen del entorno de negociación que tiene que tirar MT5 durante la ejecución.

Modularidad, proceso externo y mejor modelización del entorno, adaptados a la ejecución multidivisa.