Assista a como baixar robôs de negociação gratuitos
Encontre-nos em Telegram!
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 4

Visualizações:
391
Avaliação:
(2)
Publicado:
2022.12.02 23:26
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".

Binary DOT Signal 60 second expired Binary DOT Signal 60 second expired

Binary Option Signal

SMA_Channel SMA_Channel

Channel Indicator using SMA

DPO Histogram and smoothing DPO Histogram and smoothing

This version of the 'Detrended Price Oscillator' shows the DPO in blue with a smoothed estimate of it as a histogram to view the length of price cycles from peak to peak and trough to trough.

Swap Informer Swap Informer

Search for positive swaps.