- 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
Enviar frames de datos de los agentes al terminal
MQL5 proporciona un grupo de funciones para organizar la transferencia y el procesamiento de sus propios resultados de optimización (aplicados), además de estadísticas e indicadores financieros estándar. Uno de ellos, FrameAdd, está diseñado para enviar datos de los agentes de simulación. Otras funciones están destinadas a recibir datos en el terminal.
El formato de intercambio de datos se basa en frames. Ésta es una estructura interna especial que un Asesor Experto puede rellenar en el comprobador basándose en un array de tipo simple (que no contiene cadenas, objetos de clase o arrays dinámicos) o utilizando un archivo con un nombre especificado (el archivo debe crearse primero en el sandbox del agente). Llamando a la función FrameAdd varias veces, el Asesor Experto puede enviar una serie de frames al terminal. No hay límites en el número de frames.
Existen dos versiones de la función FrameAdd.
bool FrameAdd(const string name, ulong id, double value, const string filename)
bool FrameAdd(const string name, ulong id, double value, const void &data[])
La función añade un frame de datos al búfer para enviarlo al terminal. Los parámetros name y id son etiquetas públicas que se pueden utilizar para filtrar frames en la función FrameFilter. El parámetro value permite pasar un valor numérico arbitrario que se puede utilizar cuando un valor es suficiente. Los datos más voluminosos se indican en el array data (puede ser un array de estructuras simples) o en un archivo denominado filename.
Si no hay datos voluminosos que transferir (por ejemplo, sólo necesita transferir el estado del proceso), utilice la primera forma de la función y especifique NULL en lugar de una cadena con el nombre del archivo o la segunda forma con un array ficticio de tamaño cero.
La función devuelve true en caso de éxito.
La función sólo puede invocarse en el manejador OnTester.
La función no tiene ningún efecto cuando se llama durante una prueba simple, es decir, fuera de la optimización.
Sólo se pueden enviar datos de los agentes al terminal. No hay mecanismos en MQL5 para enviar datos en la dirección opuesta durante la optimización. Todos los datos que el Asesor Experto quiera enviar a los agentes deben estar preparados y disponibles (en forma de parámetros de entrada o archivos conectados por directivas) antes de iniciar la optimización.
Veremos un ejemplo de uso de FrameAdd después de familiarizarnos con las funciones del anfitrión en la siguiente sección.