Início Negociação Sistemática Postagem

Painel de Controle MCM: Potencialize Seus EAs Multicurrency no MetaTrader 5

Anexo
215.zip (19.4 KB, Baixar 0 vezes)

Uma das vantagens da linguagem MQL5 é a possibilidade de utilizar indicadores multicurrency e EAs. Confira o manipulador de eventos Multicurrency OnTickMarketWatch em MQL5 no CodeBase.

Entretanto, o uso do conceito proposto no script pode não ser o mais conveniente. Por exemplo, em situações com muitos eventos, pode ocorrer um estouro na fila de eventos.

Aqui está uma nota do Referência MQL5:

O terminal cliente adiciona eventos que aparecem à fila de eventos. Assim, os eventos são processados um após o outro, de acordo com a ordem em que foram recebidos. Existe uma exceção para o evento NewTick. Se a fila já possui um evento desse tipo ou se esse evento está sendo processado, o novo evento NewTick não é enfileirado.

A fila de eventos tem um tamanho limitado. Em caso de estouro da fila, eventos antigos são removidos sem serem processados para permitir a recepção de novos eventos. Portanto, é recomendável escrever manipuladores de eventos eficientes, e não é recomendado usar laços infinitos (exceto para scripts que lidam apenas com o evento Start).

Além disso, às vezes é necessário recalcular os valores do indicador apenas quando uma nova barra aparece. Outra situação é a necessidade de desativar o trading "na hora" em algum símbolo em um EA multicurrency, mudar o timeframe de algum símbolo ou algo do tipo.

Esse "algo mais" pode ser dados externos. O Painel de Controle MCM (Modo Multicurrency) é baseado nessa ideia.

A propósito, ele também pode ser utilizado em operações com uma única moeda.

Recursos do Painel de Controle MCM (versão de concurso):

O painel possui um número mínimo de funções necessárias para usar o modo multicurrency em EAs e Indicadores:

  • Adicionar/Remover símbolos para trading e análise.
  • Permite acompanhar os eventos de "novo tick" e "nova barra" para qualquer símbolo e período.
  • Todas as configurações podem ser alteradas "na hora" sem reiniciar o EA ou o Indicador. 
  • O Painel pode ser utilizado com nossos EAs e Indicadores.
  • Também pode ser incluído no seu código, sendo carregado com eles.
  • É transparente. Você não precisa adicionar o código do Painel de Controle MCM aos seus EAs ou Indicadores.

Usando o "Painel de Controle MCM" você pode adicionar suas próprias funcionalidades. Veja abaixo para mais detalhes.

A versão atual não suporta a gravação/restauração das configurações do Painel.


Iniciando o Painel de Controle MCM

A inicialização do "Painel de Controle MCM" pode ser feita de várias maneiras: 

  • Conecte o indicador "iControl panel MCM" ao gráfico.
  • Execute o script "scControl panel MCM". O script carrega o indicador "iControl panel MCM".
  • Carregue o Painel a partir do seu EA ou Indicador. Veja "exControl panel MCM" para mais detalhes.

No terceiro caso, o Painel será carregado com nosso EA ou Indicador e conectado ao gráfico.

Seu EA deve ter o manipulador de eventos OnChartEvent() para processar os eventos do Painel de Controle MCM.

Interface

A interface do usuário é simples, implementada como um menu. O tamanho e as cores do menu podem ser configurados por parâmetros de entrada.

Ela se apresenta da seguinte forma:


 

Design

O Painel é utilizado para configurar os eventos para os EAs e Indicadores multicurrency.

O tamanho e a posição do Painel dependem do tamanho do gráfico e do tamanho da fonte (definido nos parâmetros de entrada). Para liberar espaço de trabalho, o Painel pode ser minimizado.


 

O tamanho do Painel pode ser alterado ao modificar o tamanho da fonte nos parâmetros de entrada (tamanho da fonte=10 por padrão):

 

Você pode definir quaisquer cores que desejar.

Por exemplo, o esquema Pink:


O esquema EMO:


 

 

Fácil de usar

O menu é intuitivo, fácil de usar.

O botão "Painel de Controle MCM" contém recursos adicionais (não incluídos nesta versão):


Usando o botão "Gráfico" você pode alterar facilmente o símbolo e o timeframe atuais, basta escolher:


 

O botão "Eventos" permite habilitar/desabilitar eventos "na hora" (sem reiniciar o EA ou o Indicador) para algum símbolo e especificar o evento necessário. Esses eventos podem ser processados dentro da função OnChartEvent() do EA ou Indicador. O menu de símbolos contém apenas os símbolos selecionados no "Market Watch". Você pode combinar quaisquer eventos, todos eles serão processados.

Por exemplo, não é necessário se preocupar com a aparição de novos ticks/barras para símbolos em timeframes, o motor do Painel enviará os eventos:


  

Aqui está a seção "Ajuda":


 

Conhecimento e sua Implementação

Minha solução está publicada em Multicurrency OnTickMarketWatch tick event handler, mas este Painel possui alguns recursos adicionais:

  • O "Painel de Controle MCM" fornece a interface, não implementada diretamente no terminal cliente. Permite usar o modo multicurrency através do manipulador de eventos OnChartEvent(). Outra funcionalidade é a possibilidade de alterar as configurações "na hora".
  • Para gerar os eventos para o manipulador OnChartEvent(), o Painel de Controle MCM utiliza seus próprios "agentes" (indicadores, acionados pelo Painel de Controle MCM em algum símbolo), fornecendo o evento para o trading multicurrency.
  • O Painel pode ser incluído em EAs ou Indicadores.
  • O Painel de Controle MCM oferece novas possibilidades para desenvolvedores MQL5.
  • Na minha opinião, o Painel é um exemplo de uma nova estrutura de EAs e Indicadores. Fornecerei alguns exemplos mais tarde.

Informações sobre eventos e alertas

O Painel possui uma barra de status para mostrar eventos.


Instalação do Painel de Controle MCM

Descompacte o arquivo mcm_control_panel.zip na pasta do terminal cliente. Após isso, os seguintes arquivos aparecerão:

  • /mql5/experts/exControl panel MCM.mq5 - exemplo de Expert Advisor;
  • /mql5/scripts/scControl panel MCM.mq5  - exemplo de Script;
  • /mql5/indicators/iControl panel MCM.mq5 - indicador, o principal motor do "Painel de Controle MCM";
  • /mql5/indicators/Spy Control panel MCM.mq5 - indicador, agente do "Painel de Controle MCM"
  • /mql5/include/Control panel MCM.mqh - um conjunto de classes e funções do "Painel de Controle MCM".

Depois, compile os Indicadores, Script e Expert Advisor.


Lançando o Painel de Controle MCM

A inicialização do Painel de Controle MCM conecta o indicador iControl panel MCM.mq5 a qualquer gráfico.

O Painel pode ser lançado a partir do Expert Advisor, basta conectar o "exControl panel MCM" ao gráfico:


 

Como exemplo de multicurrency, escrevi o Expert Advisor MultiTrend. O indicador traça a tendência do USD, com base na análise de 4 pares de moedas:

Aqui está o código:

//+------------------------------------------------------------------+ 
//|                                                   MultiTrend.mq5 | 
//|                                                   Copyright 2010, Lizar | 
//|                             https://www.mql5.com/ru/users/Lizar | 
//+------------------------------------------------------------------+ 
#define VERSION       "1.00 Build 2 (09 Dec 2010)" 
#property copyright   "Copyright 2010, Lizar"
#property link        "https://www.mql5.com/ru/users/Lizar"
#property version     VERSION
#property description "Este Expert Advisor usa o Painel de Controle MCM"
input color bg_color=Gray;         // Cor do menu 
input color font_color=Gainsboro; // Cor do texto 
input color select_color=Yellow  // Cor do texto selecionado 
input int font_size=10;          // Tamanho da fonte 
#include <Control panel MCM.mqh> //<--- Incluir arquivo 
//+------------------------------------------------------------------+ 
//| Função de inicialização do Expert                                   | 
//+------------------------------------------------------------------+ 
int OnInit()
  {    //--- Inicialização do Painel de Controle MCM.     
//--- Não é necessário definir cores, se não especificadas, as cores padrão serão usadas.      
   InitControlPanelMCM(bg_color,font_color,select_color,font_size);
//---    
  return(0);   
  } 
//+------------------------------------------------------------------+ 
//| Função de desinicialização do Expert                                   | 
//+------------------------------------------------------------------+ 
void OnDeinit(const int reason)
  {
   DeinitControlPanelMCM();   //<--- Desinicialização do Painel de Controle MCM  
  }
//+------------------------------------------------------------------+ 
//| Manipulador de eventos OnChartEvent.                                      | 
//| Consulte a Referência MQL5 para mais detalhes.                                  | 
//| Pode ser usado com o Painel de Controle MCM para trading multicurrency     | 
//+------------------------------------------------------------------+ 
void OnChartEvent(const int id, // identificador do evento:                                      
                  // se id-CHARTEVENT_CUSTOM==0 - evento de inicialização (quando prev_calculated==0)
                   const long&   lparam, // timeframe 
                                 const double& dparam, // preço    
                                 const string& sparam  // nome do símbolo 
                                 )
  {
   if(id>=CHARTEVENT_CUSTOM)
     {
      Print(TimeToString(TimeCurrent(),TIME_SECONDS)," -> id=", id-CHARTEVENT_CUSTOM,
                                                 ":  ",sparam," ",EventDescription(lparam)," preço=",dparam);
     }
  }
//+------------------------------------------------------------------+ 

Os parâmetros do OnChartEvent().

O Painel gera eventos personalizados. Esses eventos podem ser processados no Expert Advisor ou Indicador usando o manipulador de eventos OnChartEvent().

Os parâmetros de entrada:

  • id - id do evento:
          se id-CHARTEVENT_CUSTOM !=0 - é igual ao índice do símbolo na janela "Market Watch";
  • lparam  -  flag do evento. Veja a enumeração ENUM_CHART_EVENT_SYMBOL em Control panel MCM.mqh.
  • dparam -  preço do tick ou preço de abertura da nova barra em algum timeframe.
  • sparam -  nome do símbolo

Lista de eventos suportados no Painel de Controle MCM

Usando o parâmetro lparam, o Painel pode enviar até 64 eventos personalizados diferentes por símbolo. Nesta versão, os seguintes eventos são suportados: 

  • Evento de "Inicialização" (Initialization);
  • Evento de "Novo tick" (tick);
  • Evento de "Nova barra" no gráfico M1 (M1);
  • Evento de "Nova barra" no gráfico M2 (M2);
  • Evento de "Nova barra" no gráfico M3 (M3);
  • Evento de "Nova barra" no gráfico M4 (M4);
  • Evento de "Nova barra" no gráfico M5 (M5);
  • Evento de "Nova barra" no gráfico M6 (M6);
  • Evento de "Nova barra" no gráfico M10 (M10);
  • Evento de "Nova barra" no gráfico M12 (M12);
  • Evento de "Nova barra" no gráfico M15 (M15);
  • Evento de "Nova barra" no gráfico M20 (M20);
  • Evento de "Nova barra" no gráfico M30 (M30);
  • Evento de "Nova barra" no gráfico H1 (H1);
  • Evento de "Nova barra" no gráfico H2 (H2);
  • Evento de "Nova barra" no gráfico H3  (H3);
  • Evento de "Nova barra" no gráfico H4 (H4);
  • Evento de "Nova barra" no gráfico H6 (H6);
  • Evento de "Nova barra" no gráfico H8 (H8);
  • Evento de "Nova barra" no gráfico H12 (H12);
  • Evento de "Nova barra" no gráfico diário (D1);
  • Evento de "Nova barra" no gráfico semanal (W1);
  • Evento de "Nova barra" no gráfico mensal (MN1); 

A descrição do evento, retornada pela EventDescription() é apresentada entre parênteses (Initialization, tick, Mxx etc). A função EventDescription pode ser encontrada em Control panel MCM.mqh (seguindo a enumeração ENUM_CHART_EVENT_SYMBOL).

O evento de "Inicialização" é gerado quando prev_calculated=0, podendo ser utilizado para preparar os dados, por exemplo, recalculando os valores do indicador.


Configurando Eventos

Para configurar os eventos necessários, clique no botão "Eventos", selecione o símbolo e o tipo de evento. Os eventos selecionados aparecem em amarelo (ou na cor selecionada nos parâmetros de entrada do indicador). Você pode escolher um ou mais eventos, todos eles poderão ser processados pelo nosso EA multicurrency. Para aplicar as alterações, clique no botão "Habilitar/Desabilitar eventos".

O mesmo processo pode ser realizado para todos os símbolos necessários.


 

Aqui está um log da aba "Experts": 


 

Publicações relacionadas

Comentário (0)