FileOpenHistory 関数
この関数は、historyフォルダ または そのサブフォルダにあるファイルを開きます。
historyフォルダには、hst形式のファイルで、通貨ペアのヒストリカル (履歴) データが含まれています。ヒストリカルデータとは、通貨ペアの過去のチャートデータのことです。ヒストリカルデータをダウンロードする方法についてはこちらを参考にしてください。
historyフォルダは、使用しているMT4のメニューのファイルから「データフォルダを開く」のフォルダの中にあります。hst形式のファイルは「history」→「〇〇〇」フォルダの中にあります。「〇〇〇」フォルダは、使用しているFX会社のMT4のサーバー名がフォルダ名になっていることが一般的です。
この関数は、非標準の銘柄や期間における独自のヒストリカルデータを形成するのに役立ちます。historyフォルダに形成されたファイルはオフライン上でもグラフ化することができます。
FileOpenHistory関数で開いたファイルは FileClose関数で閉じておかないと他で操作ができなくなるのでご注意ください。
データ型と構成・戻り値
int FileOpenHistory(①, ②, ③);
戻り値は、ファイルが正常に開かれた場合、関数はファイルハンドルを返します。このファイルハンドルは、ファイルデータへのアクセスに使用されます。失敗した場合は INVALID_HANDLE(-1)を返します。
発生するエラーについては、GetLastError関数で取得することができます。
引数 [4]
FileOpenHistory関数は 3個の引数で構成されます。
番 号 | 引数名 | データ型 | 単位 | 初期値 | 説明 |
---|---|---|---|---|---|
① | filename | int | - | - | 開くファイル名。 |
② | mode | int | - | - | ファイルオープニングフラグ。 FILE_BIN、FILE_CSV、FILE_READ、FILE_WRITE、FILE_SHARE_READ、FILE_SHARE_WRITE の 1つ または 複数の組み合わせを指定できます。 |
③ | delimiter | int | - | ‘;’ | csvファイルで使用される区切り文字。 デフォルトの区切り文字は「;」です。 「0」の時は、区切り文字は使用されません。 |
MQL4では、「FILE_SHARE_WRITE」および「FILE_SHARE_READ」フラグは、ファイルを開くときに共有使用のために明示的に指定する必要があります。フラグが無い場合、ファイルは排他モードで開かれ、ファイルを開いたユーザーが閉じるまで、他のユーザーは開くことができません。
使用例
FileOpenHistory関数でhst形式ファイルを開く
FileOpenHistory関数を使って historyフォルダの中にあるヒストリカルデータが格納されている hstファイルを開きます。
hstファイルを次の内容で開きます。
①FILE_BIN:読取/書込のバイナリファイルとします。
②FILE_SHARE_WRITE:共有で書き込めるようにします。
③FILE_SHARE_READ:共有で読み込みができるようにします。
コード
// FileOpenHistory関数でhst形式ファイルを開く
#property strict
void OnInit() {
int handle; // ファイルハンドル
handle = FileOpenHistory("USDJPY60.hst", FILE_BIN|FILE_SHARE_WRITE|FILE_SHARE_READ);
if(handle<1) {
Print("指定したファイルは開けません");
} else {
Print("指定したファイルを開きました");
}
FileClose(handle);
}
コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)
結果
指定したファイルが存在しない場合は「指定したファイルは開けません」と表示されます。
FileOpenHistory関数の引数②に「FILE_WRITE」がある場合で指定したファイルが存在しない場合は、指定したファイルの名前で新規にファイルが作成されます。