Home Trading Sistematico Post

Come Rilevare l'Inizio di una Nuova Candela in MetaTrader 5

Allegato
41601.zip (795 bytes, Scarica 0 volte)

Quando si utilizza un Expert Advisor (EA) in MetaTrader 5, ogni volta che riceviamo un nuovo tick, la funzione di gestione degli eventi OnTick() viene attivata automaticamente dal terminale. Tuttavia, non esiste una funzione standard per rilevare l'inizio di una nuova candela.

Per ovviare a questa mancanza, è fondamentale monitorare il momento di apertura della candela più recente. Quando questo orario cambia, significa che è iniziata una nuova candela e possiamo reagire di conseguenza. Ecco un esempio di codice, compatibile sia con MQL4 che con MQL5, che mostra come implementare questa funzionalità:

// Gestore eventi tick standard
   void OnTick()
   {
      // Verifica se c'è una nuova candela (compatibile con MQL4 e MQL5).
         static datetime dtCandelaCorrente   = WRONG_VALUE;
                datetime dtCandelaPrecedente = dtCandelaCorrente;
                         dtCandelaCorrente   = iTime( _Symbol, _Period, 0 );
                bool     bEventoCandelaNuova  = ( dtCandelaCorrente != dtCandelaPrecedente );

      // Reagisci all'evento di una nuova candela.
         if( bEventoCandelaNuova )
         {
            // Controlla se è il primo tick ricevuto.
               if( dtCandelaPrecedente == WRONG_VALUE )
               {
                  // Fai qualcosa al primo tick ...
               }
               else
               {
                  // Fai qualcosa quando appare una candela normale ...
               };

      // Fai altre operazioni ...
     };
      else
     {
            // Fai qualcos'altro ...
         };

      // Altre operazioni ...
   };

Nel codice sopra, la variabile statica tiene traccia dell'orario di apertura della candela, anche quando si esce dalla funzione OnTick(). A differenza di una variabile locale normale, memorizza il suo contenuto e non lo rilascia al termine della funzione. Questo è fondamentale per rilevare un cambiamento nell'orario di apertura della candela corrente.

È importante notare che quando l'EA viene applicato per la prima volta a un grafico, il codice reagisce come se la candela fosse appena aperta. Questo richiede un trattamento speciale se la situazione deve essere gestita in modo diverso.

Infine, ti informo che il codice sorgente per tutte le mie pubblicazioni su CodeBase è ora disponibile anche tramite i "Progetti Pubblici" di MetaEditor sotto il nome "FMIC".

Post correlati

Commento (0)