Fehlercode 5004 - Seite 4

 
samoye: Gibt es bitte eine Lösung für den Fehler 5004? Ich erhalte die gleiche Fehlermeldung, wenn ich versuche, in eine Datei zu schreiben.
Gefragt und beantwortet. Öffnen Sie die Datei einmal vor der Schleife. Schließen Sie die Datei nach der Schleife.
 

Hallo

es scheint, dass der Fehler 5004 mit einer nicht geschlossenen Datei zusammenhängt!


int readFileImg (string file_name) {

   int filehandle = FileOpen(file_name, FILE_READ|FILE_BIN);

   if (filehandle!=INVALID_HANDLE) {

      FileClose(filehandle);  // this line is important, without this line you will get 5004

      Alert("done");

   } else Alert("Operation FileOpen failed, error ",GetLastError(), TerminalInfoString(TERMINAL_DATA_PATH));

   return filehandle;

}

 

Bitte verwenden Sie die Schaltfläche </>, um Ihren Code einzufügen.


 

Ich habe die gleiche 5004 Fehler auftauchen beim Testen der EA mit Strategy Tester. Es muss ein Fehler in mt4 sein, da es andere Dateien in der gleichen Sitzung öffnen kann, aber plötzlich kann es keine Dateien öffnen.

Ich verwende dies zum Backtesting eines maschinellen Lernalgorithmus.

Jetzt brauche ich eine andere Plattform für das Backtesting des Algorithmus, da mt4 nicht funktioniert.

Irgendwelche Ideen für andere Backtesting-Plattformen?

Vorzugsweise python-basiert.

 
Versuchen Sie MT5.
 
kypa:
Versuchen Sie MT5.

Ich versuche, mein Programm zu debuggen und ich habe das gleiche Problem.

Basierend auf dem Beispiel in den FileOpen Docs, habe ich diese Funktion erstellt, um eine Symbolliste aus einer Datei zu lesen.

Ich habe die Datei in das Dateiverzeichnis des Editors eingefügt und rufe die Funktion auf diese Weise auf:


GetSymbolsFromFile("carteiras","ibrx_100_2018_12_10.txt");
//+------------------------------------------------------------------+
//| Get the symbols                                                  |
//+------------------------------------------------------------------+
void TProgram::GetSymbolsFromFile(const string filePath, const string fileName)
{
   //--- additional variables 
   int    str_size; 
   string str;
   int    array_size;
   string terminal_data_path;
   
   //--- open the file 
   ResetLastError(); 
   //--- Release the symbol array
   ::ArrayFree(m_file_symbols);
   
   terminal_data_path=TerminalInfoString(TERMINAL_DATA_PATH);
   PrintFormat("File path: %s\\Files\\",terminal_data_path);
   
   bool  test1 = FileIsExist(fileName,0 );
   bool  test2 = FileIsExist(fileName,FILE_COMMON);
   
   int file_handle=FileOpen(fileName,FILE_READ|FILE_TXT|FILE_ANSI); 
   if(file_handle!=INVALID_HANDLE) 
   { 
      PrintFormat("%s file is available for reading",filePath); 
      //PrintFormat("File path: %s\\Files\\",terminal_data_path);
      //--- read data from the file 
      while(!FileIsEnding(file_handle)) 
        { 
         //--- find out how many symbols are used for writing the time 
         str_size=FileReadInteger(file_handle,INT_VALUE); 
         //--- read the string 
         str=FileReadString(file_handle,str_size); 
         
         array_size=::ArraySize(m_file_symbols);
         ::ArrayResize(m_file_symbols,array_size+1);
         m_file_symbols[array_size]=str;
         
         //--- print the string 
         PrintFormat(str); 
        } 
      //--- close the file 
      FileClose(file_handle); 
      PrintFormat("Data is read, %s file is closed",fileName); 
   }
   else
   {
      PrintFormat("Failed to open %s file, Error code = %d",fileName,GetLastError()); 
   }
}

Ich habe viele verschiedene Parameter und filePaths ausprobiert

1 - Ich habe versucht, den therminalen Dateipfad zu verwenden und nichts davon funktioniert.

 int file_handle=FileOpen(fileName,FILE_READ|FILE_TXT|FILE_ANSI); 

Ich bekam die Fehler: 5002 e 5004

ERR_WRONG_FILENAME

5002

Ungültiger Dateiname

ERR_KANN_KEINE_DATEI_ÖFFNEN

5004

Fehler beim Öffnen einer Datei

Dateien: