Код ошибки 5004 - страница 4

 
samoye: Есть ли решение для ошибки 5004? Я получаю такое же сообщение об ошибке при попытке записи в файл.
Спросили и ответили. Откройте файл один раз перед циклом. Закройте файл после цикла.
 

привет

похоже, что ошибка 5004 связана с тем, что файл не закрывается!


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;

}

 

Пожалуйста, используйте кнопку </>, чтобы вставить свой код.


 

У меня такая же ошибка 5004, выскакивающая при тестировании советника с помощью Strategy Tester. Должно быть, это ошибка в mt4, поскольку он может открывать другие файлы в той же сессии, но внезапно он не может открыть файлы.

Я использую его для бэктестинга алгоритма машинного обучения.

Теперь мне нужна другая платформа для бэктестинга алгоритма, поскольку mt4 не работает.

Есть идеи по поводу других платформ для бэктестинга?

Предпочтительно на основе python.

 
Попробуйте MT5.
 
kypa:
Попробуйте MT5.

Я пытаюсь отладить свою программу и сталкиваюсь с той же проблемой.

Основываясь на примере в документации FileOpen, я создал эту функцию для чтения списка символов из файла.

Я включил файл в "Files Directory" редактора и вызываю функцию таким образом:


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

Я пробовал множество различных параметров и путей к файлам.

1 - Пытался использовать путь к файлу therminal и ничего из этого не работает.

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

Я получаю ошибки: 5002 e 5004

ERR_WRONG_FILENAME

5002

Неверное имя файла

ERR_CANNOT_OPEN_FILE

5004

Ошибка открытия файла

Файлы: