
MQL4MQL5 ファイル
FileOpen()
- できること
- ファイルを開く(読み込み・書き込み)
- 対応
- MQL4・MQL5
FileOpen() とは
ファイルを開いて、読み書きに使うファイルハンドルを返す関数です。開けるのは MQL4\Files(MQL5\Files)フォルダの中か、FILE_COMMON を付けた共通フォルダの中だけです。
FileOpen() の書式と引数
MQL4 の場合MT4
引数の組み合わせが違う 2 通りの書き方があります。
int FileOpen(string file_name, int open_flags)
int FileOpen(
string file_name,
int open_flags,
int delimiter,
uint codepage=CP_ACP
)| 引数 | 型 | 省略時 | 説明 |
|---|---|---|---|
file_name | string | 必須 | ファイル名(Files フォルダからの相対パス)。 |
open_flags | int | 必須 | 開き方。FILE_READ(読む)、FILE_WRITE(書く)、FILE_CSV(CSV)、FILE_TXT(テキスト)、FILE_BIN、FILE_ANSI(ANSI 文字コード)、FILE_COMMON(共通フォルダ)、FILE_SHARE_READ などを | で組み合わせます。 |
delimiter | int | 必須 | CSV の区切り文字。カンマ区切りなら ','。 |
codepage | uint | CP_ACP | 文字コード(FILE_ANSI のとき)。CP_UTF8 など。 |
戻り値(MQL4)
ファイルハンドル。失敗したら INVALID_HANDLE(-1)。
MQL5 の場合MT5
引数の組み合わせが違う 2 通りの書き方があります。
int FileOpen(string file_name, int open_flags)
int FileOpen(
string file_name,
int open_flags,
ushort delimiter,
uint codepage=CP_ACP
)| 引数 | 型 | 省略時 | 説明 |
|---|---|---|---|
file_name | string | 必須 | ファイル名(Files フォルダからの相対パス)。 |
open_flags | int | 必須 | 開き方。FILE_READ(読む)、FILE_WRITE(書く)、FILE_CSV(CSV)、FILE_TXT(テキスト)、FILE_BIN、FILE_ANSI(ANSI 文字コード)、FILE_COMMON(共通フォルダ)、FILE_SHARE_READ などを | で組み合わせます。 |
delimiter | ushort | 必須 | CSV の区切り文字。カンマ区切りなら ','。 |
codepage | uint | CP_ACP | 文字コード(FILE_ANSI のとき)。CP_UTF8 など。 |
戻り値(MQL5)
ファイルハンドル。失敗したら INVALID_HANDLE(-1)。
FileOpen() の使い方(コード例)
MQL4・MQL5 共通
// 取引記録を CSV に追記する
int h = FileOpen("trades.csv", FILE_READ | FILE_WRITE | FILE_CSV | FILE_ANSI, ',');
if(h == INVALID_HANDLE)
{
Print("ファイルを開けません error=", GetLastError());
return;
}
FileSeek(h, 0, SEEK_END);
FileWrite(h, TimeToString(TimeCurrent()), _Symbol, "BUY", 0.1);
FileClose(h);OnTick()・OnStart() などの関数の中に書いて使う例です。MetaEditor でコンパイルできることを確認済みです。
FileOpen() の注意点
- 開いたファイルは必ず FileClose() で閉じます。閉じないと、ほかのプログラムから開けなくなります。
- FILE_WRITE で開くと、既存の内容は消えます。追記したいときは FILE_READ | FILE_WRITE で開き、FileSeek(ハンドル, 0, SEEK_END) で末尾に移動してから書きます。
- ストラテジーテスターでは、テスター専用の Files フォルダが使われます。












