Hata Kodu 5004 - sayfa 4

 
samoye : 5004 hatasının bir çözümü var mı lütfen? Bir dosyaya yazmaya çalışırken aynı hata mesajını alıyorum.
Soruldu ve cevaplandı . Döngüden önce dosyayı bir kez açın. Döngüden sonra dosyayı kapatın.
 

Merhaba

5004 hatası, dosyayı kapatmamakla ilgili görünüyor!


 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;

}

 

Lütfen kodunuzu eklemek için </> düğmesini kullanın.


 

EA'yı Strategy Tester kullanarak test ederken aynı 5004 hatasıyla karşılaşıyorum. Aynı oturumda başka dosyaları açabildiğinden ancak aniden dosyaları açamadığı için mt4'te bir hata olmalı.

Bunu bir makine öğrenimi algoritmasını geriye dönük test etmek için kullanıyorum.

Şimdi mt4 çalışmadığından algoritmayı geriye dönük test etmek için başka bir platforma ihtiyacım var.

Diğer geriye dönük test platformları hakkında herhangi bir fikriniz var mı?

Tercihen python tabanlı.

 
MT5'i deneyin.
 
kypa :
MT5'i deneyin.

Programımda hata ayıklamaya çalışıyorum ve aynı sorunu yaşıyorum.

FileOpen Docs'taki örneğe dayanarak, bir dosyadan bir sembol listesi okumak için bu işlevi yarattım.

Dosyayı editörün "Dosya Dizini"ne ekledim ve işlevi şöyle adlandırıyorum:


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

Birçok farklı parametre ve filePath denedim

1 - Termal dosya yolunu kullanmaya çalıştım ve bunların hiçbiri çalışmıyor.

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

Hataları aldım: 5002 e 5004

ERR_WRONG_FILENAME

5002

Geçersiz dosya adı

ERR_CANNOT_OPEN_FILE

5004

Dosya açma hatası

Dosyalar: