
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
Ecco un esempio di scrittura e lettura di un array
Eseguilo due volte in modalità debug e vedi quanto tempo ci vuole per scrivere e leggere l'array. La prima esecuzione scriverà l'array su file, e la seconda lo leggerà e inizierà a stampare le date dall'array. Poi capire la parte evidenziata, se IS_DEBUG_MODE deve essere rimosso, e se IsOptimization() deve essere inserito nella condizione.
C'è una funzione, qualcosa come FileWriteInteger(). Identificare per posizione, la variabile deve essere all'inizio del file, dopo averla letta il puntatore si sposterà alla sua fine, cioè all'inizio dell'array, dopo aver letto l'array il puntatore sarà prima della variabile successiva...
Un articolo sul lavoro con i file sarà pubblicato presto.
Volevo scrivervi che non c'è nessun articolo sulle operazioni su file. Lei li rende informativi e lucidi, li leggerò sicuramente quando appariranno.
Provato a dichiarare un array a livello globale (codice mql4)
datetime T[];
riempire l'inite
Se non impostato all'inizio, stampa la data 1971, cioè l'array è vuoto
Se riempio l'array all'inizio, i valori appaiono. Può essere la ragione, che l'array è reinizializzato datetaime, ma senza di esso il codice non compila?
L'array scompare. Cosa faccio di sbagliato?
Provato a dichiarare un array a livello globale (codice mql4)
riempire l'inite
Se non impostato all'inizio, stampa la data 1971, cioè l'array è vuoto
Se riempio l'array all'inizio, i valori appaiono. Può essere la ragione, che l'array è reinizializzato datetaime, ma senza di esso il codice non compila?
L'array scompare. Cosa faccio di sbagliato?
Guarda cosa dice il compilatore.
Con una mossa così semplice avete definito un array locale T che svanirà all'uscita di OnInit...
controllare l'avvertimento che il compilatore genera.
Con una mossa così semplice, avete definito un array locale T che sarà perso quando uscite da OnInit...
Dice che c'è già una dichiarazione globale)
la dichiarazione di 'T' nasconde la dichiarazione globale alla linea 40
Ma, come farlo bene. Non avevo mai dichiarato un array usando le parentesi graffe. L'ho inizializzato con zero e ho impostato la sua dimensione e poi l'ho riempito con il ciclo. C'è un altro modo per farlo?
Se cancello il datetime nell'inite, il codice non compila, ma scrive due errori:
'{' - espressione attesa
'=' - uso di operazioni illegali
Dice che c'è già una dichiarazione globale)
la dichiarazione di 'T' nasconde la dichiarazione globale alla linea 40
Ma, come farlo bene. Non avevo mai dichiarato un array usando le parentesi graffe. L'ho inizializzato con zero e ho impostato la sua dimensione e poi l'ho riempito con il ciclo. C'è un altro modo per farlo?
Se cancello il datetime nell'inite, il codice non compila, ma scrive due errori:
'{' - espressione attesa
'=' - uso di operazioni illegali
La dichiarazione dell'array insieme all'inizializzazione delle costanti potrebbe (e dovrebbe) essere fatta a livello globale.
Dice che c'è già una dichiarazione globale)
la dichiarazione di 'T' nasconde la dichiarazione globale alla linea 40
Ma, come farlo bene. Non avevo mai dichiarato un array usando le parentesi graffe. L'ho inizializzato con zero e ho impostato la sua dimensione e poi l'ho riempito con il ciclo. C'è un altro modo per farlo?
Se cancello il datetime nell'inite, il codice non compila, ma scrive due errori:
'{' - espressione attesa
'=' - uso di operazioni illegali
La dichiarazione dell'array insieme all'inizializzazione delle costanti avrebbe potuto (e dovuto) essere fatta a livello globale.
Sì, ho provato e funziona. E non puoi farlo senza livello globale, l'ho fatto solo per ridurre il costo computazionale, per riempire l'array una volta nell'init e poi usare i valori dell'array?
Anche se logicamente le variabili a livello globale sono sempre costanti, quindi il calcolo viene eseguito una sola volta all'inizio del programma?
Sì, ho provato e funziona. E non puoi farlo senza livello globale, l'ho fatto solo per ridurre il costo computazionale, per riempire l'array una volta nell'init e poi usare i valori dell'array?
Anche se logicamente le variabili a livello globale sono sempre costanti, quindi il calcolo viene eseguito una sola volta all'inizio del programma?
Dice che c'è già una dichiarazione globale)
la dichiarazione di 'T' nasconde la dichiarazione globale alla linea 40
Ma, come farlo bene. Non avevo mai dichiarato un array usando le parentesi graffe. L'ho inizializzato con zero e ho impostato la sua dimensione e poi l'ho riempito con il ciclo. C'è un altro modo per farlo?
Se cancello il datetime nell'inite, il codice non compila, ma scrive due errori:
'{' - espressione attesa
'=' - uso di operazioni illegali