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
Per quanto ne so, se non sono state apportate modifiche al file utilizzando funzioni di file (ad esempio FileWrite()), non c'è bisogno di chiuderlo. La funzione FileOpen() crea semplicemente un nuovo file e questa operazione non richiede la chiusura del file (la documentazione di questa funzione, inoltre, non dice che il file deve essere chiuso dopo la creazione).
Oy-lee! Cantastorie https://docs.mql4.com/ru/files/fileopen
//--- il modo corretto di lavorare nella "sandbox dei file"
ResetLastError();
filehandle=FileOpen("fractals.csv",FILE_WRITE|FILE_CSV);
if(filehandle!=INVALID_HANDLE)
{
FileWrite(filehandle,TimeCurrent(),Symbol(),EnumToString(ENUM_TIMEFRAMES(_Period));
FileClose(filehandle);
Stampa("FileOpen OK");
}
altroPri
Oy-lee! Cantastorie https://docs.mql4.com/ru/files/fileopen
Qual è la contraddizione con quello che ho detto?
Ho detto, -
Retag Konow:
Per quanto ne so, se non sono state apportate modifiche al file utilizzando funzioni di file (ad esempio FileWrite()), non c'è bisogno di chiuderlo. La funzione FileOpen() crea semplicemente un nuovo file e questa operazione non richiede la chiusura del file (anche la documentazione di questa funzione non dice che il file deve essere chiuso dopo la creazione).
Ma nel tuo esempio la funzione FileWrite() è usata immediatamente dopo la creazione del file. E poi usate FileClose(filehandle);
Inoltre, nel codice dello script di cui sopra ho aggiunto una chiusura esplicita, ma questo non ha risolto nulla...
Esattamente così. Quando cerco di eliminare una cartella che contiene già sottocartelle e file, elimino prima i file. Rimangono solo le sottocartelle. Provo a pulirli usando FolderClean() e poi chiamo FolderDelete(). Tuttavia, il risultato è che quelle sottocartelle che erano vuote sono ben cancellate, ma se c'erano più sottocartelle all'interno delle sottocartelle non vengono cancellate. Dopo di che, provo a rimuovere manualmente le cartelle dal navigatore di file in MetaEditor, ma il terminale non le rimuove e fa apparire questa finestra:
Clicco su "Continua", accetto le modifiche, ma la cartella non viene ancora cancellata. Dopo aver chiuso completamente e riaperto il terminale, le cartelle che avrebbero dovuto essere cancellate scompaiono da sole oppure no, ma è possibile cancellarle immediatamente e manualmente senza la finestra di cui sopra.
Che cose strane...
Ho visto questo tipo di cose molte volte. Ho capito che a un certo punto la cartella Files con tutte le sue sottocartelle e i suoi file ottiene l'attributo di sola lettura. Deselezionare questa bandiera manualmente non aiuta. Ma riavviare il terminale aiuta sempre. Non sono riuscito a farlo suonare (non ci ho provato), quindi non l'ho segnalato alla SD.
L'errore (5022) si verifica solo se si imposta FILE_COMMON
Cancella la cartella ma non la cancella
Questo flag non ha bisogno di essere impostato, altrimenti il file verrà cercato nella cartella condivisa, e l'errore dice che il nome della directory è sbagliato.
Percorso del file
"\\MQL4\\Files";
non richiede che questo flag sia impostato. Quindi tutto è corretto.
Ho visto questo tipo di cose accadere diverse volte. Ho scoperto che a un certo punto la cartella Files con tutte le sottocartelle e i file ottiene l'attributo di sola lettura. Deselezionare questa bandiera manualmente non aiuta. Ma riavviare il terminale aiuta sempre. Non sono riuscito a farlo suonare (non ci ho provato), quindi non l'ho segnalato alla SD.
Questo flag non ha bisogno di essere impostato, altrimenti il file verrà cercato nella cartella pubblica e l'errore dice che il nome della directory è sbagliato.
Sia con che senza FILE_COMMON - funziona (originariamente quando ho controllato ho dimenticato di mettere questo flag nell'ultimo if). Con FILE_COMMON era implicito che fosse presente in tutte le operazioni
Questo flag non ha bisogno di essere impostato, altrimenti il file verrà cercato nella cartella pubblica, e l'errore dice che il nome della directory è sbagliato.
Il percorso del file
non richiede che questo flag sia impostato. Quindi tutto è corretto.
Questo è strano. Ho notato i percorsi della cartella MQL4 e ho ricompilato il codice in .ex4 e stranamente il codice ha funzionato senza errori. Ho rimosso la chiusura del file e ho ottenuto
Poi senza correzioni l'ho eseguito su mt5 e stranamente la menzione della cartella MQL4 è stata ignorata. La cartella e il file sono stati creati nella cartella MQL5. Da qui tutto è come in MT4. Un file non chiuso non viene cancellato...
Tutto questo è strano. Ho notato i percorsi della cartella MQL4 e ho ricompilato il codice in .ex4 e stranamente il codice ha funzionato senza errori. Ha rimosso la chiusura del file e ha ottenuto
Poi senza correzioni l'ho eseguito su mt5 e stranamente la menzione della cartella MQL4 è stata ignorata. La cartella e il file sono stati creati nella cartella MQL5. Da qui tutto è come in MT4. Un file non chiuso non viene cancellato...
Voglio dire, hai creato un Expert Advisor da uno script e hai provato ad eseguirlo?
Ma lo chiudo e il problema rimane... Ahimè...(