- 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
Parada forzada de la prueba: TesterStop
Si es necesario, dependiendo de las condiciones observadas, el desarrollador puede dejar de probar el Asesor Experto antes. Por ejemplo, esto puede hacerse cuando se alcanza un número determinado de transacciones con pérdidas o un nivel de reducción. Para ello, la API de MQL5 proporciona la función TesterStop.
void TesterStop()
La función da la orden de terminar el probador, es decir, la parada se producirá sólo después de que el programa devuelva el control al entorno de ejecución.
Llamar a TesterStop se considera un final de simulación normal, por lo que se llamará a la función OnTester y devolverá todas las estadísticas de trading acumuladas y el valor del criterio de optimización al probador de estrategias.
También existe una forma regular alternativa de interrumpir la simulación: utilizando la función ExpertRemove que ya vimos anteriormente. La llamada de ExpertRemove también devuelve las estadísticas de trading recopiladas en el momento en que se llama a la función. Sin embargo, existen algunas diferencias.
Como resultado de la llamada a ExpertRemove, el Asesor Experto se descarga de la memoria del agente. Por lo tanto, si usted necesita ejecutar un nuevo pase con un nuevo conjunto de parámetros, se necesitará algún tiempo para volver a cargar el programa MQL. Cuando se utiliza TesterStop, esto no ocurre, y este método es preferible en términos de rendimiento.
Por otro lado, la llamada a ExpertRemove establece la bandera de parada IsStopped en el programa MQL, que se puede utilizar de forma estándar en diferentes partes del programa para finalizar («limpiar» los recursos). Pero llamar a TesterStop no establece esta bandera, y por lo tanto el desarrollador puede necesitar introducir su propia variable global para indicar la terminación anticipada y manejarla de una manera específica.
Es importante tener en cuenta que TesterStop está diseñado para detener sólo una pasada del probador.
MQL5 no proporciona funciones para la terminación anticipada de la optimización. Por lo tanto, por ejemplo, si su Asesor Experto detecta que la optimización ha sido lanzada en el modelo de generación de ticks equivocado, y esto puede detectarse sólo después de que la optimización haya sido lanzada (OnTesterInit no ayuda aquí), entonces las llamadas a TesterStop o ExpertRemove interrumpirán nuevos pases, pero los pases mismos continuarán siendo iniciados, generando resultados nulos en masa. Lo veremos en la sección de ejemplo de Gran Asesor Experto, que utilizará la protección del lanzamiento a precios abiertos.
Se podría suponer que la llamada a ExpertRemove en la instancia del Asesor Experto que se ejecuta en el terminal y que realmente sirve a un gestor de optimización detendría la optimización, pero no es así. Incluso cerrando el gráfico con este Asesor Experto trabajando en el modo frame no detiene la optimización.
Le sugerimos que pruebe usted mismo estas funciones en acción.