
【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点。
本日はここまで。良い所の詳細は次の記事にて紹介致します。