Assista a como baixar robôs de negociação gratuitos
Encontre-nos em Facebook!
Participe de nossa página de fãs
Script interessante?
Coloque um link para ele, e permita que outras pessoas também o avaliem
Você gostou do script?
Avalie seu funcionamento no terminal MetaTrader 5
Experts

Detectando o início duma nova barra ou vela - expert para MetaTrader 5

Visualizações:
5551
Avaliação:
(10)
Publicado:
2022.12.02 23:28
Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance

Para um Expert Advisor (EA), quando é recebida uma nova cotação (“tick”) pelo MetaTrader, a função padrão de manipulação de eventos OnTick() é chamada pelo terminal. No entanto, não há função de manipulação de eventos padrão para quando é iniciada uma nova barra (vela).

Para detectar esta situação, é necessário monitorizar a hora de abertura da barra mais recente. Ao mudar, significa o início de uma nova barra, e pode-se reagir a situação e lidar com o evento. O seguinte exemplo de código, compatível com ambos o MQL4 e MQL5, demonstra um dos métodos de como pode ser alcançado:

// Manipulador padrão de evento de tick
   void OnTick()
   {
      // Verifiquar a existencia duma nova barra (compatível com MQL4 e MQL5).
         static datetime dtBarraCorrente   = WRONG_VALUE;
                datetime dtBarraPrecedente = dtBarraCorrente;
                         dtBarraCorrente   = iTime( _Symbol, _Period, 0 );
                bool     bEventoBarraNova  = ( dtBarraCorrente != dtBarraPrecedente );

      // Reajir ao evento duma barra nova e lidar com a situação.
         if( bEventoBarraNova )
         {
            // Detectar se este é o primeiro tick recebido e lidar com a situação.
               /* Por exemplo, quando é aplicado pela primeira vez ao gráfico e
                  a barra está algures a meio do seu progresso e
                  não é realmente o início de uma nova barra. */
               if( dtBarraPrecedente == WRONG_VALUE )
               {
                  // Fazer algo no primeiro tick ou no meio duma barra ...
               }
               else
               {
                  // Fazer algo quando uma barra normal surgir ...
               };

            // Fazer algo independente da condição anterior ...
         }
         else
         {
            // Fazer outra coisa ...
         };

      // Fazer outras coisas ...
   };

No código anterior, a variável estática acompanha a hora de abertura da barra, mesmo ao retornar da função OnTick(). Ao contrário de uma variável local normal, memoriza o seu conteúdo de dados e não o libera ao sair da função. Esta é a chave para detectar uma mudança na hora de abertura da barra actual.

Também é importante observar que, quando o EA é colocado pela primeira vez em um gráfico, o anterior código reage como se a barra tivesse acabado de abrir. Essa condição requer tratamento especial se a situação necessitar ser tratada de maneira diferente.

Observe por favor, que o código-fonte de todas as minhas publicações no CodeBase, estão agora também disponíveis através de "Projetos públicos" do MetaEditor sob o nome "FMIC".

Verificação de servidor ativo Verificação de servidor ativo

Envio de mensagem push para verificação do VPS e MT5.

Mercado Futuro - Buscando o ativo (código) da série vigente Mercado Futuro - Buscando o ativo (código) da série vigente

O código dessa biblioteca tem o objetivo de retornar o valor do ativo vigente para o (mini)índice e (mini)dólar da bolsa brasileira B3.

Informações sobre entradas e saídas do modelo ONNX Informações sobre entradas e saídas do modelo ONNX

Script para obter informações sobre o número, tipos e tamanhos de tensores de entrada e saída do modelo onnx

Funções de Tempo Aplicadas no Código Funções de Tempo Aplicadas no Código

Tempo local e de servidor