MT4. Voglio attirare l'attenzione sulla differenza nell'ordine di inizializzazione delle variabili globali e delle variabili esterne. Non è menzionato nella documentazione.
La variabile extern si trova nello scope globale e dal tipo di variabile (globale o locale) si riferisce alla globale, come è scritto nella documentazione e nel tutorial di Kovalev.
Poiché la documentazione non dice nulla sull'ordine di inizializzazione di extern, è logico concludere che l'ordine di inizializzazione di extern è lo stesso di quello della variabile globale stessa.
In effetti, le differenze sono significative. Le variabili globali a e b sono inizializzate una volta prima dell'esecuzione della prima funzione init; mantengono i loro valori iniziali (o modificati nel codice), se il timeframe o il simbolo sul grafico è cambiato.
La variabile extern int c non salva il valore cambiato nel codice e, se il timeframe o lo strumento sul grafico è stato cambiato, prende il valore iniziale specificato. Il codice qui sotto lo mostra.
Questo è importante da sapere per capire perché, a parità di condizioni, i risultati del codice eseguito dalla finestra "Proprietà" o dalla ricompilazione differiscono dai risultati del codice eseguito cambiando il timeframe o il simbolo.
Qui sotto c'è il codice che mostra questo. Se cambiamo timeframe o simbolo diverse volte, vedremo che a e b crescono e c mantiene il suo valore iniziale.
Dimenticate la parola esterno
Il nuovo MQL4 usa l'input. Inizia da lì.
Le variabili esterne sono sempre reinizializzate appena prima della chiamata di OnInit - questo è un parametro di input esterno!
Le variabili esterne sono sempre reinizializzate appena prima della chiamata OnInit - è un parametro di input esterno!
In MQL4++ non posso fare a meno di extern quando ho bisogno di cambiare i parametri di input programmaticamente. Per esempio, quando converto un indicatore semplice in uno interattivo devo sostituire input con extern. Il compilatore tratta le variabili di input come const e si lamenta al tentativo di cambiarle. Con extern non ci saranno questi problemi.
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.
Come faccio a trascinare la finestra del grafico su un altro monitor?
aprire un altro terminale e trascinarlo fuori)
O allungarlo, ma questo non va bene
aprire un altro terminale e trascinarlo fuori)
o tirarla per le lunghe, ma non è molto buona.
Lo stesso vale per gli altri terminali - tutti comunicano tra loro tramite eventi.
Perché allungare il terminale "non va bene"?
e perché allungare il terminale "non va bene"?
Lo capisco da come mi sento.
la tua mano è abituata a una certa dimensione dello schermo, e quando la allunghi, la tua mano si sposta dal tavolo.
Se ti piace, perché no?
Non mi piace.
Come faccio a trascinare la finestra del grafico su un altro monitor?
MT4. Voglio attirare l'attenzione sulla differenza nell'ordine di inizializzazione delle variabili globali e delle variabili esterne. Non è menzionato nella documentazione.
La variabile extern si trova nello scope globale e dal tipo di variabile (globale o locale) si riferisce alla globale, come è scritto nella documentazione e nel tutorial di Kovalev.
Poiché la documentazione non dice nulla sull'ordine di inizializzazione di extern, è logico concludere che l'ordine di inizializzazione di extern è lo stesso di quello della variabile globale stessa.
In effetti, le differenze sono significative. Le variabili globali a e b sono inizializzate una volta prima dell'esecuzione della prima funzione init; mantengono i loro valori iniziali (o modificati nel codice), se il timeframe o il simbolo sul grafico è cambiato.
La variabile extern int c non salva il valore cambiato nel codice e, se il timeframe o lo strumento sul grafico è stato cambiato, prende il valore iniziale specificato. Il codice qui sotto lo mostra.
Questo è importante da sapere per capire perché, a parità di condizioni, i risultati del codice eseguito dalla finestra "Proprietà" o dalla ricompilazione differiscono dai risultati del codice eseguito cambiando il timeframe o il simbolo.
Qui sotto c'è il codice che mostra questo. Se cambiamo timeframe o simbolo diverse volte, vedremo che a e b crescono e c mantiene il suo valore iniziale.
Dimenticate la parola esterno
Il nuovo MQL4 usa l'input. Inizia da lì.
Le variabili esterne sono sempre reinizializzate appena prima della chiamata di OnInit - questo è un parametro di input esterno!
Dimenticate la parola esterno
Il nuovo MQL4 usa l'input. Inizia da lì.
Le variabili esterne sono sempre reinizializzate appena prima della chiamata OnInit - è un parametro di input esterno!
Dimenticate la parola esterno
Il nuovo MQL4 usa l'input. Inizia da lì.
Le variabili esterne sono sempre reinizializzate appena prima della chiamata OnInit - è un parametro di input esterno!
Dimenticate la parola esterno
Sì, prima ha insegnato a camminare e parlare
e ora insegna a sedersi e a stare zitto)
Dimenticate la parola esterno
Il nuovo MQL4 usa l'input. Inizia da lì.
Le variabili esterne sono sempre reinizializzate appena prima della chiamata OnInit - è un parametro di input esterno!