メインコンテンツへスキップ
見出し画像

【MT5】経済指標カレンダー機能を使ってみよう①(思ったんと違う・・・)

    MT5では、経済指標カレンダー情報を標準機能で利用可能です。
    MQL5で経済指標カレンダーを利用する場合の関数は以下の通り。

    結論から述べると

    😱思ってたんと違う!

    ってなる方が多いと思います。

    理由は以下の2つ。
    ①バックテストでは上記の経済指標カレンダー関数が使えない!
    ②経済指標日時の使い勝手が微妙!


    ①バックテストでは上記の経済指標カレンダー関数が使えない!

    これマジか!ってなりますが、CalendarValueHistory関数など、バックテストでは動きません。EA開発者目線だと、それ違う・・・💦となります。

    多くの開発者がMT4では、経済指標カレンダーをどこかのサイトからスクレイピングして取得し、DBやテキストに出力したものをEAで使用してきました。MT5になってDBやテキストへ出力して管理する手間がなくなると思いきや、そんなことはありませんでした・・・💦

    MT5(MQL5)の仕様に準拠すると
    ・バックテスト➡️➊事前に出力したDBやテキストを使用
    ・フォワード ➡️❷標準の経済カレンダー関数で取得
    となるのでしょうが、こんな面倒臭い使い分けするか!となります。
    多くのEA開発者がこれまで通りの➊を採用するはずです。
    ※開発者としてはバックテストもフォワードも同じ仕様で動くようにしたい

    メタクオーツ社はMT5の経済指標系の仕様のつめが甘かったと思います。何かのタイミングで経済指標カレンダーデータをローカルに全てダウンロードしておく仕様にすべきだったと思います。そうするとFX業者のサーバと都度通信は発生しないので、バックテストでも経済指標関数を業者のサーバに負荷をかけず使用できたはずです。今後の仕様変更に期待したいです。
    ※2007年から2026年8月までの全データは約50MBほど
    ※バックテストデータと同じ仕様にすべきだった(ローカルに無ければ自動ダウンロード)


    ②経済指標日時の使い勝手が微妙!

    開発者泣かせなのが取得したデータの日時。

    「MqlCalendarValue」構造体の「time」に経済指標の日時が設定されるのですが、この取得され方(仕様)も、開発者の『こうして欲しい!』『一般的にこうだろ!』というものには、残念ながらなっていません。

    上記の記事でMT4・MT5の時間は、どこの国の時間でもなく『FX時間』であることをお話しました。

    一般的なEA開発者なら、取得する経済指標の日時は『FX時間』であって欲しいと思うはずです。
    では仕様はどうなっているか?
    FX業者のサーバー時間に準拠する仕様だそうです。
    「それなら殆どの業者がFX時間を採用してるのでOKじゃね!?」
    私もそう思ったんですが、なんか妙な仕様になってるのです・・・。

    この記事を書いてるのが6/28で夏時間です。
    夏時間の時に過去経済指標データを取得すると、経済指標発表当時が冬時間の場合でも夏時間で取得されます(つまり当時の経済指標時間ではない)。
    なんやねんこの仕様・・・💦

    ややこしいですが整理すると

    • 現時点が夏時間の時、冬時間に発表された(される)経済指標日時を取得すると時間がおかしい(※変換が必要)

    • 現時点が冬時間の時、夏時間に発表された(される)経済指標日時を取得すると時間がおかしい(※変換が必要)

    MQL5を使ってて思うのですが、メタクオーツ社の仕様って所々で「それダメ」ってのが多いんですよね💦


    良い所はないの?

    駄目出しばかりになってしまいましたが、もちろん良い所もあります。
    それは

    ①経済指標だけでなく、休日・イベントまで網羅されている

    ②要人発言まで網羅されている

    ③一気通貫の検証が可能

    大きくはこの3点。
    本日はここまで。良い所の詳細は次の記事にて紹介致します。

    あなたへのおすすめ