
MT4 MT4 実行時エラー
5004
- 定数名
ERR_FILE_CANNOT_OPEN- メッセージ
cannot open file- 意味
- ファイルを開けない
MT4エラー5004とは
FileOpen() でファイルを開けなかったときのエラーです。MQL4 のファイル関数は MQL4\Files(または共通フォルダ)の中しか扱えないため、場所の指定ミスが最も多い原因です。
ログの表示例
FileOpen error 5004
「エキスパート」タブまたは「操作履歴」タブに表示されます。数値や表記の細部は、ビルド・ブローカー・EAの作りによって異なります。
MT4エラー5004の主な原因
- ファイルが MQL4\Files にない、またはフルパス(C:\...)で指定している
- バックテスト中は tester\files フォルダが使われることを知らずにファイルを置いている
- Excel など別のソフトでファイルを開いたままにしている
- FILE_READ で存在しないファイルを開こうとした
- 書き込みと読み込みで FILE_SHARE_READ / FILE_SHARE_WRITE の指定が合っていない
MT4エラー5004の対処法
- ファイルは「データフォルダ」→ MQL4\Files に置き、ファイル名だけ(サブフォルダなら "sub\\data.csv")を指定する
- 複数のMT4から使うなら FILE_COMMON を付けて共通フォルダを使う
- ほかのソフトで開いている場合は閉じるか、FILE_SHARE_READ を付ける
- 読み込み前に FileIsExist() で存在を確認する
コード例(MQL4)
// MQL4\Files 内の CSV を読む(エラー4103・5004 対策)(MQL4)
void ReadCsv()
{
string name = "signals.csv"; // フルパスではなく、MQL4\Files からの相対パス
if(!FileIsExist(name))
{
Print(name, " が MQL4\\Files にありません");
return;
}
int h = FileOpen(name, FILE_READ | FILE_CSV | FILE_SHARE_READ, ',');
if(h == INVALID_HANDLE)
{
Print("FileOpen error ", GetLastError());
return;
}
while(!FileIsEnding(h)) // 最後まで読んだら終了(4099 を出さない)
{
string col1 = FileReadString(h);
Print(col1);
}
FileClose(h);
}MetaEditor(MT4)でコンパイルできることを確認済みです。自分のEAに組み込むときは、変数名や設定値を合わせてください。












