In questo articolo, esploreremo un codice semplice che ti permette di rilevare una nuova candela in MetaTrader 5. È una funzionalità utile per chiunque voglia automatizzare il proprio trading e tenere traccia dei cambiamenti dei prezzi in tempo reale.
Il principio di base del codice è piuttosto semplice. Prima di tutto, il codice memorizza il tempo dell'ultima candela. Successivamente, aggiunge 60 secondi (che corrispondono a 1 minuto, ma puoi modificare il tempo secondo le tue esigenze) al tempo dell'ultima candela per ottenere il valore di chiusura della candela corrente.
Quando:
- Tempo Corrente = valore di chiusura della candela corrente,
- significa che una nuova candela è stata ricevuta e la candela corrente è chiusa.
In questo codice, il flag (la variabile booleana NewBarReceived) evita che il blocco di codice venga chiamato più volte. Questo significa che il blocco di codice viene eseguito solo una volta per ogni candela. Le funzioni Comment(); e PlaySound("ok.wav"); sono utilizzate per controllare l'accuratezza del blocco di codice. Puoi rimuoverle se non ne hai bisogno.
Il flag viene reimpostato su false una volta che il Tempo Corrente supera il valore di chiusura della candela corrente, permettendo di controllare l'arrivo della candela successiva. (Controlla i commenti per maggiori dettagli).
//+------------------------------------------------------------------+ //| Rilevazione Nuova Candela.mq5 | //| di H A T Lakmal | //| https://t.me/Lakmal846 | //+------------------------------------------------------------------+ bool NewBarReceived = false; // Flag di controllo. //+------------------------------------------------------------------+ //| Funzione di inizializzazione dell'Expert | //+------------------------------------------------------------------+ int OnInit() { //--- crea timer EventSetTimer(60); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Funzione di deinizializzazione dell'Expert | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- distruggi il timer EventKillTimer(); } //+------------------------------------------------------------------+ //| Funzione tick dell'Expert | //+------------------------------------------------------------------+ void OnTick() { datetime TimePreviousBar = iTime(_Symbol,PERIOD_M1,1); datetime TimeCurrentClose = TimePreviousBar + 60; // Tempo di chiusura della candela corrente. datetime Time_Current = TimeCurrent(); if(Time_Current == TimeCurrentClose && NewBarReceived == false) { PlaySound("ok.wav"); // Per verificare che funzioni correttamente. NewBarReceived = true; // Aggiorna il flag per evitare chiamate multiple. // Inserisci il tuo codice qui ----- (Fai qualcosa) } else if(Time_Current > TimeCurrentClose) { NewBarReceived = false; // Reimposta il flag per l'apertura della prossima candela. // Inserisci il tuo codice qui ----- (Fai qualcosa) } Comment("\n" + "\n" + "Tempo Candela Corrente -: " + TimeToString(TimePreviousBar,TIME_DATE|TIME_MINUTES|TIME_SECONDS) + "\n" + "Tempo Chiusura Corrente -: " +TimeToString(TimeCurrentClose,TIME_DATE|TIME_MINUTES|TIME_SECONDS) + "\n" + "Tempo Corrente -: " + TimeToString(Time_Current,TIME_DATE|TIME_MINUTES|TIME_SECONDS) + "\n" +"\n" + "Nuova Candela Ricevuta -: " + NewBarReceived); // Per controllare i calcoli } //+------------------------------------------------------------------+ //| Funzione timer | //+------------------------------------------------------------------+ void OnTimer() { //--- } //+------------------------------------------------------------------+ //| Funzione di trading | //+------------------------------------------------------------------+ void OnTrade() { //--- } //+------------------------------------------------------------------+ //| Funzione ChartEvent | //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { //--- } //+------------------------------------------------------------------+
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
- MQL5 Wizard: Creare Trading Signals con Morning/Evening Stars e MFI per MetaTrader 5
- MQL5 Wizard: Strategia di Trading con Dark Cloud Cover/Piercing Line e RSI