案外知られていない、MT4添付スクリプト「PeriodConverter」のバグ(正しくは制約)
MT4に添付されているスクリプト「PeriodConverter」は、主に1分足から上位時間足を作成するために使われています。
このスクリプトはパラメータ「Period multiplier factor」の設定を必要としますが、この設定を省き、5分足~月足まで一度に生成する「Period_ConverterALL」や「all_period_converter」などの派生スクリプトも多数公開されています。
しかし、これら「PeriodConverter」と派生スクリプトにバグ(正しくは制約)があることは、案外知られていません。
それにはまず、MT4添付スクリプト「PeriodConverter」の目的を理解する必要があります。
「PeriodConverter」の本来の目的は、オンラインのチャートに常駐させて、パラメータで指定した倍率の上位時間足をリアルタイムで生成していくものです。
ですので、オフラインチャートの5分足~月足を生成して終わり、という使い方は、スクリプトの本来の目的から外れています。
この弊害がどこに現れるかというと、最新時間足の生成が行われない問題と、週足・月足のOpen時間が正しく設定されない問題が発生します。
「PeriodConverter」や派生スクリプトで、オフラインチャート1分足から上位時間足を生成した場合、下図のようになります。

どこが間違っているか分かりますか?
まず、1分足の終了が23時45分ですので、5分足と15分足の23時45分にも足が生成されているべきですが、生成されていません。
次に、週足の差出人(開始日時)が2005年1月6日になっていますが、この日は木曜日です。
週足は日曜日から始まりますので、本来の週足は2005年1月9日(日)から始まります。
月足も同様で、本来は2005年1月1日から始まります。
よって、下図が正しいバー生成結果となります。

(ForexStudioのDatacenterを使って出力したヒストリカルデータ)
MTF系のインジケーターやEAでは、週足を参照しているケースもあります。
MTF系ロジックのバックテストを行う際、PeriodConverterや派生スクリプトで生成したヒストリカルデータでは、正しい週足が生成されていないことを認識しておきましょう。
このスクリプトはパラメータ「Period multiplier factor」の設定を必要としますが、この設定を省き、5分足~月足まで一度に生成する「Period_ConverterALL」や「all_period_converter」などの派生スクリプトも多数公開されています。
しかし、これら「PeriodConverter」と派生スクリプトにバグ(正しくは制約)があることは、案外知られていません。
それにはまず、MT4添付スクリプト「PeriodConverter」の目的を理解する必要があります。
「PeriodConverter」の本来の目的は、オンラインのチャートに常駐させて、パラメータで指定した倍率の上位時間足をリアルタイムで生成していくものです。
ですので、オフラインチャートの5分足~月足を生成して終わり、という使い方は、スクリプトの本来の目的から外れています。
この弊害がどこに現れるかというと、最新時間足の生成が行われない問題と、週足・月足のOpen時間が正しく設定されない問題が発生します。
「PeriodConverter」や派生スクリプトで、オフラインチャート1分足から上位時間足を生成した場合、下図のようになります。

どこが間違っているか分かりますか?
まず、1分足の終了が23時45分ですので、5分足と15分足の23時45分にも足が生成されているべきですが、生成されていません。
次に、週足の差出人(開始日時)が2005年1月6日になっていますが、この日は木曜日です。
週足は日曜日から始まりますので、本来の週足は2005年1月9日(日)から始まります。
月足も同様で、本来は2005年1月1日から始まります。
よって、下図が正しいバー生成結果となります。

(ForexStudioのDatacenterを使って出力したヒストリカルデータ)
MTF系のインジケーターやEAでは、週足を参照しているケースもあります。
MTF系ロジックのバックテストを行う際、PeriodConverterや派生スクリプトで生成したヒストリカルデータでは、正しい週足が生成されていないことを認識しておきましょう。
テーマ : FX(外国為替証拠金取引)
ジャンル : 株式・投資・マネー