Come Riconoscere l'Inizio di una Nuova Candela su MetaTrader 4

Mike 2022.04.24 09:46 18 0 0
Allegato

Quando si tratta di utilizzare un Expert Advisor (EA) su MetaTrader, è fondamentale saper riconoscere l'apertura di una nuova candela. Mentre il terminale MetaTrader gestisce automaticamente gli eventi di tick attraverso la funzione predefinita OnTick(), non esiste una funzione predefinita per l'apertura di una nuova candela.

Per rilevare quando inizia una nuova candela, dobbiamo monitorare l'orario di apertura della candela più recente. Quando questo cambia, indica che è iniziata una nuova candela e possiamo reagire di conseguenza. Qui di seguito trovi un esempio di codice, compatibile sia con MQL4 che MQL5, che mostra come procedere:

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

      // Reagisci all'evento di nuova candela e gestiscilo.
         if( bNuovaCandela )
         {
            // Rileva se questo è il primo tick ricevuto e gestiscilo.
               /* Ad esempio, quando è attaccato per la prima volta a un grafico e
                  la candela è in mezzo al suo progresso e
                  non è realmente l'inizio di una nuova candela. */
               if( dtCandelaPrecedente == WRONG_VALUE )
               {
                  // Esegui un'azione al primo tick o nel mezzo della candela ...
               }
               else
               {
                  // Esegui un'azione quando inizia una candela normale ...
               };

            // Esegui un'azione indipendentemente dalla condizione sopra ...
         }
         else
         {
            // Esegui qualcos'altro ...
         };

      // Esegui altre operazioni ...
   };

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

È anche importante notare che, quando l'EA viene posizionato per la prima volta su un grafico, il codice sopra reagisce come se la candela fosse appena aperta. Questa condizione richiede una gestione speciale se la situazione deve essere trattata diversamente.

Non dimenticare che tutto il codice delle mie pubblicazioni su CodeBase è ora disponibile anche nella scheda "Progetti Pubblici" di MetaEditor sotto il nome "FMIC".

Elenco
Commento 0