- OnStart
- OnInit
- OnDeinit
- OnTick
- OnCalculate
- OnTimer
- OnTrade
- OnTradeTransaction
- OnBookEvent
- OnChartEvent
- OnTester
- OnTesterInit
- OnTesterDeinit
- OnTesterPass
OnInit
É chamada em indicadores e EAs quando ocorre o evento Init. A função é projetada para inicialização de um programa MQL5 em execução. Existem duas versões da função.
Versão com retorno de resultado
int OnInit(void); |
Valor retornado
Valor de tipo int, zero significa inicialização bem-sucedida.
Ao retornar o valor INIT_FAILED o Expert Advisor será retirado à força do gráfico.
Ao retornar o valor INIT_FAILED o indicador não será removido do gráfico. Nesse caso, o indicador restante no gráfico estará inoperante os manipuladores de eventos não são chamados no indicador.
O uso da chamada da OnInit() com o retorno de resultado é prioridade, pois este método permite não apenas inicializar o programa, mas também retornar o código de erro em caso de término antecipado do programa.
Versão sem retorno do resultado é deixada apenas para compatibilidade com códigos antigos. Não é recomendada
void OnInit(void); |
Observação
O evento Init é gerado imediatamente após o especialista ou indicador ser carregado, este evento não é gerado para scripts. A função OnInit() é usada para inicialização do programa MQL5. Se a OnInit() tiver um valor retornado do tipo int, um código de retorno diferente de zero significa uma inicialização mal-sucedida e gera o evento Deinit com código de motivo de desinicialização REASON_INITFAILED.
A função OnInit() do tipo void sempre significa uma inicialização bem-sucedida e não é recomendada.
Ao otimizar os parâmetros de entrada do EA, recomenda-se usar como código de retorno os valores da enumeração ENUM_INIT_RETCODE. Estes valores se destinam a organizar o gerenciamento do progresso da otimização e, inclusive, a selecionar os mais adequados agentes de teste. Na inicialização do EA, mesmo antes de executar o teste, você pode solicitar informações sobre a configuração e sobre os recursos do agente (o número de núcleos, a quantidade de memória livre, etc.) usando a função TerminalInfoInteger(). Com base nas informações recebidas, você pode permitir que esse agente de teste seja usado ou não ao ser otimizado.
Identificador |
Descrição |
---|---|
INIT_SUCCEEDED |
Inicialização bem-sucedida, o teste do EA pode continuar. Esse código significa o mesmo que o valor zero inicialização do EA no testador bem-sucedida. |
INIT_FAILED |
Inicialização mal-sucedida, não faz sentido continuar o teste devido a erros irrecuperáveis. Por exemplo, não foi possível criar o indicador necessário para o trabalho do EA. O retorno deste valor significa o mesmo que o retorno, retrocesso de um valor diferente de zero inicialização do EA no testador mal-sucedida. |
INIT_PARAMETERS_INCORRECT |
Projetado para denotar um conjunto incorreto de parâmetros de entrada, na tabela de otimização geral, a sequência de resultados com esse código de retorno será destacada em vermelho. O teste para este conjunto de parâmetros do EA não será executado, o agente estará livre para receber um novo trabalho. Quando esse valor é recebido, o testador de estratégia tem a garantia de não transferir essa tarefa para outros agentes para reexecução. |
INIT_AGENT_NOT_SUITABLE |
Não há erros no programa durante a inicialização, mas por algum motivo este agente não é adequado para testes. Por exemplo, não há RAM suficiente, sem suporte de OpenCL e assim por diante. Após retornar este código, o agente não receberá mais tarefas até o final desta otimização. |
O uso da OnInit() com retorno de INIT_FAILED/INIT_PARAMETERS_INCORRECT no testador tem várias características que devem ser consideradas ao otimizar EAs:
- o conjunto de parâmetros para o qual a OnInit() retornou INIT_PARAMETERS_INCORRECT é considerado inadequado para testes e não será usado para obter a próxima população duranteotimizações genéticas. O fato de haver muitos conjuntos de parâmetros rejeitados pode levar a resultados de pesquisa incorretos de parâmetros ideais de EAs. O algoritmo de busca pressupõe que a função de critério de otimização é suave e não tem descontinuidades em todo o conjunto de parâmetros de entrada.
- se a OnInit() retornar INIT_FAILED, o teste não poderá ser iniciado e o EA será descarregado da memória do agente. Para executar a próxima passagem, o novo EA será carregado com o novo conjunto de parâmetros. Isso faz com que inciar o teste da próxima passagem de otimização leve mais tempo do que se fosse chamada a TesterStop().
Exemplo da função OnInit() para um EA
//--- input parameters
|
Veja também
OnDeinit, TesterHideIndicators, Funções de processamento de eventos, Execução de programas, Evento do terminal do cliente, Inicialização de variáveis, Criando e destruindo objetos