本記事では、MT4にヒストリカルデータを入れる方法について解説します。
MT4で過去の値動きをチャートとして表示するためには、「ヒストリカルデータ」が必要になります。
ヒストリカルデーターはMT4からでも取得できますが、取得できる期間に限りがあります。
そこでFX業者のサイトからヒストリカルデータをダウンロードして、MT4にインポートしてチャートに表示する方法までを解説していきます。
長期間にわたって過去のチャートを表示したい方や、EAでバックテストしたい方はぜひご覧ください。
ヒストリカルデータとは?
ヒストリカルデータとは、MT4に入っている過去の値動きのデータです。
普通にMT4を利用していいれば、自動でヒストリカルデータは溜まっていきます。
ヒストリカルデータの確認方法は、MT4上部の「ツール」⇒「ヒストリーセンター」をクリックします。

現在のMT4に入っているヒストリカルデータが、通貨ペア、時間足ごとに表示されます。

MT4のチャートは、これらのデータをベースにして足を描画したり、インジケーターの計算をしています。
そのため、ここにデータが無ければ、チャートを表示することができません。
データが無い場合はダウンロードして追加(インポート)してやれば大丈夫です。
ヒストリカルデータをダウンロードする方法
MT4のヒストリカルデータは、チャートを過去にさかのぼってスクロールしていけば自動でダウンロード&保存されていきます。
しかし、チャートスクロールで保存できる期間は限られており、それよりも過去のデータをチャートに表示したい場合は、別途MT4を採用するMT4業者からヒストリカルデータをダウンロードして、MT4へインポートする必要があります。
ここでは口座開設不要でダウンロードできる業者をご紹介します。
FXDD

完全無料でヒストリカルデータがダウンロードできます。
以下のリンクからページへ飛び通貨ペアを選択してクリックすれば ダウンロードが開始されます。
データは1分足のみになりますので、5分足以上のの時間足は作成する必要があります。(後述)
10年以上前のヒストリカルデータがワンクリックでダウンロードできるの大きなメリットです。
AXIORY

完全無料で2015年から1年ごとの1分足データがダウンロードできます。
スタンダード口座とナノ/テラ口座に分かれていますので、好みのデータが利用できます。
MT4にヒストリカルデータを入れる手順
それではダウンロードしたヒストリカルデータをMT4に入れる手順について解説していきます。
今回はFXDD社のAUD/JPYの1分足ヒストリカルデータを例にやっていきます。
ヒストリカルデータのダウンロード
まずはFXDDのサイトから、ヒストリカルデータをダウンロードして解凍します。

解凍すると、.hstファイルが出てくることを確認してください。

MT4の設定変更
次にMT4を開いてチャート上部の「ツール」⇒「オプション」とクリックしていきます。

オプションの中の「チャート」タブをクリックして、その中の「ヒストリー内の最大バー数」と「チャートの最大バー数」を9で埋め尽くして「OK」をクリックします。

MT4を再起動して、両方の最大バー数が「2147483647」という数字になっていれば大丈夫です。
MT4にヒストリカルデータをインポート
次にMT4上部のツール選択し、ヒストリーセンターをクリックします。

左側の通貨ペア一覧から、今回インポートしたい通貨ペアのAUDJPYを選択し、その中の1分足をクリックします。

右側の表にMT4内に入っているAUDJPYの価格データが表示されます。
表右側のスクロールバーを一番下にやると、AUDJPY1分足の一番古いデータがいつのものなのかが分かります。

このMT4では2023年10月5日の13時26分のデータが一番古いデータでした。

試しに豪円1分足チャートを開いて、最大にまでさかのぼると、確かに23年10月5日の13時26分までしか表示されません。
ではここから先ほどダウンロードしたFXDDのヒストリカルデータを入れていきます。
再度ヒストリーセンターを出して、ヒストリカルデータを入れたい通貨ペア&時間足(今回はAUDJPY1分足)を選択して「インポート」をクリックします。

新しいウィンドウが出てくるので「参照」をクリックして、先ほどダウンロード&解凍したファイルを選択します。

ファイルを選択したら、下の表に入っているデータが表示されますので、右のバーを一番下にスクロールして最も古いデータが2005年であることを確認します。

ここでOKをクリックします。
再度豪円1分足チャートを開いて一番過去の足を表示すると、2005年のものが出てくることを確認します。

これで1分足データのインポートは完了です。
(古いデータの場合、上の画像のようにローソク足が妙な形になっていることがあります。)
上位足を作る
これまでの作業で行ったのは1分足のヒストリカルデータを追加しただけですので、当然5分足以上のヒストリカルデータは追加されていません。
これだと5分足以上の過去チャートが見れませんので、先ほど入れた1分足データを使って上位足を作っていきます。
まずはナビゲーターを表示して、一番下のスクリプトの中にある「PeriodConverter」を上位足を作りたい1分足チャート(今回の例では豪円1分足チャート)上にドラッグ&ドロップします。

パラメーター設定が出ます。
変更できるのはPeriod multiplier factorの1点のみです。
このパラメーターの意味合いは、PeriodConverterを入れたチャートの何倍の時間足を作成するか?になります。
例えば5分足が作りたければ、ここでは5を入力します。
1時間足であれば60を入力します。
作りたい時間足の値を入力したらOKをクリックします。
(今回の例では豪円5分足を作りたいので5を入力します)
MT4を再起動して、豪円5分足チャートを表示すると1分足と同様に2005年まで遡ることができるようになりました。

他の時間足データを一気に作る
先ほどご紹介したPeriod Converterを使うやり方では1回で1つの時間足しか作れません。
インポートした1分足データを使って、5分足から月足まで全部の上位足を作ろうとすると時間と手間がかかってしまいます。
そこで、全部一気にまとめて上位足を作ってくれるスクリプト「PeriodConverterAllTimeframes」をご紹介します。
スクリプトフォルダ内に入れてください。
使い方は前述のPeriodConverterと同じです。
PeriodConverterAllTimeframesをMT4にインストール後、1分足データをインポートしたチャート(今回の例では豪円1分足チャート)にドラッグアンドドロップします。
以下のようなパラメーター設定が出ます。

ここでは1分足データを用いて日足、週足、月足のヒストリカルデータも作るかどうかを選択します。falseにすると作られません。
4時間足以下の時間足は作る/作らないの選択肢はなく、全て自動で作られます。
OKをクリックすると、各時間足のヒストリカルデータが作られます。
進捗がポップアップで表示されて、完了したら「Finished」の表示が出ます。

これで他の時間足チャートも完成しました。
試に1時間足チャートを開いて一番古い足を見ると、しっかりと2005年からになっています。

このように、1分足データさえMT4にインポートしてやれば、あとは簡単に5分足以上の上位足を作成することができます。
これで作成したヒストリカルデータを用いてEAをバックテストすると、「不整合チャートエラーが0、モデリング品質90%」の検証結果が得られます。