Errori, bug, domande - pagina 2244

 
Ilyas:

Non importa quali dati siano contenuti in un array non inizializzato, in qualsiasi momento, i dati possono cambiare, nessuno garantisce il suo valore.
Ecco perché l'uso di variabili non inizializzate (leggere la memoria) a volte porta a situazioni, con una lunga ricerca della causa:

  1. Funziona su un computer, non sull'altro
  2. Funziona nel terminale, non nel tester
  3. Dopo l'aggiornamento il programma terminal/OS si è comportato diversamente
  4. Ho aggiunto Print che non ha più funzionato.
  5. ecc.

Posso solo dare qualche consiglio.
Dovreste prendere l'abitudine di inizializzare sempre i dati, in modo che in futuro non perdiate molto tempo a cercare errori legati alla mancanza di inizializzazione.

Grazie per il chiarimento e il consiglio.

 
Ilyas:

ArrayResize non pulisce la memoria, quindi contiene spazzatura dal precedente "consumatore".

Questo è fatto per la velocità, perché dopo che la memoria è assegnata a un array, nel 99,99(9)% dei casi, l'utente lo "riempirà" con i suoi dati.


Questa non è la spiegazione giusta, che può causare problemi ai neofiti; il file di aiuto ArrayResize ha la spiegazione giusta.

In sostanza, i neofiti devono prima capire cos'è un array e come viene immagazzinato in memoria, come viene creato e come viene allocata la memoria ad esso, poi non avranno problemi.

ps. in generale, l'implementazione degli array in MQL5 è peggiore che in C++, così come le strutture.

Nei programmi semplici l'implementazione degli array ha successo, in quelli complessi diventa un problema

 
Artyom Trishkin:

Cosa vuol dire "no"? Nessuno rimuove la chiavetta di memoria dallo slot della scheda madre. Una volta che la memoria è presente e liberata (non inizializzata con un valore, ma liberata), sarà usata per altre necessità del programma.

La memoria, è l'informazione immagazzinata, non il supporto di memorizzazione, che è la barra RAM.

Non sapevo che la memoria non viene azzerata, ma solo liberata/allocata di indirizzi per immagazzinarla e bisogna organizzare lo sgombero da soli.

Grazie.
 

Ho notato da molto tempo che la ricerca di broker/server di trading non funziona correttamente quando si apre un conto demo tramite Terminale.

Inserisco il nome del broker e non ottengo nulla


Se inserisco il nome completo del server commerciale ottengo il risultato desiderato


 

Installazione di MT5 1882, file scaricato dal sito web (https://download.mql5.com/cdn/web/metaquotes.software.corp/mt5/mt5setup.exe?utm_source=www.mql5.com&utm_campaign=download).
UAC abilitato, si verifica un errore prima di concedere i diritti di amministratore.
L'esecuzione come amministratore non risolve il problema, nasconde solo la casella del messaggio di errore.




 

Qualche consiglio? Costruire 1881 mt5. Sto eseguendo un'ottimizzazione normale. Il risultato è che l 'ottimizzazione viene rieseguita, ma gli agenti locali non partono - solo la connessione e la disconnessione. Niente nei registri degli agenti.

Solo il riavvio di mt aiuta.

 

Nella stessa costruzione ho incontrato un problema. Mt non vuole aggiungere alla fine del file come era prima - lo sfrega sempre

int f = FileOpen(file,FILE_COMMON|FILE_READ|FILE_WRITE|FILE_TXT);

 

2018.07.26 19:23:56.269 Core 01 tester agent authorization error

Com'è ))) e cosa fare?

 
Anton Ohmat:

2018.07.26 19:23:56.269 Core 01 tester agent authorization error

Com'è ))) e cosa fare?

Nel migliore dei casi, la finestra del renderer non è chiusa. Nel peggiore dei casi, un antico problema conosciuto.

 
Anton Ohmat:

Nella stessa costruzione ho incontrato un problema. Mt non vuole aggiungere alla fine del file come era prima - lo sfrega sempre

int f = FileOpen(file,FILE_COMMON|FILE_READ|FILE_WRITE|FILE_TXT);

Eseguite un FileSeek alla fine del file prima di scrivere il file?