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 5004Alert("done");
} elseAlert("Operation FileOpen failed, error ",GetLastError(), TerminalInfoString(TERMINAL_DATA_PATH));
return filehandle;
}
//+------------------------------------------------------------------+//| Get the symbols |//+------------------------------------------------------------------+void TProgram::GetSymbolsFromFile(conststring filePath, conststring 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);
おいおい
5004エラーは、ファイルを閉じて いないことが原因のようです。
</>ボタンでコードを挿入してください。
Strategy Testerで EAをテストしていると、同じ5004エラーが表示されます。同じセッションで他のファイルを開くことができるのに、突然ファイルを開くことができなくなったので、mt4のバグに違いありません。
私はこれを機械学習アルゴリズムのバックテストに使用しています。
mt4が機能しないので、アルゴリズムをバックテストするための別のプラットフォームが必要です。
他のバックテストプラットフォームについて何かアイデアはありますか?
できれば、パイソンベースで。
MT5をお試しください。
私のプログラムをデバッグしようとしているのですが、同じような問題があります。
FileOpen Docsの例に基づいて、ファイルからシンボル・リストを読み込む関数を 作成しました。
エディターの "Files Directory "にファイルを含め、そのように関数を呼び出します。
いろいろなパラメータとfilePathsを試してみました。
1 - サーミナルファイルのパスを使用しようとしましたが、どれもうまくいきません。
私はエラーを得ました。5002 e 5004
err_wrong_filename(間違ったファイル名
5002
無効なファイル名
ERR_CANNOT_OPEN_FILE
5004
ファイルオープニングエラー