恥は/dev/nullへ by 初心者

プログラミング素人がのろのろと学んだことをつづっています♪

ヒストリカルデータのインポートとデータ生成(MT4)

EAのバックテストをするために自分が使用している業者のヒストリカルデータをインポートしたのですが、手順を忘れてしまいそうなので、メモ代わりに作業内容を残しておくことにしました。

 

通常は1分足のヒストリカルデータが配布されていると思うので、それを前提にこの記事は書かれています。

 

ヒストリカルデータのインポート

f:id:philojuan:20201102082941p:plain

「ツール」→「ヒストリーセンター」を開きます。

通貨ペアを選択し、「1分足(M1)」をダブルクリックします。

「インポート」ボタンをクリックします。

 

f:id:philojuan:20201102083106p:plain

「ファイル名」枠の右隣にある「参照」ボタンを使って、インポートするファイルを選択します。

 

f:id:philojuan:20201102083230p:plain

選択したファイルのデータが画面に表示されたら「OK」ボタンをクリック。
(これを取り込むファイルの数だけ繰り返します。)

 

これでヒストリカルデータの取り込みは完了です。

 

1分足以外のヒストリカルデータを生成する

現時点では、1分足のデータしか存在しません(5分足や15分足など、他の時間軸のデータがありません)。このため、5分足や1時間足などでバックテストをしようにもできない状況です。そこで、1分足以外のヒストリカルデータを生成します。

 

データを生成するには、通常、MT4の「スクリプト」の中にある「Period Coverter」を使いますが、Period Converter All Timeframesというスクリプトを使えば、5分足から月足のデータを一度に生成できるので便利です。

<Period Converter All Timeframesのある場所>
https://www.mql5.com/ja/code/19839

 

Period Converter All Timeframesを実行する前に、「ツール」→「オプション」→「チャート」の中にある次の2項目をチェックしておく必要があります。

・ヒストリー内の最大バー数
・チャートの最大バー数

これらの数値が小さいとデータの生成が上手く行かないことがあるからです。
ネット上の情報を見ていると、2147483647にしている人が多いようでした(MT4のint型の最大値?)。

 

この数値を変更した後、一度MT4を再起動します。
再起動しないと、変更後の数値が反映しないようです。

 

MT4を再起動したら、

(1)データを作成したい通貨ペアのチャートを開き
(2)チャートの時間軸をM1(1分足)にして
(3)Period Converter All Timeframesスクリプトを実行します。

 

f:id:philojuan:20210922023255p:plain

デフォルトでは日足から月足までのデータを生成しない設定になっています。もし、これらも生成したい場合はfalseとなっている部分をtrueに変更する必要があります。


スクリプトを実行し、データの生成が終わったら、MT4を再起動します。

「ヒストリーセンター」を開くと、1分足以外のヒストリカルデータが生成されていることを確認できるはずです。

 

データの生成に失敗する場合は、データ生成が失敗している時間足のヒストリカルデータを消去して(←間違っても、1分足のデータは消去しないこと)、もう一度Period Converter All Timeframesスクリプトを実行します。

 

ヒストリカルデータの場所については、MT4に付属しているMQL4 ReferenceのFileOpenHistory関数の項目を読むと以下のように書かれています。

history directory (terminal_directory\history\server_name) or in its subfolders

 

 チャートの最大バー数の注意点

ネット情報によると、「チャートの最大バー数」を2147483647にしたままで複数のチャートを開くとMT4が凄く重くなったり固まったりするケースがあるそうです。

自分の環境ではそういうことは起きていないのですが、もしそのような状況になった場合は、もっと少ない数値にした方が良さそうです。

 

大雑把に言うと、5分足を1年分表示する場合、10万本くらいあれば足ります。

よって、過去10年分のデータを5分足チャートに表示する場合、100万本くらいを「チャートの最大バー数」にセットしておくことになります。

 

一応、5分足1年分で10万本くらいと述べた理由を書いておきます。
1年間は525600分です。これを5で割ると105120ですから、1年分の5分足を表示する場合、チャートの本数は105120本です。ただし、相場が動いていない時間(土日など)が存在するので、実際には105120本より少なくなります。


というわけで、1年分の5分足をチャートに表示するのなら、「チャートの最大バー数」に105120を指定しておけば足ります。