2018年11月6日火曜日

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

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

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

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

ツール → オプション → チャート
以下に問題を再現してみた結果を載せておきます。 「チャートの最大バー数」は上記スクリーンショットのように 800 を使用しました。 ### ヒストリーデータを確認する まずは現在のヒストリーデータを確認します。 ファイル → オフラインチャート
全時間枠で 1971年からのデータがあることが確認できます。 ### PeriodConverter を適用する M1 のチャートを開き、PeriodConverter を適用します。 PeriodConverter → 右クリック → チャートで実行 (ダブルクリックやドラッグ&ドロップでも良い)
再生成する時間枠を指定。今回は 5 にしました。
### もう一度ヒストリーデータを確認すると… 以下のように、M5 だけ、直近数時間分になってしまいました「終了」が最初のスクリーンショットと異なっている点はご容赦を
なお、この状態でストラテジーテスターを実行すると、11/5 4:50 以降しか実行されません。(M5 をターゲットにした場合) ### 修復 データが無くなったとはいえ、M1 は残っているので修復可能です。 先に書いたように、原因は「チャートの最大バー数」が小さいことなので、「チャートの最大バー数」を十分に大きくします。 なお、この値は **MetaTrader を再起動しないと反映されない** ので注意してください。 > 参考 > > [[MT4] 「チャートの最大バー数」は何を意味するのか | Strategy of C](https://strategyofc.blogspot.com/2018/10/mt4.html) ツール → オプション → チャート
この状態で再度 `PeriodConverter` を実行すると、M5 が再生成されます。 ただし、この設定のまま複数チャートを開いたりすると、すごく重くなります。 場合によっては完全に固まるということもありますので、ご注意ください。