Code d'erreur 5004 - page 4

 
samoye: Existe-t-il une solution à l'erreur 5004, s'il vous plaît ? J'obtiens le même message d'erreur en essayant d'écrire dans un fichier.
Questions et réponses. Ouvrez le fichier une fois avant la boucle. Fermez le fichier après la boucle.
 

Salut

il semble que l'erreur 5004 soit liée à la non-fermeture du fichier!


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;

}

 

Veuillez utiliser le bouton </> pour insérer votre code.


 

J'ai la même erreur 5004 qui s'affiche lorsque je teste l'EA avec Strategy Tester. Il doit s'agir d'un bogue dans mt4, car il peut ouvrir d'autres fichiers dans la même session, mais soudainement, il ne peut plus ouvrir de fichiers.

Je l'utilise pour backtester un algorithme d'apprentissage automatique.

Maintenant j'ai besoin d'une autre plateforme pour backtester l'algorithme puisque mt4 ne fonctionne pas.

Avez-vous des idées sur d'autres plateformes de backtesting ?

De préférence basées sur python.

 
Essayez MT5.
 
kypa:
Essayez MT5.

J'essaie de déboguer mon programme et j'ai le même problème.

Sur la base de l'exemple dans les Docs FileOpen, j'ai créé cette fonction pour lire une liste de symboles à partir d'un fichier.

J'ai inclus le fichier dans le "répertoire des fichiers" de l'éditeur et j'appelle la fonction comme ça :


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()); 
   }
}

J'ai essayé de nombreux paramètres et chemins de fichiers différents.

1 - J'ai essayé d'utiliser le chemin du fichier thermminal et rien de tout cela ne fonctionne.

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

J'ai obtenu les erreurs : 5002 e 5004

ERR_WRONG_FILENAME

5002

Nom de fichier invalide

ERR_CANNOT_OPEN_FILE

5004

Erreur d'ouverture de fichier

Dossiers :