
MT5 MT5 実行時エラー
5004
- 定数名
ERR_CANNOT_OPEN_FILE- 意味
- ファイルを開けない
MT5エラー5004とは
FileOpen() でファイルを開けなかったときのエラーです。MQL5 のファイル関数は MQL5\Files(または共通フォルダ)の中しか扱えないため、フルパスで指定していることが最も多い原因です。
ログの表示例
FileOpen failed, error 5004
「エキスパート」タブまたは「操作履歴」タブに表示されます。数値や表記の細部は、ビルド・ブローカー・EAの作りによって異なります。
MT5エラー5004の主な原因
- ファイルが MQL5\Files にない、または C:\ から始まるフルパスで指定している
- ストラテジーテスターでは、テスト用エージェントのフォルダ(Tester\Agent-...\MQL5\Files)が使われる
- Excel など別のソフトでファイルを開いたままにしている
- 読み込みモードで存在しないファイルを開いた
MT5エラー5004の対処法
- ファイルは「データフォルダ」→ MQL5\Files に置き、ファイル名だけを指定する
- テスターと共有するなら FILE_COMMON を付けて共通フォルダを使う
- ほかのソフトで開いているときは閉じるか、FILE_SHARE_READ を付ける
- FileIsExist() で存在を確認してから開く
コード例(MQL5)
// MQL5\Files(または共通フォルダ)のファイルを開く(5004 対策)(MQL5)
void AppendLog(const string text)
{
// FILE_COMMON を付けると ...\Terminal\Common\Files を使うので、テスターとも共有できる
int h = FileOpen("mylog.txt", FILE_READ | FILE_WRITE | FILE_TXT | FILE_SHARE_READ | FILE_COMMON);
if(h == INVALID_HANDLE)
{
Print("FileOpen error ", GetLastError());
return;
}
FileSeek(h, 0, SEEK_END);
FileWriteString(h, text + "\r\n");
FileClose(h);
}MetaEditor(MT5)でコンパイルできることを確認済みです。自分のEAに組み込むときは、変数名や設定値を合わせてください。












