Non vedo il problema: se appare una nuova candela, ricalcoliamo l'ultima candela nell'indicatore/advisor. C'è più di una nuova candela - facciamo un ricalcolo completo dell'indicatore/consigliere. Questo è lo stesso - appare una nuova candela.
Un'altra cosa - i periodi richiesti dovrebbero essere costantemente "tirati" per aggiornarli. Se non c'è nessuno che lavora sul simbolo-periodo (le virgolette non sono controllate, l'indicatore non è in esecuzione), allora "dorme" perché è considerato non necessario.
Stiamo tirando, stiamo tirando. Facciamo una richiesta, otteniamo un errore, usciamo. Ma qui, vedete, viene fuori un'altra "particolarità" - l'errore non si azzera dopo il reset. Se fosse così, non ci sarebbero problemi. Ma il problema è restituire dati errati. E lo vedo molto chiaramente.
Tutto il sistema di controllo degli errori va in malora in questo esempio.
Come fa il terminale a sapere che gli ultimi dati non sono aggiornati? Perché la storia è lì - è lì. La richiesta viene inviata al broker... il più presto possibile.
Come fa il terminale a sapere che gli ultimi dati non sono aggiornati? Dopo tutto, c'è una storia - c'è. La richiesta al broker viene inviata... Non appena è così.
La comunicazione con il server è stabilita. Quando si richiedono i dati senior TF, se i dati non sono pronti - errore o ritorno 0. Se i dati sono pronti - restituisce SOLO i dati effettivi. Questo è tutto. Se i dati non sono pronti per molto tempo - lascia che restituisca errore o 0.
A proposito, non hai risposto alla domanda sulla versione del terminale.
Cosa c'entra la versione del terminale? Nuovi dati, ci sono o non ci sono. E nessuna versione li salverà se non provengono dal server. L'indicatore inizia semplicemente prima dell'arrivo dei nuovi dati. In alternativa, spostate i controlli su OnCalculate, che si attiva quando viene ricevuto un nuovo tick.
In alternativa, spostate i controlli su OnCalculate, che si attiva quando viene ricevuto un nuovo tick.
è stato suggerito più volte, e anche l'amministratore
nell'indicatoreOnCalculate() sarà avviato all'inizio dell'indicatore, ma la seconda volta OnCalculate() sarà avviato alla ricezione del tick - qui è necessario avviare il timer e scaricare nuovi dati OHLC
gli è stato offerto diverse volte, e lo stesso vale per l'amministratore
l'indicatore avvierà OnCalculate() all'inizio dell'indicatore, ma la seconda volta OnCalculate() sarà avviato alla ricezione del tick - qui è necessario avviare il timer e scaricare i nuovi dati OHLC
Date un'occhiata al mio ultimo codice pubblicato. Non si tratta di timer, tutto è già stato spostato in OnCalculate(). Ancora non funziona quando si avvia il terminale.
//--- Проверяем связь с серверомif(firstrun)
{
firstrun=false; // первый запуск индикатораreturn(0);
}
if(!IsConnected()) // Если не удалось установить связь с сервером
{
//--- Сбрасываем флаг соединения с сервером
_isConnected=false;
//--- Выходимreturn( 0 );
}
Controllerei anche GetTickCount() per dare tempo al terminale di caricare, generare i grafici e stabilire la comunicazione con il server; dovete anche tracciare il riavvio del terminale, non so come tracciarlo, ma dovete dare tempo
Date un'occhiata all'ultimo codice che ho pubblicato. Non si tratta più del timer, tutto è già stato spostato in OnCalculate(). Ancora non funziona quando si avvia il terminale.
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
Non vedo il problema: se appare una nuova candela, ricalcoliamo l'ultima candela nell'indicatore/advisor.
C'è più di una nuova candela - facciamo un ricalcolo completo dell'indicatore/consigliere.
Questo è lo stesso - appare una nuova candela.
Un'altra cosa - i periodi richiesti dovrebbero essere costantemente "tirati" per aggiornarli.
Se non c'è nessuno che lavora sul simbolo-periodo (le virgolette non sono controllate, l'indicatore non è in esecuzione), allora "dorme" perché è considerato non necessario.
Stiamo tirando, stiamo tirando. Facciamo una richiesta, otteniamo un errore, usciamo. Ma qui, vedete, viene fuori un'altra "particolarità" - l'errore non si azzera dopo il reset. Se fosse così, non ci sarebbero problemi. Ma il problema è restituire dati errati. E lo vedo molto chiaramente.
Tutto il sistema di controllo degli errori va in malora in questo esempio.
Come fa il terminale a sapere che gli ultimi dati non sono aggiornati?
Perché la storia è lì - è lì.
La richiesta viene inviata al broker... il più presto possibile.
Appare una nuova barra - i dati sono aggiornati.
Come fa il terminale a sapere che gli ultimi dati non sono aggiornati?
Dopo tutto, c'è una storia - c'è.
La richiesta al broker viene inviata... Non appena è così.
Appare una nuova barra - i dati sono aggiornati.
La comunicazione con il server è stabilita. Quando si richiedono i dati senior TF, se i dati non sono pronti - errore o ritorno 0. Se i dati sono pronti - restituisce SOLO i dati effettivi. Questo è tutto. Se i dati non sono pronti per molto tempo - lascia che restituisca errore o 0.
A proposito, non hai risposto alla tua domanda sulla versione del terminale.
A proposito, non hai risposto alla domanda sulla versione del terminale.
Cosa c'entra la versione del terminale? Nuovi dati, ci sono o non ci sono. E nessuna versione li salverà se non provengono dal server.
L'indicatore inizia semplicemente prima dell'arrivo dei nuovi dati. In alternativa, spostate i controlli su OnCalculate, che si attiva quando viene ricevuto un nuovo tick.
In alternativa, spostate i controlli su OnCalculate, che si attiva quando viene ricevuto un nuovo tick.
è stato suggerito più volte, e anche l'amministratore
nell'indicatoreOnCalculate() sarà avviato all'inizio dell'indicatore, ma la seconda volta OnCalculate() sarà avviato alla ricezione del tick - qui è necessario avviare il timer e scaricare nuovi dati OHLC
gli è stato offerto diverse volte, e lo stesso vale per l'amministratore
l'indicatore avvierà OnCalculate() all'inizio dell'indicatore, ma la seconda volta OnCalculate() sarà avviato alla ricezione del tick - qui è necessario avviare il timer e scaricare i nuovi dati OHLC
Date un'occhiata al mio ultimo codice pubblicato. Non si tratta di timer, tutto è già stato spostato in OnCalculate(). Ancora non funziona quando si avvia il terminale.
Date un'occhiata all'ultimo codice che ho pubblicato. Non si tratta più del timer, tutto è già stato spostato in OnCalculate(). Ancora non funziona quando si avvia il terminale.
Beh, salta il primo passaggio all'avvio
Beh, salta il primo passaggio all'avvio
Leggere il punto 1.