[SERVICE DESK] Errore nell'ottenere il tempo del TF senior nel timer! - pagina 8
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
3. punto interessante di analisi, cosa restituisce CopyClose(), l'ho controllato io stesso, se non c'è un file .hst per il TF richiesto, CopyClose() non restituisce mai più di 2048 - cioè questo è il valore massimo che può essere scaricato?
No. 2048 è la porzione di dati che viene scaricata dal server quando non ci sono file sul client.
No. 2048 è un pezzo di dati che viene scaricato dal server quando non ci sono dati sul client.
Hm, faccio MQL da molto tempo, ma è ancora inaspettato per me
OK, ecco un esempio dall'aiuto:https://www.mql5.com/ru/docs/series/timeseries_access
c'è scritto che:
Il prossimo controllo importante è quello di verificare il tipo di programma da cui viene chiamata la funzione. Ricorda che inviare una richiesta di aggiornamento di una serie temporale con lo stesso periodo dell'indicatore che chiama l'aggiornamento è altamente indesiderabile. L'indesiderabilità di richiedere dati dello stesso periodo di tempo di quello dell'indicatore è determinata dal fatto che l'aggiornamento dei dati storici viene eseguito nello stesso thread in cui lavora l'indicatore. Pertanto, c'è un'alta probabilità di uno scontro. Per controllarlo, usiamo la funzioneMQL5InfoInteger() con il modificatoreMQL5_PROGRAM_TYPE.
cioè l'esempiohttps://www.mql5.com/ru/code/449
non è adatto per caricare i dati della storia nell'indicatore MT4, e come posso scaricare l'intera storia dall'indicatore, se non c'è un file .hst preparato, cioè l'indicatore inizializza il caricamento della storia dal proprio simbolo
come posso sapere che qui ho "scaricato" l'intera storia uguale a iBars(Symbol(),PERIOD_CURRENT);
iBars() restituirà anche un valore errato? - non c'è ancora storia, quindi non c'è iBars()
sembra che in MT5 la storia viene scaricata senza problemi, basta aspettare e controllare lo stato dei dati storici, ma in MT4?
PS: in kodobase ieri stavo cercando un indicatore multicurrency correttamente funzionante per MT4, ma i codici non sono soggetti a imitazione, in molti esempi di kodobase, in generale non c'è paginazione storia nell'indicatore
Nei quadrupli, il "tasto home è stato premuto". Non c'è altro modo. Se hai studiato l'argomento per un po', dovresti ricordare la frase "mattone sulla tastiera"
https://www.mql5.com/ru/code/9968
https://www.mql5.com/ru/code/9153
https://www.mql5.com/ru/code/9888
Puoi controllare il mio downloader gratuito.
Puoi vedere il mio downloader gratuito.
Come mi suggerisci di guardare il tuo codice? So come scaricare la cronologia, ma non so come controllare l'indicatore di download.
In quadruplice "premere il tasto home". Non c'è altro modo. Se studiate la materia da molto tempo, dovreste ricordare la frase "mattone sulla tastiera"
https://www.mql5.com/ru/code/9968
https://www.mql5.com/ru/code/9153
https://www.mql5.com/ru/code/9888
Quando ho iniziato ad usare MQL negli ultimi anni non ho imparato affatto MQL, da quest'anno sono davvero sorpreso che gli sviluppatori abbiano reso la compatibilità tra MT5 e MT4 il più possibile e migliorato le prestazioni di MQL4 - anche se ci è stato detto prima che MT4 come progetto non sarà più sviluppato, ci sono solo bug da risolvere
e qui era una speranza che non ho trovato informazioni sul caricamento automatico della storia nell'indicatore MT4
Fondamentalmente, se si vuole garantire il download dell'intera storia in MT4 e senza controlli aggiuntivi, allora è più facile usare il codice dfix - scrivere la barra datetime t=0 nel file .hst;
Quindi come mi suggerisci di guardare il tuo codice?
Pensavo che bastasse che la storia fosse caricata automaticamente...
Con mio grande rammarico, devo tornare ancora una volta sull'argomento dell'ottenimento di dati TF senior in MT4. Questa volta a causa del fatto che le tecniche suggerite qui non hanno funzionato.
Ecco il codice che usiamo:
Implementa il paging dei dati come mi è stato consigliato:
Forum sul trading, sistemi di trading automatico e test di strategie di trading
[SERVICESDESK] Errore nell'ottenere il tempo del vecchio TF nel timer!
Slava, 2018.09.27 06:20
È stato discusso molte volte. 12 pagine su "errore 4066".
Ed è stato correttamente consigliato di inviare la richiesta in OnInit e analizzarla in OnCalculate.
A cosa vi serve un timer al millisecondo? State impedendo al terminale client di avviarsi normalmente. Non sono i messaggi del vento che interferiscono con il tuo timer, è il tuo timer che interferisce con tutti. Ancora una volta: GLI INDICATORI NEL TERMINALE MT4 DEL CLIENTE LAVORANO IN POTENZIALE DI INTERFACCIA.
L'implementazione è esattamente così: la prima richiesta di dati avviene in OnInit(). Poi, aspettiamo che la connessione con il server commerciale sia stabilita, poi in OnCalculate()! otteniamo i dati del TF alto. Otteniamo il risultato al primo lancio di oggi:
Come possiamo vedere dal log abbiamo ottenuto valori errati di ora e ora del giorno.
Sì, gli sviluppatori(@Slava) possono notare che non ho applicato tutti i consigli che mi sono stati dati. Cioè, eseguo ancora il timer veloce in OnInit(), anche se mi è stato originariamente consigliato di eseguire il timer lento. Tuttavia, in questo caso, è fatto apposta. Se il timer veloce viene avviato nel thread dell'interfaccia e può rallentare il recupero dei dati da altri indicatori - questo è un grosso problema. La documentazione non contiene alcuna avvertenza al riguardo, si può mettere un programma con un timer veloce che può diventare una specie di "virus" e causare "guasti" di altri programmi.
Alla luce di quanto sopra, credo che dovremmo introdurre delle restrizioni sul timer dei millisecondi o specificare nella documentazione di EventSetMillisecondTimer() che la funzione non può essere avviata in OnInit() per permettere al terminale di salire normalmente all'avvio.
Ora la parte divertente. Il codice è senza timer:
E ancora non puoi ottenere il risultato che vuoi. Gli sviluppatori(@Slava), per favore commentate. È impossibile ottenere dati corretti quando si carica il terminale da diversi TF superiori. Condizione obbligatoria è che il terminale deve essere spento più di un'ora dopo lo spegnimento (perché otteniamo i dati della barra di un'ora). E, naturalmente, avvio su TF in meno di un'ora.
Il timer si è rivelato non essere coinvolto.