Referência MQL5Programas MQL5Eventos do Terminal Cliente 

Eventos do Terminal Cliente

Init

Imediatamente após o terminal cliente carregar um programa (uma Expert Advisor ou um indicador customizado) e começar o processo de inicialização de variáveis globais, o evento Init será enviado, e será processado pelo handler de evento OnInit(), caso exista. Este evento também é gerado após um instrumento financeiro e / ou prazo gráfico ser alterado, depois de um programa ser recompilado no MetaEditor, depois dos parâmetros de entrada serem alterados a partir da janela de configuração de um Expert Advisor ou um indicador personalizado. Um Expert Advisor é também inicializado após a conta ser alterada. O evento Init não é gerado para scripts.

Deinit

Antes de variáveis globais serem desinicializadas e o programa (Expert Advisor ou indicador customizado) ser descarregado, o terminal cliente envia o evento Deinit para o programa. Deinit é também gerado quando o terminal cliente é encerrado, quando um gráfico é fechado, logo antes o ativo e/ou período ser alterado, em uma recompilação de programa bem sucedida, quando parâmetros de input são alterados e quando a conta é alterada.

O motivo de desinicialização pode ser obtido a partir do parâmetro passado para a função OnDeinit(). A execução da função OnDeinit() está restrita a 2.5 segundos. Se durante este tempo a função não for concluída, então ela é finalizada de forma forçada. O evento Deinit (Desinicializar) não é gerada para scripts.

Start

O evento Start é um evento especial para ativação de script após ele ser carregado. O evento é processado pelo handler (manipulador) OnStart. O evento Start não é enviado para Expert Advisor ou indicadores customizados.

NewTick

O evento NewTick é gerado caso existam novas cotações, ele é processado pelo OnTick() de Expert Advisors anexados. No caso de uma nova cotação ser recebida enquanto a função OnTick estiver processando a cotação anterior, a nova cotação será ignorada pelo Expert Advisor, porque o evento correspondente não será enfileirado.

Todas as novas cotações que são recebidas enquanto o programa está rodando são ignoradas até que a execução da função OnTick() esteja concluída. Após isso, a função rodará somente após uma nova cotação ser recebida. O evento NewTick é gerado independentemente da negociação automática ser permitida ou não (botão "AutoTrading Permite/Proíbe"). A proibição de negociação automática significa somente que o envio de solicitações de negociação a partir de um Expert Advisor não é permitido, enquanto o Expert Advisor continua trabalhando.

A proibição de negociação automática ao apertar o botão apropriado não parará a execução corrente da função OnTick().

Calculate

O evento Calculate é gerado somente para indicadores logo após o evento Init ser enviado e em qualquer alteração de dados de preços. Ele é processado pela função OnCalculate.

Timer

O evento Timer é periodicamente gerado pelo terminal cliente para o Expert Advisor que ativou o timer através da função EventSetTimer. Geralmente, esta função é chamada na função OnInit. O processamento do evento Timer é realizado pela função OnTimer. Após a operação do Expert Advisor estar concluída, é necessário destruir o timer usando a função EventKillTimer, que é geralmente chamada na função OnDeinit.

Trade

O evento Trade é gerado quando uma operação de trade é concluída em um servidor de negociação. O evento Trade é tratado pela função OnTrade() para as seguintes operações de negociação:

  • envio, modificação e remoção de uma ordem pendente;
  • cancelamento de uma ordem pendente com ausência de dinheiro suficiente ou expiração;
  • ativação de uma ordem pendente;
  • abertura, acréscimo ou encerramento de uma posição (ou parte da posição);
  • modificação da posição aberta (alteração de stops - Stop Loss e/ou Take Profit).

TradeTransaction

Ao realizar algumas ações específicas em uma conta de negociação, seu estado muda. Tais ações includem:

  • Envio de uma solicitação de negociação a partir de algum aplicativo MQL5 no terminal usando as funções OrderSend e OrderSendAsync e sua posterior execução.
  • Envio de uma solicitação de negociação por meio da interface gráfica do terminal e sua posterior execução.
  • Ativação de ordens pendentes e ordens de stop no servidor.
  • Realização de operações no lado de um servidor de negociação.

As seguintes transações de negociação são realizadas como resultado destas ações:

  • tratamento de uma solicitação de negociação
  • mudança de ordens de abertura
  • mudança de histórico de ordens
  • mudança de histórico de operações (deals)
  • mudança de posições

Por exemplo, ao enviar uma ordem de compra de mercado, ela é tratada, uma ordem de compra apropriada é criada para a conta, a ordem é então executada e removida da lista de ordens em aberto, e então ela é adicionada ao histórico de ordens, uma apropriada operação (deal) é adicionada ao histórico e uma nova posição é criada. Todas estas ações são transações de negociação. A chegada de tal transação no terminal é um evento TradeTransaction. Este evento é tratado pela função OnTradeTransaction.

Tester

O evento Tester é gerado após um teste de um Expert Advisor sob dados de histórico ter acabado. O evento é tratado pela função OnTester().

TesterInit

O evento TesterInit é gerado no início de uma otimização no Provador de Estratégia antes do primeiro passo de otimização. O evento TesterInit é tratado pela função OnTesterInit().

TesterPass

O evento TesterPass é gerado quando uma nova estrutura de dados é recebido. O evento TesterPass é tratado pela função OnTesterPass().

TesterDeinit

O evento TesterDeinit é gerado após o fim de um otimização de um Expert Advisor no Provador de Estratégia. O evento TesterDeinit é tratado pela função OnTesterDeinit().

ChartEvent

O evento ChartEvent é gerado pelo terminal cliente quando um usuário está trabalhando com um gráfico:

  • pressionar de teclado, quando a janela de gráfico está com foco
  • objeto gráfico criado
  • objeto gráfico excluído
  • pressionar de mouse sobre um objeto gráfico do gráfico
  • movimentação do objeto gráfico usando o mouse
  • fim de edição de texto no LabelEdit

Também existe o evento customizado ChartEvent, que pode ser enviado para um Expert Advisor através de qualquer programa mql5 por meio do uso da função EventChartCustom. O evento é processado pela função OnChartEvent.

BookEvent

O evento BookEvent é gerado pelo terminal cliente após a Profundida de Mercado ser alterada; ele é processado pela função OnBookEvent. Para começar a geração de BookEvent para um ativo especificado, é necessário subscrever o ativo para este evento através do uso da função MarketBookAdd.

Para desfazer a subscrição de BookEvent para um ativo especificado, é necessário chamar a função MarketBookRelease. O evento BookEvent é um evento do tipo-transmissão - isso significa que é suficiente inscrever apenas um Consultor Especializado (Expert Advisor) para este evento, e todos os outros Consultores Especializados (Expert Advisors) que têm o manipulador de eventos OnBookEvent, vão recebê-lo. É por isso que é necessário analisar o nome do ativo, que é passado para um handler como um parâmetro.

Também Veja

Handlers de Evento, Execução de Programa