恥は/dev/nullへ by 初心者

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

ヒストリカルデータのインポートと5分足データの生成

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

 

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

 

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

f:id:philojuan:20201102082941p:plain

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

通貨ペアを選択し、「1分足(M1)」を選びます。

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

 

f:id:philojuan:20201102083106p:plain

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

 

f:id:philojuan:20201102083230p:plain

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

 

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

 

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

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

 

5分足データを生成するには「スクリプト」の中にある「Period Converter」というスクリプトを使います。

f:id:philojuan:20201102083412p:plain

 

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

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

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

 

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

MT4を再起動したら、PeriodConverterスクリプトを実行します。

 

f:id:philojuan:20201102083714p:plain

実行時のパラメーターは、5分足を生成しようとしているので「5」です。

スクリプトが終了すると、5分足のヒストリカルデータが生成されています。

 

ヒストリカルデータの場所については、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を指定しておけば足ります。