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
- Rilevare il Venerdì della Prima Settimana del Mese: La Guida per il Giorno NFP
- EA Efficiente: Come Aggiungere la Chiusura del Venerdì per Migliorare le Performance
- Utilità Market Watch Panel: il tuo alleato in MetaTrader 4
- X-liquidex: Il Miglior EA per Trading di Volatilità e Breakout su MetaTrader 4
- Expert Advisor Basato sulla Teoria della Probabilità per Forex su MetaTrader 5