- Generar ticks en el probador
- Gestión del tiempo en el comprobador: temporizador, Sleep, GMT
- Pruebas de visualización: gráfico, objetos, indicadores
- Pruebas multidivisa
- Criterios de optimización
- Obtener estadísticas financieras de prueba: TesterStatistics
- Evento OnTester
- Sintonización automática: ParameterGetRange y ParameterSetRange
- Grupo de eventos OnTester para el control de la optimización
- Enviar marcos de datos de los agentes al terminal
- Obtener marcos de datos en terminal
- Directivas del preprocesador para el probador
- Gestionar la visibilidad de los indicadores: TesterHideIndicators
- Emulación de operaciones de depósito y retirada
- Parada forzada de la prueba: TesterStop
- Ejemplo de Gran Asesor Experto
- Cálculos matemáticos
- Depuración y creación de perfiles
- Limitaciones de las funciones del probador
Depuración y creación de perfiles
El probador de MetaTrader 5 es útil no sólo para probar la rentabilidad de las estrategias de trading, sino también para depurar programas MQL. La detección de errores se asocia principalmente a la capacidad de reproducir la situación problemática. Si sólo pudiéramos ejecutar programas MQL en línea, la depuración y el análisis de la ejecución del código fuente requerirían una cantidad de esfuerzo poco realista. Sin embargo, el probador le permite «ejecutar» programas en secciones arbitrarias del historial, cambiar la configuración de la cuenta y los símbolos de trading.
Recordemos que en el MetaEditor hay 2 comandos en el menú Depurar:
- Empezar/Continuar con datos reales (F5)
- Empezar/Continuar con datos históricos (Ctrl-F5)
En ambos casos, el programa se recompila rápidamente de forma especial con información de depuración adicional en el archivo ex5 y, a continuación, se ejecuta directamente en el terminal (primera opción) o en el probador (segunda opción).
Al depurar en el probador, puede utilizar tanto el modo rápido (en segundo plano) como el modo visual. Este ajuste se proporciona en el cuadro de diálogo Ajuste en la pestaña Depurar/Perfil: activar o desactivar la bandera Usar modo visual para depurar en históricos. El entorno y los ajustes del programa que se está depurando se pueden tomar directamente del probador (tal y como se configuraron por última vez para este programa) o en el mismo cuadro de diálogo en los campos de entrada bajo la bandera Usar ajustes especificados (para que funcionen, la bandera debe estar activada).
Puede preestablecer puntos de interrupción (F9) en los operadores de la parte en la que supuestamente algo empieza a funcionar mal. El probador detendrá el proceso cuando alcance la ubicación especificada en el código fuente.
Tenga en cuenta que, en el probador, el número de barras del historial que se cargan al iniciarse depende de distintos factores (como el marco temporal, el número de días en un año, etc.) y puede variar significativamente. Si es necesario, retrase la hora de inicio de la prueba.
Además de los fallos obvios que hacen que el programa se detenga o funcione explícitamente mal, hay una clase de fallos sutiles que afectan negativamente al rendimiento. Por regla general, no son tan evidentes, pero se convierten en problemas a medida que aumenta la cantidad de datos procesados, por ejemplo, en cuentas de operaciones con un historial muy largo, o en gráficos con un gran número de objetos de marcado.
Para encontrar «cuellos de botella» en términos de rendimiento, el depurador proporciona un mecanismo de perfilado del código fuente. También se puede realizar en línea o en el probador, y esto último es especialmente valioso, ya que permite comprimir significativamente el tiempo. Los comandos correspondientes también están disponibles en el menú de depuración.
- Comenzar el perfilado con datos reales
- Comenzar el perfilado con datos históricos
Para la creación de perfiles, el programa también está precompilado con ajustes especiales, así que no olvide compilar el programa de nuevo en modo normal después de que la depuración o la creación de perfiles se haya completado (especialmente si planea enviarlo a un cliente o subirlo al Mercado MQL5).
Como resultado de la creación de perfiles en MetaEditor, recibirá estadísticas de tiempo de ejecución de su código, desglosadas por líneas y funciones (métodos). Como resultado, quedará claro qué es exactamente lo que ralentiza el programa. La siguiente etapa del desarrollo suele ser el código fuente refactoring, es decir, su reescritura utilizando algoritmos mejorados, estructuras de datos u otros principios de la organización constructiva de módulos (componentes). Por desgracia, una parte importante del tiempo de programación se dedica a reescribir el código existente, encontrar y corregir errores.
El propio programa puede, si es necesario, averiguar su modo de funcionamiento y adaptar su comportamiento al entorno (por ejemplo, cuando se ejecuta en el probador, no intentará descargar datos de Internet, ya que esta función está desactivada, sino que los leerá de un determinado archivo).
En la fase de compilación, las versiones de depuración y de producción del programa pueden formarse de forma diferente debido a las macros del preprocesador _DEBUG y _RELEASE.
En la fase de ejecución del programa, sus modos pueden distinguirse utilizando las opciones de la función MQLInfoInteger.
En la tabla siguiente se resumen todas las combinaciones disponibles que afectan a las características específicas del tiempo de ejecución.
Tiempo de ejecución \ banderas |
MQL_DEBUG |
MQL_PROFILER |
Normal (liberación) |
|---|---|---|---|
En línea |
+ |
+ |
+ |
Probador |
+ |
+ |
+ |
Probador |
+ |
- |
+ |
La creación de perfiles en el comprobador sólo es posible sin el modo visual, por lo que deberá medir las operaciones con gráficos y objetos en línea.
No se permite la depuración durante el proceso de optimización, incluidos los manejadores especiales OnTesterInit, OnTesterDeinit y OnTesterPass. Si necesita comprobar su rendimiento, considere la posibilidad de llamar a su código en otras condiciones.