2018年11月6日火曜日

[MT4] PeriodConverter を使うとヒストリーデータが消えることがある

MetaTrader には PeriodConverter というスクリプトが標準で付属しています。 この PeriodConverter は M1 のデータ等から他の時間足のデータを再生成する際に使用します。

便利に使っていたのですが、ある日、再生成したヒストリーデータが直近数時間分になってしまう現象がおこりました。 M1 のデータは 1971年から1あるのにも関わらずです。

先に原因を書いておくと、「チャートの最大バー数」が小さい場合、このような現象が起こります。

ツール → オプション → チャート

以下に問題を再現してみた結果を載せておきます。 「チャートの最大バー数」は上記スクリーンショットのように 800 を使用しました。

ヒストリーデータを確認する

まずは現在のヒストリーデータを確認します。

ファイル → オフラインチャート

全時間枠で 1971年からのデータがあることが確認できます。

PeriodConverter を適用する

M1 のチャートを開き、PeriodConverter を適用します。

PeriodConverter → 右クリック → チャートで実行 (ダブルクリックやドラッグ&ドロップでも良い)

再生成する時間枠を指定。今回は 5 にしました。

もう一度ヒストリーデータを確認すると…

以下のように、M5 だけ、直近数時間分になってしまいました2

なお、この状態でストラテジーテスターを実行すると、11/5 4:50 以降しか実行されません。(M5 をターゲットにした場合)

修復

データが無くなったとはいえ、M1 は残っているので修復可能です。

先に書いたように、原因は「チャートの最大バー数」が小さいことなので、「チャートの最大バー数」を十分に大きくします。 なお、この値は MetaTrader を再起動しないと反映されない ので注意してください。

参考

[MT4] 「チャートの最大バー数」は何を意味するのか | Strategy of C

ツール → オプション → チャート

この状態で再度 PeriodConverter を実行すると、M5 が再生成されます。

ただし、この設定のまま複数チャートを開いたりすると、すごく重くなります。 場合によっては完全に固まるということもありますので、ご注意ください。

  1. MetaQuotes 提供のもの。1900年代のデータは飛び飛びであまり使いものにならない。 
  2. 「終了」が最初のスクリーンショットと異なっている点はご容赦を 
?