EAで指標発表等を回避するには?

・・・と、どなたかに聞かれていたような気がするので方針だけ書いておきます。

1.ネット上で経済指標発表時刻一覧を公開しているサイトを探す。
2.定期的に自動取得して、EAに読み込む。

公開サイトとしては、
ForexFactoryhttp://www.forexfactory.com/ff_calendar_thisweek.xml や、
DailyFXhttp://www.dailyfx.com/files/Calendar-10-21-2012.csv (週単位でファイル名が変わります)
が知られています。

EAからデータ取得するとしたら、WinInet.mqh のようなライブラリを使うと

↑こんな感じで、↓のCSVデータが取得できます。

DailyFXのデータはCSVなので、MQL4では簡単に読めます。(ただし、文字コードUnicodeなので一部文字化けします。)
DailyFXの指標を表示させるインジケータがここにあるので、そのあたりを参考にすればよいと思います。


一方、ForexFactory のデータは、FFCal.mq4 が対応していて、EA から直接 iCustom 経由で直前直後にどのインパクトの指標発表があるのかを1つだけ取得できます。

↑EAでの書き方はこれだけです。一つのMT4内で、複数のEAで使う場合は、iCustom よりもグローバル環境変数を用いて情報共有させた方が良いかもしれません。



問題は、、、FFCal.mq4 自体があまり改良されていない点で、例えば、「SetIndexStyle(1, DRAW_NONE);//←本来は 2 」みたいなバグも相変わらず放置されています。
一定時間前に鳴るように Alert の設定をしても、希なタイミングで鳴らないこともあります。EAから呼ばれる際に、毎回、XMLファイルを読み取って、構文解析する処理も非効率です。(一度読んだ結果をメモリ上に保持しておけば良いはずなのに...)



指標インジケータ自体は、凝ったものがいくつかあるので作り込む気はないのですが、最低限のカスタマイズをしたものをこちらに用意しました。

・縦ライン表示機能の削除
・Alertは少し遅れても確実に鳴るように
・3個以上の指標時刻を表示可能に
XMLのデータは解析結果を保持
・既知の指標名は日本語表示可能に

などの変更を行っています。指標ボットを作りたい人向けの下地になれば良いかなと思ってます。

↑二段表示

↑日本語表示(!)


日本語表示は、同梱のCSVファイルによる置換をしているだけなので、適宜、正しい訳語に修正してお使いください。