Exemplo de Teste de ChartEvent: Aprenda a Usar com o MetaTrader 4

Mike 2017.05.11 19:36 17 0 0
Anexo

O Expert Advisor "Test_ChartEvent.mq4" é um exemplo prático que demonstra os diversos tipos de eventos de ChartEvent, como eventos de teclas do teclado, cliques e movimentos do mouse, além de eventos personalizados. Para obter ajuda, basta pressionar a tecla 'H' e para entrar no modo de evento MOUSE_MOVE, pressione a tecla 'M'.

O código fonte é compatível tanto com o MetaTrader 4 quanto com o MetaTrader 5.


Protótipo de Função

  • bool Obj_Create()
  • bool Obj_Delete()
  • bool Obj_Move(int hSens,int vSens) - move um objeto.
  • void Print_Info() - imprime informações sobre os objetos.
  • int MouseMove(int aXX,int aYY,string sState) - trata o evento de movimento do mouse.


Variáveis Globais

  • int gChartNo=0
  • int gSubWinNo=0
  • string gsObj_Name_selected="" - o nome do objeto atualmente selecionado.


Eventos Personalizados

Três tipos de eventos personalizados são definidos:

  • #define cMyEvent_1 0
  • #define cMyEvent_2 1
  • #define cMyEvent_3_broadcast 2


Função OnTimer()

Essa função cria o ChartEvent personalizado periodicamente. Ela gera aleatoriamente esses três eventos personalizados (cMyEvent_1, cMyEvent_2 e cMyEvent_3_broadcast). Em particular, o evento cMyEvent_3_broadcast é gerado para todas as janelas de gráfico abertas.


Exemplo de Classe

A classe "CObjectMan" foi criada para gerenciar a funcionalidade dos objetos em um gráfico. Duas instâncias (variáveis) da classe são declaradas: gObjectMan1 e gObjectMan2.

Os nomes dos Objetos Gráficos vinculados a essas duas instâncias são, respectivamente: "Botão Verde" e "Botão Amarelo".


Processamento de Eventos

void OnChartEvent():

Os eventos "CHARTEVENT_KEYDOWN":

  1. As 4 teclas direcionais (setas) ou as 4 teclas direcionais do painel digital para mover o objeto selecionado.
  2. 'H': imprime as informações de ajuda (na janela de log do expert).
  3. 'I': imprime as informações de posição de dois Objetos.
  4. 'M': ativa o evento MOUSE_MOVE.


Eventos Personalizados

Imprime informações sobre esses eventos, especialmente para o evento MyEvent_3_broadcast.


Eventos de Objetos

  • CHARTEVENT_OBJECT_CHANGE, CHARTEVENT_OBJECT_DRAG, CHARTEVENT_OBJECT_DELETE - imprime o nome do objeto correspondente.
  • CHARTEVENT_OBJECT_CLICK - imprime o nome do objeto sendo clicado, seleciona seu nome para mover pelas teclas direcionais.


Eventos do Mouse

  • CHARTEVENT_CLICK - imprime as informações da barra clicada: os preços (abertura, fechamento) e o horário da barra.
  • CHARTEVENT_MOUSE_MOVE (veja: CHART_EVENT_MOUSE_MOVE) - imprime as informações do intervalo coberto: número de barras, variação de preço.

Exemplo de Teste de ChartEvent


Demonstração

Você pode realizar os seguintes testes:

  • Clique em um dos dois objetos (Botões) para selecionar e use as teclas de seta para mover o objeto selecionado.
  • Clique na barra gráfica e veja as informações da barra na aba de log (mensagem).
  • Pressione a tecla 'M' para entrar no modo de evento MOUSE_MOVE. Pressione Ctrl+F para mostrar a cruz, depois faça uma operação de arrastar e soltar. Se você não vir a mensagem de log, altere o parâmetro de entrada: "iLogLevel".
Lista
Comentário 0