Unisciti alla nostra fan page
- Visualizzazioni:
- 32
- Valutazioni:
- Pubblicato:
- 2025.04.03 11:16
-
Hai bisogno di un robot o indicatore basato su questo codice? Ordinalo su Freelance Vai a Freelance
Per un Expert Advisor (EA), quando MetaTrader riceve una nuova quotazione ("tick"), il terminale chiama la funzione standard di gestione degli eventi OnTick(). Tuttavia, non esiste una funzione standard di gestione degli eventi per l'inizio di una nuova barra (candela).
Per rilevarlo, è necessario monitorare l'orario di apertura della barra più recente. Quando cambia, indica l'inizio di una nuova barra e si può reagire alla situazione e gestire l'evento. Il seguente esempio di codice, compatibile sia con MQL4 che con MQL5, mostra uno dei metodi per ottenere questo risultato:
// Gestore dell'evento tick standard void OnTick() { // Verifica la presenza di una nuova barra (compatibile con MQL4 e MQL5). static datetime dtBarraCorrente = WRONG_VALUE; datetime dtBarraPrecedente = dtBarraCorrente; dtBarraCorrente = iTime( _Symbol, _Period, 0 ); bool bEventoBarraNova = ( dtBarraCorrente != dtBarraPrecedente ); // Reagire all'evento di una nuova barra e gestire la situazione. if( bEventoBarraNova ) { // Rileva se questo è il primo tick ricevuto e gestisce la situazione. /* Ad esempio, quando viene applicato per la prima volta al grafico e la barra si trova a metà del suo percorso e non è l'inizio di una nuova barra. */ if( dtBarraPrecedente == WRONG_VALUE ) { // Fare qualcosa al primo tick o nel mezzo di una barra ... } else { // Fare qualcosa quando appare una barra normale ... }; // Fare qualcosa di indipendente dalla condizione precedente ... } else { // Fare qualcos'altro ... }; // Fare altre cose... };
Nel codice precedente, la variabile statica tiene traccia del tempo di apertura della barra, anche quando ritorna dalla funzione OnTick(). A differenza di una normale variabile locale, essa memorizza il suo contenuto di dati e non lo rilascia quando esce dalla funzione. Questa è la chiave per rilevare una variazione del tempo di apertura della barra corrente.
È inoltre importante notare che quando l'EA viene posizionato per la prima volta su un grafico, il codice precedente reagisce come se la barra si fosse appena aperta. Questa condizione richiede un trattamento speciale se la situazione deve essere gestita in modo diverso.
Si noti che il codice sorgente di tutte le mie pubblicazioni su CodeBase è ora disponibile anche attraverso i "Progetti pubblici" di MetaEditor con il nome "FMIC".
Tradotto dal portoghese da MetaQuotes Ltd.
Codice originale: https://www.mql5.com/pt/code/41601

Calendario - analisi fondamentale sulla storia e in tempo reale.

Dati del tester a passaggio singolo.

This Bot detects the open of a new candle on any set timeframe, thereby making it easier to run a one-time code, place trades and call other functions. The code is written in the OnTick() function.

Libreria di lettura/scrittura dei parametri di EA arbitrari.