- OnStart
- OnInit
- OnDeinit
- OnTick
- OnCalculate
- OnTimer
- OnTrade
- OnTradeTransaction
- OnBookEvent
- OnChartEvent
- OnTester
- OnTesterInit
- OnTesterDeinit
- OnTesterPass
OnInit
Se llama en los indicadores y expertos al suceder el evento Init. La función se ha diseñado para inicializar un programa MQL5 en marcha. Existen dos variantes de la función.
La versión con retorno del resultado
int OnInit(void); |
Valor retornado
Valor del tipo int, cero designa la inicialización exitosa.
Es prioritario el uso de la llamada de OnInit() con retorno del resultado de ejecución, ya que este método permite no solo ejecutar la inicialización del programa, sino también retornar el código de error en el caso de que el programa finalice antes de tiempo.
La versión sin retorno de resultado se ha dejado solo por compatibilidad con los códigos antiguos. No se recomienda su uso
void OnInit(void); |
Observación
El evento Init se genera justo después de cargar el experto o indicador, para los scripts este evento no se genera. La función OnInit() se usa para inicializar un programa MQL5. Si OnInit() tiene un valor retornable del tipo int, entonces un código de retorno distinto a cero significará la desinicialización fallida y generará el evento Deinit con el código del motivo de la desinicialización REASON_INITFAILED.
La función OnInit() del tipo void siempre denota la inicialización exitosa y no se recomienda su uso.
Al optimizar los parámetros de entrada del experto, se recomienda utilizar como código de retorno los valores de la enumeración ENUM_INIT_RETCODE. Estos valores han sido pensados para organizar la gestión del transcurso de la optimización, incluyendo la elección de los agentes de simulación más adecuados. Justo al inicializar el experto, antes de iniciar la propia simulación, podemos solicitar información sobre la configuración y los recursos del agente (número de núcleos, volumen de memoria libre, etc.) con la ayuda de la función TerminalInfoInteger(). Basándonos en la información obtenida, podemos o bien permitir usar este agente de simulación, o bien rechazarlo a la hora de optimizar este experto.
Identificador |
Descripción |
---|---|
INIT_SUCCEEDED |
La inicialización ha tenido éxito, la simulación del experto puede continuar. Este código significa los mismo que el valor cero, la inicialización del experto en el simulador ha tenido lugar con éxito. |
INIT_FAILED |
Inicialización fallida, no tiene sentido continuar la simulación, debido a errores sin solucionar. Por ejemplo, no se ha logrado crear el indicador necesario para que funcione el experto. El retorno de este valor significa lo mismo que el retorno de un valor distinto a cero, es decir, la inicialización del experto en el simulador ha pasado con éxito. |
INIT_PARAMETERS_INCORRECT |
Ha sido pensado para que el programador designe correctamente el conjunto de parámetros de entrada; en el recuadro general de optimización, la línea de resultado con este código de retorno se iluminará en color rojo. La simulación para este conjunto de parámetros del experto no se ejecutará, el agente está libre para obtener un nuevo resultado. Al obtener este resultado, el simulador de estrategias con toda garantía no transmitirá este valor a otros agentes para su nueva ejecución. |
INIT_AGENT_NOT_SUITABLE |
No han aparecido errores en el funcionamiento del programa, pero, por algún motivo, este agente no conviene para realizar la simulación. Por ejemplo, no hay memoria operativa suficiente, no hay soporte de OpenCL, etc. Después de retornar este código, el agente no recibirá más tareas hasta el final de esta optimización. |
El uso de OnInit() con retorno de INIT_FAILED/INIT_PARAMETERS_INCORRECT en el simulador tiene una serie de peculiaridades que debemos considerar al optimizar los asesores:
- el conjunto de parámetros para el que OnInit() ha retornado INIT_PARAMETERS_INCORRECT se considera inadecuado para la simulación y no se usará para obtener la próxima populación durante la optimización genética. Si estos conjuntos descartados de parámetros son demasiados, este hecho podría provocar que la búsqueda de los parámetros óptimos del asesor arroje resultados incorrectos. El algoritmo de búsqueda presupone que la función de criterio de optimización es suave y no tiene brechas en el conjunto de los parámetros de entrada.
- si OnInit() ha retornado INIT_FAILED, esto significa que la simulación no se puede comenzar, y el asesor es descargado de la memoria del agente. Para ejecutar la siguiente pasada en el nuevo conjunto de parámetros se realizará una nueva carga del asesor. Esto hará que necesitemos mucho más tiempo para iniciar la simulación de la siguiente pasada de optimización, en comparación con la llamada de TesterStop().
Ejemplo de la función OnInit() para el experto
//--- input parameters
|
Ver también
OnDeinit, TesterHideIndicators, Funciones para el procesamiento de eventos, Ejecución de programas, Eventos del terminal de cliente, Inicialización de variables, Creación y eliminación de objetos