エラーコード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;

}

 

</>ボタンでコードを挿入してください。


 

Strategy Testerで EAをテストしていると、同じ5004エラーが表示されます。同じセッションで他のファイルを開くことができるのに、突然ファイルを開くことができなくなったので、mt4のバグに違いありません。

私はこれを機械学習アルゴリズムのバックテストに使用しています。

mt4が機能しないので、アルゴリズムをバックテストするための別のプラットフォームが必要です。

他のバックテストプラットフォームについて何かアイデアはありますか?

できれば、パイソンベースで。

 
MT5をお試しください。
 
kypa:
MT5をお試しください。

私のプログラムをデバッグしようとしているのですが、同じような問題があります。

FileOpen Docsの例に基づいて、ファイルからシンボル・リストを読み込む関数を 作成しました。

エディターの "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()); 
   }
}

いろいろなパラメータとfilePathsを試してみました。

1 - サーミナルファイルのパスを使用しようとしましたが、どれもうまくいきません。

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

私はエラーを得ました。5002 e 5004

err_wrong_filename(間違ったファイル名

5002

無効なファイル名

ERR_CANNOT_OPEN_FILE

5004

ファイルオープニングエラー

ファイル: