Mira cómo descargar robots gratis
¡Búscanos en Twitter!
Pon "Me gusta" y sigue las noticias
¿Es interesante este script?
Deje un enlace a él, ¡qué los demás también lo valoren!
¿Le ha gustado el script?
Evalúe su trabajo en el terminal MetaTrader 5
Librerías

TesterBenchmark - librería para MetaTrader 5

Visualizaciones:
778
Ranking:
(23)
Publicado:
2017.11.21 07:55
\MQL5\Include\ \MQL5\Experts\
¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa

Al escribir diferentes versiones de código, podría surgir la necesidad de medir su influencia en la productividad del asesor en el simuluador. Esto permite no solo comprender el grado de optimización de la escritura de un código en comparación con otros, sino que también da referencias con respecto a la optimización rápida del asesor. Este enfoque permite detectar los "cuellos de botella" en la productividad del asesor.

En MetaTrader 5 hay una función estupenda de perfilado del asesor que usa datos históricos. Pero, además de funcionar despacio (en el modo visual), el resultado final se muestra en unidades relativas de medición, es decir, no es posible comparar la productividad en índices absolutos.

Al igual que sucede en MetaTrader 5, incluso con una pasada única sin visualización, el asesor se ejecuta en un Agente local, y a veces, una parte importante del tiempo de la pasada única se invierte en la sincronización del terminal con el Agente local correspondiente. Por eso los datos temporales de líneas semejantes

Core 1  EURUSD,M1: 3387955 ticks, 52608 bars generated. Environment synchronized in 0:00:01.389. Test passed in 0:00:09.422 (including ticks preprocessing 0:00:00.187).
Core 1  EURUSD,M1: total time from login to stop testing 0:00:10.811 (including 0:00:01.389 for history data synchronization)

indican con poca certeza la productividad pura del asesor/simulador y pueden "oscilar" bastante desde un inicio al otro.

El tiempo puro de funcionamiento del Simulador de Estrategias es el tiempo transcurrido desde el primer evento de Tick (primer inicio de OnTick) hasta el último tick del intervalo de simulación. Justo después de la finalización del intervalo de simulación, el simulador llama OnTester (OnDeinit va después).


Tiempo puro de ejecución de la pasada con el simulador

Esta biblioteca permite añadir al asesor una línea

#include <TesterBenchmark.mqh>

obtener en los logs datos de la productividad pura del simulador.

Core 1  2017.07.21 23:59:59   Interval = 8.842 s., Count = 3387955, 383166.1 unit/sec
Core 1  EURUSD,M1: 3387955 ticks, 52608 bars generated. Environment synchronized in 0:00:01.389. Test passed in 0:00:09.422 (including ticks preprocessing 0:00:00.187).
Core 1  EURUSD,M1: total time from login to stop testing 0:00:10.811 (including 0:00:01.389 for history data synchronization)

Lo que es más, si en el simulador saltamos de la pasada única al modo de optimización (no será necesario establecer el rango de los diapasones de MetaTrader 5), la biblioteca iniciará el asesor el número de veces indicado, ofreciendo una estadística de la productividad del simulador, conforme a la cual se podrá componer una presentación sobre la productividad pura del simulador.

------
OnTesterInit
i = 0 Pass = 0 OnTester = 8.687 s.: Count = 3387955, 390002.9 unit/sec, Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent-127.0.0.1-3000
i = 1 Pass = 1 OnTester = 8.702 s.: Count = 3387955, 389330.6 unit/sec, Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent-127.0.0.1-3000
iMin = 0 Results[iMin] = 8.687s.
iMax = 1 Results[iMax] = 8.702s.
Amount = 2 Mean = 8.694 s. - 83.89%
OnTesterDeinit
------
Interval = 20.729 s., Count = 0, 0.0 unit/sec

En este caso, se ve que ha habido dos inicios en el mismo Agente local. Se muestran los tiempos mínimo, máximo y medio del cálculo de la pasada. Y se ve el tiempo total (Interval) del optimizador. La caracterización en tanto por ciento (83.89%) muestra qué parte del tiempo ocupa de media el trabajo puro del simulador en una pasada con respecto al tiempo del optimizador (ahí se tiene en cuenta también el tiempo dedicado a la sincronización con los agentes, etcétera).



Perfilado de OnTick

Añadimos otra línea más

#define PROFILER_OnTick // Mide el tiempo puro de ejecución de todos los OnTick, ralentiza un poco el funcionamiento general
#include <TesterBenchmark.mqh>

permite ver el tiempo invertido exclusivamente en la ejecución de OnTick, sin tener en cuenta el tiempo de simulación del entorno comercial, la ejecución, etcétera.

------
OnTesterInit
i = 0 Pass = 0 OnTester = 9.540 s.: OnTick Profiler: Count = 3387955, Interval = 8.079 s., 419359.4 unit/sec , Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent-127.0.0.1-3000
i = 1 Pass = 1 OnTester = 9.471 s.: OnTick Profiler: Count = 3387955, Interval = 8.029 s., 421956.9 unit/sec , Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent-127.0.0.1-3000
iMin = 1 Results[iMin] = 9.471s.
iMax = 0 Results[iMax] = 9.540s.
Amount = 2 Mean = 9.505 s. - 98.86%
OnTesterDeinit
------
Interval = 19.231 s., Count = 0, 0.0 unit/sec



Ejemplo

Se adjunta a la biblioteca un asesor-ejemplo (MQL4/5) con un encabezamiento que permite comprender uno de los usos prácticos de la biblioteca.

#include <TesterBenchmark.mqh>

// Si ambas líneas include han sido comentadas, entonces la lógica comercial estará escrita en puro MQL5 - API comercial
// De lo contrario, si hay una línea no comentada, se usará precisamente el envoltorio API comercial.
// TesterBench muestra cuál es la productividad de cada uno (de los tres) API.
// #include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006
// #include <Trade\Trade.mqh>

Traducción del ruso realizada por MetaQuotes Ltd
Artículo original: https://www.mql5.com/ru/code/18804

Chart Save Template Chart Save Template

El script guarda los ajustes actuales del gráfico en una plantilla con el nombre especificado.

Report Report

Biblioteca para MetaTrader 4/5, que permite componer informes de la historia de transacciones.

MA Zigzag Trend MA Zigzag Trend

Otro indicador de tendencia ZigZag, basado en los puntos de los extremos del indicador SMA.

Four_MA_Strength Four_MA_Strength

Indicador de fuerza y dirección de la tendencia con uso de medias móviles de cuatro minutos