![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
Sergei ha diversi Expert Advisors che lavorano lì, ci sono diverse righe, quindi è un array. Ed è per questo che tutto sembra brutto. Maxim Kuznetsov ha suggerito SQL, questo è il modo giusto per questi EAs di comunicare tra loro.
Ma le linee vengono lette una per una e in qualche modo viene selezionata quella giusta. E poi non hai bisogno di un array.
Ho detto anche questo, ma mql4 non supporta SQLite
Non ho collegato la libreria? O non c'è, l'ho dimenticato.
Non ho collegato la libreria? O non c'è, l'ho dimenticato.
Sembra che non sia possibile modificare un file insieme allo stesso tempo, perché viene salvata la versione del file che è stata salvata dopo.
Per esempio, il programma A ha aperto il file per la modifica, allo stesso tempo il programma B ha fatto lo stesso, poi il programma A ha fatto le modifiche e le ha salvate usando FileClose, poi il programma B ha fatto lo stesso, ma quando il programma C apre il file, non mostrerà le modifiche fatte dal programma A, ma solo le modifiche che sono state implementate e salvate dal programma B, perché il programma B ha salvato il file dopo il programma A.
Ma questo non è certo.
C'è qualche informazione su questo?
Il lavoro simultaneo di programmi con un file è il male peggiore. Al momento di lavorare con il file, l'Expert Advisor dovrebbe controllare il divieto di lettura/scrittura di questo file da parte di altri Expert Advisor. Usa SQL o lavariabile globale flag o il file flag. Altrimenti ci saranno errori incomprensibili e difficili da individuare.
Non è così male, i compiti sono diversi, ma ci sono alcune peculiarità che devono essere prese in considerazione.
Apparentemente le modifiche vengono salvate esattamente al momento di FileClose, e nessuno ne è a conoscenza fino ad allora.
Sembra che non sia possibile modificare un file insieme allo stesso tempo, perché viene salvata la versione del file che è stata salvata dopo.
Per esempio, il programma A ha aperto il file per la modifica, allo stesso tempo il programma B ha fatto lo stesso, poi il programma A ha fatto delle modifiche e le ha salvate usando FileClose, poi il programma B ha fatto lo stesso, ma quando il programma C apre il file, il file non conterrà le modifiche fatte dal programma A, ma solo le modifiche che il programma B ha fatto e salvato, perché il programma B ha salvato il file dopo il programma A.
Ma questo non è certo.
C'è qualche informazione su questo?
È difficile da impostare, ma non impossibile. È sufficiente controllare, prima di salvare, il tempo dell'ultimo cambio con lo stesso tempo all'apertura. Leggiamo FILE_MODIFY_DATE, poi apriamo il file, facciamo delle modifiche, leggiamo di nuovo FILE_MODIFY_DATE, confrontiamo con il precedente e se nessuno ha fatto modifiche, chiudiamo il file e salviamo le modifiche. Altrimenti scartiamo le modifiche... e lo riapriamo. Come questo.
Non è così male, i compiti sono diversi, ma ci sono alcune peculiarità che devono essere prese in considerazione.
Apparentemente, le modifiche vengono salvate al momento di FileClose, e nessuno ne è a conoscenza fino ad allora.
Non è un fatto.
FileFlushRipristina su disco tutti i dati rimasti nel buffer di I/O del file.
Difficile da impostare, ma non impossibile. È sufficiente controllare, prima di scrivere, l'ora dell'ultima modifica con la stessa ora quando si apre. Cioè leggere FILE_MODIFY_DATE poi aprire il file, fare delle modifiche, leggere di nuovo FILE_MODIFY_DATE confrontare con il precedente e se nessuno ha fatto modifiche, chiudere il file salvando le modifiche. Altrimenti scartiamo le modifiche... e lo riapriamo. Come questo.
È più o meno la stessa cosa della bandiera "occupata" (primo arrivato primo servito), solo le volte più complicate, ma l'idea è interessante, mi piace, grazie.
Non è un fatto.
FileFlushRipristina su disco qualsiasi dato rimanente nel buffer di I/O del file.
Non sono sicuro di cosa significhi questo nel contesto del salvataggio di FileClose.