- 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
Gestión del tiempo en el probador: temporizador, Sleep, GMT
A la hora de desarrollar Asesores Expertos, hay que tener en cuenta que el probador dispone de unas especificaciones de simulación del paso del tiempo basadas en ticks generados y operación de las funciones relacionadas con el tiempo.
En la simulación, la hora local devuelta por la función TimeLocal es siempre igual a la hora del servidor según TimeTradeServer. A su vez, la hora del servidor es siempre igual a TimeGMT GMT. Así, todas estas funciones, cuando se prueban, dan la misma hora. Se trata de una característica técnica de la plataforma, que se produce porque se decidió no almacenar localmente la información sobre la hora del servidor, sino tomarla siempre del servidor, con el que puede no haber conexión en un momento determinado.
Esta característica crea dificultades en la implementación de estrategias relacionadas con el tiempo global, en particular, con referencia a los comunicados de prensa. En tales casos, es necesario especificar la zona horaria de las cotizaciones en los ajustes del Asesor Experto que se está probando o inventar métodos para la autodetección de la zona horaria (véase la sección Horario de verano).
Pasemos ahora a otras funciones para trabajar con el tiempo.
Como sabemos, es posible procesar eventos de temporizador en MQL5. El manejador OnTimer se llama independientemente del modo de simulación. Esto significa que si la simulación se lanza en el modo «Sólo precios de apertura» en el período H4, y se establece un temporizador dentro del Asesor Experto con una llamada cada segundo, entonces el manejador OnTick será llamado una vez en la apertura de cada barra H4 y luego, dentro de la barra, el manejador OnTimer será llamado 14400 veces (3600 segundos * 4 horas). La medida en que el tiempo de simulación del Asesor Experto aumentará en este caso depende de su algoritmo.
Otra función que influye en el transcurso del tiempo dentro de un programa es la función Sleep, que permite suspender la ejecución de un Asesor Experto durante un tiempo. Esto puede ser necesario cuando se solicita algún dato que aún no está listo en el momento de la solicitud, y es necesario esperar hasta que esté listo.
Es importante entender que Sleep sólo afecta al programa que lo llama y no retrasa el proceso de simulación. De hecho, al llamar a Sleep, los ticks generados se «reproducen» dentro del retardo especificado, como resultado de lo cual pueden activarse órdenes pendientes, niveles de stop, etc. Tras llamar a Sleep, el tiempo simulado en el comprobador se incrementa en el intervalo especificado en el parámetro de la función.
Más adelante, en la sección sobre simulación de Asesores Expertos multidivisa, mostraremos cómo puede utilizar el temporizador y la función Sleep para sincronizar barras.