どうも、FXトレーダー兼システムエンジニアのナオトです。
ゴールドのEAに、経済指標の前後は新しく入らない、という機能を足したときの話です。
過去のデータで効き目を測ろうとして、時刻のずれに気づきました。
MT5には、経済指標の予定と結果が入ったカレンダーが内蔵されています。
CalendarValueHistory という関数を使うと、過去の指標の時刻も、EAの中から読めます。
これを使って、指標の発表の前後で、ゴールドがどれだけ動いたかを数えました。
確かめに使ったのは、米雇用統計です。
米雇用統計は、いつもニューヨーク時間の朝8時30分に発表されます。サーバーの時刻に直すと、夏も冬も、いつも同じ時刻に並ぶはずです。
ところが、カレンダーの時刻は、夏の発表が15時30分、冬の発表が16時30分と、2つに分かれていました。
冬だけ1時間ずれていたんです。
原因は、時差の持ち方でした。
使った業者のサーバーは、冬はGMTプラス2時間、夏はプラス3時間で動いています。値動きのデータの時刻は、そのときの時差で記録されています。
一方、カレンダーの関数が返す時刻は、呼び出した今の時差で、過去の分まで全部そろえて返していました。
測ったのは夏の時期だったので、冬の指標まで夏の時差で並んでいたわけです。
本当にそうなのか、月ごとに確かめました。
米国の大きな指標で、時刻をそのまま使った場合と、1時間引いた場合のどちらで発表のあとの値幅が大きくなるかを、56か月分並べました。
4月から10月は、そのままのほうが大きい。11月から3月は、1時間引いたほうが大きい。
56か月すべてが、ヨーロッパの夏時間の切り替えの日を境に、この形にそろいました。
直し方は、カレンダーの時刻を夏の時差で書かれているものとみなし、ヨーロッパの夏時間の外なら1時間引く、です。
直す前と後で、米雇用統計59回の、発表後10分の値幅の中央値を比べました。
直す前は9.79ドル、直したあとは15.17ドル。直前の10分と比べた倍率は、2.03倍から4.08倍になりました。
直す前は、冬の分だけ、発表から1時間たった、もう落ち着いた時間を測っていたことになります。
このずれが出るのは、過去を読むときだけです。
いま動いているEAが、今週や来週の予定を読む分には、今の時差のままで合っています。
だから、テスターで回すときは、カレンダーの関数を直接使わず、時刻を直した予定のファイルを読ませる形にしました。
過去の指標で何かを測るときは、時刻が合っているかを、発表の時刻が決まっている指標で一度確かめてみてください。
経済指標をからめたEAやインジケーターの制作、過去検証のご依頼も受けています。
最後までお読みいただき、ありがとうございました。