[SERVICE DESK] Errore nell'ottenere il tempo del TF senior nel timer! - pagina 14

 
Però l'ho eseguito un paio di volte. Divertente, ma non sempre funziona. A volte la connessione non si stabilisce in tempo.
Ho una buona connessione per conto mio. Forse è questa la ragione.
 
Ma non è quello che ho notato con questo test. Anche quando funziona ora con il conteggio dei passaggi, ottengo 10 passaggi attraverso OnCalculate, anche oggi. Risulta che l'opzione migliore per voi sembra essere quella di fare un piccolo ritardo all'avvio dell'indicatore.
 
Konstantin Nikitin:
Ma ho notato qualcosa di diverso con questo test. Anche quando si esegue ora con il conteggio dei passaggi, ottengo 10 passaggi attraverso OnCalculate. Risulta che l'opzione migliore per voi sembra essere un piccolo ritardo all'inizio dell'indicatore.

Non c'è bisogno di una soluzione a stampella, lo ripeto. Il comportamento attuale non mi soddisfa, il consiglio dato dagli stessi sviluppatori non funziona. Lasciare che cose come questa vadano per conto loro non servirà a niente. È stato rilevato un problema, deve essere risolto dagli sviluppatori.

 
Alexey Kozitsyn:

Non c'è bisogno di una soluzione a stampella, lo ripeto. Il comportamento attuale non mi soddisfa, il consiglio dato dagli stessi sviluppatori non funziona. Lasciare che cose come questa vadano per conto loro non servirà a niente. Si scopre un problema, che deve essere risolto dagli sviluppatori.

Ho descritto ciò che ho visto. Dovete pensare a come risolvere il problema. Voglio dire, non va bene per niente avere il primo passaggio di tracciamento, ecc...

 
Konstantin Nikitin:

Ho descritto ciò che ho visto. Devo pensare a come affrontarlo. Cioè, non è buono in alcun modo ottenere il primo passaggio di tracciamento, ecc.

Penso che ci debba essere un meccanismo testato in questi posti "sottili", che funzioni correttamente con i numeri di errore (bussando ad ogni richiesta), o qualche tipo di controllo aggiuntivo nelle funzioni di accesso alla storia (cioè built-in, in modo da non cercare tali problemi per ore). E questo meccanismo dovrebbe essere descritto in dettaglio nella documentazione. Allora non ci saranno domande per gli sviluppatori. Ma com'è adesso? Nella documentazione non c'è nulla sull'accesso ai dati dei vecchi TF, quindi gli sviluppatori stessi non sanno come ottenere i dati. Ci sono solo alcuni link a forum degli anni barbuti dove hanno lo stesso ragionamento.

 
Se si conosce la differenza con il server in ore. È possibile utilizzare un confronto tra l'orologio locale corrente e l'ora di apertura dell'ultima barra delle ore. TimeCurrent non è adatto perché il tempo potrebbe non essere aggiornato.
Qualcosa del genere
     MqlDateTime mqlDateTime;
     TimeToStruct( (TimeLocal()-60*3), mqlDateTime );
     mqlDateTime.min = 0;
     mqlDateTime.sec = 0;
     
     if( IsConnected() )
          Comment( TimeToString( iTime(Symbol(), PERIOD_H1, 0) ), "\n", TimeToString( StructToTime(mqlDateTime) ) );
 
Alexey Kozitsyn:

A proposito, non hai risposto alla tua domanda sulla versione del terminale.

terminale 1121 e 1090

Alexey Kozitsyn:

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.

Non c'è nessun errore qui. C'è una connessione e dati storici.
I dati che sono già nel terminale vengono visualizzati immediatamente.
I nuovi dati arrivano con un ritardo, perché è necessario inviare una richiesta al broker e caricarlo se manca qualcosa.

Non appena appaiono nuovi dati, viene generato immediatamente un tick (anche ora, quando il mercato è chiuso).
Devi solo controllare l'aggiornamento-apparizione di una nuova barra e cambiare le tue variabili da solo.

ps. non c'è un flag per la rilevanza dei dati in mt4.

 
Taras Slobodyanik:

terminale 1121 e 1090

Non c'è nessun errore qui. C'è una connessione e i dati della storia sono presenti.
I dati che sono già nel terminale vengono visualizzati immediatamente.
I nuovi dati arrivano con un ritardo perché una richiesta deve essere inviata al broker e caricata se manca qualcosa.

Non appena appaiono nuovi dati, viene immediatamente generato un tick (anche ora, quando il mercato è chiuso).
Devi solo controllare l'aggiornamento-apparizione di una nuova barra e cambiare le tue variabili da solo.

ps. non c'è nessun flag di aggiornamento dati in mt4.

Come ho detto, dovrà riprovare sul terminale aggiornato.

Sono categoricamente in disaccordo con il comportamento che non può essere controllato. La funzione restituisce dati errati senza errore - questo è sbagliato. Voi stessi incontrerete più tardi una situazione simile e vi chiederete quale sia il problema.

Diciamo che all'inizio la funzione ha restituito un errore. Vengono rilasciati. Durante l'interrogazione successiva, la funzione non ha restituito l'errore e ha restituito alcuni dati "errati". Va tutto bene?

 

Cosa intende per dati errati?

Quando non ci sono, o non c'è connessione, o altro, allora sì, c'è un errore.
E non c'è niente da contare.

Quando tutti i dati sono corretti - tutto va bene e tutto funziona.

Il tuo indicatore non tiene traccia dell'aggiornamento dei dati.
Le nuove barre arrivano dal broker e non si controllano.
Ho aggiunto un paio di righe per mostrare che quando si controlla, tutto è corretto.

È una situazione di lavoro per controllare una nuova barra.

 
Taras Slobodyanik:

Cosa intende per dati errati?

E guarda il mio primissimo post. Vedi l'errore 4066 lì? Poi sbaglia 0 e restituisce dati errati. Perché la funzione (SeriesInfoInteger() in questo caso) non controlla la rilevanza prima di inviare i dati? Perché non imposta il flag di errore? Vedete, preferisco aspettare un po' più a lungo che i controlli interni passino piuttosto che cercare gli errori dopo.

Ma dopo mi sono stati dati molti consigli, con i quali non ho mai ottenuto alcun risultato. E si è scoperto che non si trattava nemmeno del timer.