MT4 MT4 実行時エラー
5007
- 定数名
ERR_FILE_INVALID_HANDLE- メッセージ
invalid file handle (file closed or was not opened)- 意味
- ファイルハンドルが無効(閉じた・開いていない)
MT4エラー5007とは
ファイルハンドルが無効なときのエラーです。すでに閉じたファイルや、開くのに失敗したファイルのハンドルを使ったときに起きます。
MT4エラー5007の主な原因
- FileOpen() が失敗して INVALID_HANDLE が返ったのに、そのまま読み書きしている
- FileClose() したあとのハンドルを、もう一度使っている
MT4エラー5007の対処法
- FileOpen() の戻り値が INVALID_HANDLE でないか必ず確認する
- 閉じたハンドルは使わない(変数に INVALID_HANDLE を入れておくと間違いを防げる)
コード例(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に組み込むときは、変数名や設定値を合わせてください。












