Errori, bug, domande - pagina 2574
![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Banalmente se stampate i risultati di queste funzioni in ontick allora è per il tempo 1970.01.01 per il prezzo 0
Forse hai un bug nel tuo computer? Ho questo codice nella build 1220.
stampa
Se stampate i risultati di queste funzioni in ontick, è per il tempo 1970.01.01 per il prezzo 0.
Qual è ilcodice di errore?
Quali sono i parametri del test?
I dati delle settimane e dei mesi sono caricati? Quanti sono in totale?
Qual è ilcodice di errore?
Quali sono i parametri del test?
Vengono caricati i dati per settimane e mesi? Quanti sono in totale?
Ho ricontrollato e tutto funziona ora.
Ho scaricato la storia.
Grazie.
Osservazione della memoria.
Ho CopyRates eseguito circa mille volte nel mio codice.
Poi l'array di citazioni viene in qualche modo elaborato, e alla fine di questo chiamo:
ArrayRemove(ArrayQuotes,0,ArraySize);
ArrayFree(ArrayQuotes);
ArrayResize(ArrayQuotes,0);
ArrayFree(ArrayQuotes);
ZeroMemoria(ArrayQuotes);
(solo sperimentato in modo diverso)
Risultato - la memoria cresce ancora geometricamente e si intasa, insieme ad essa il carico sui processori - il processore i7 si intasa dell'80% in totale su tutti i core logici, la memoria è più di Giga.
Finora sono riuscito a limitare il consumo di risorse con un programma di terze parti - CPU non più del 15% e memoria non più di Giga.
Domanda - è un bug o una caratteristica della piattaforma?
A proposito, strano comportamento del meta-editor, dovrebbe essere corretto:
fn_call();/////////////////////
facendo doppio clic sulle slash si evidenziano le slash con il carattere precedente (se non si tratta di un numero/lettera).
Perché scomodo? Fatto una modifica temporanea nel codice, evidenziato lo spazio in questo modo, poi bisogno di evidenziare rapidamente e cancellare le singole barre.
Ancora indietro alla questione del passaggio di stringhe da dll, wchar_t* come puntatore.
Dall'articolo di Renat sul lavoro con le stringhe in dll, è chiaro che mql tipo stringa prende un puntatore alla stringa wchar_t* dalla dll esterna.
In altre parole, inviamowchar_t* alla dll e lo riceviamo come stringa & in mql.
Ma la funzione C
non funziona correttamente, cioè un puntatore alla stringawchar_t* dest viene ricevuto in mql, ma fallisce ed entra ed esce.
A volte il terminale si blocca e il programma viene terminato.
Con la funzione
Il terminale non si blocca, ma anche le stringhe arrivano a intermittenza.
Si prega di correggere nella prossima build.
ZS. Ho dimenticato di specificare che il puntatorewchar_t* viene passato da un altro thread.
Cioè la funzione wcscpy_s o wcscpy è chiamata in un thread separato.
Ancora indietro alla questione del passaggio delle stringhe dalla dll, wichar_t* come puntatore.
Dall'articolo di Renat sul lavoro con le stringhe in dll, è chiaro che mql tipo stringa prende un puntatore alla stringa wichar_t* dalla dll esterna.
In altre parole, inviamo wichar_t* alla dll e lo riceviamo come stringa & in mql.
Ma per qualche ragione, la funzione C
non funziona correttamente, cioè un puntatore alla stringawichar_t* dest viene ricevuto in mql ma fallisce ed entra ed esce.
A volte il terminale si blocca e il programma viene terminato.
Con la funzione
Il terminale non si blocca, ma anche le stringhe arrivano a intermittenza.
Si prega di correggere nella prossima build.
ZS. Ho dimenticato di dire che il puntatore wichar_t* è passato da un altro thread.
Cioè la funzione wcscpy_s o wcscpy è chiamata in un thread separato.
E chi alloca la memoria per le stringhe dest?
La memoria è allocata nel codice mql come
fuori e passato come puntatore alla memoria allocata, poiché la stringa in mql è wchar_t* in dll
Func("Task", out);