【MT4】経済指標取得コード

無料

Description

■商品概要

webサイト上の経済指標を取得することができるmql4のソースコードです。
以下のwebサイトの経済指標を取得することができます。

外貨ex


マネーパートナーズ


みんかぶ


マネックス

経済情報は「wininet.dll」というWindowsのAPIを使用して取得しています。

WebRequest関数は使用していないため、インジケーターとEAのどちらでも使用することが可能です。

■使い方

1.ソースコードのダウンロード

本商品を注文すると、2つのファイルをダウンロードすることができます。

経済指標をインジケーターに利用したい場合は「インジケーター用」を、EAに利用したい場合は「EA用」をクリックしてmql4ファイルをダウンロードしてください。

2.mql4ファイルのインストール

ダウンロードしたmql4ファイルを、「インジケーター用」の場合はIndicatorフォルダに、「EA用」の場合はExpertsフォルダに格納し、メタエディターで開きコンパイルしてください。

コンパイル後にMT4のデータフォルダからコンパイルしたex4ファイルをチャートにセットして、経済指標が表示されることを確認してください。

また、本プログラムはwininet.dllを使用しているため、チャートにツールをセットした際に出現するウィンドウで、「DLLの使用を許可する」にチェックを入れることを忘れないようにしてください。


3.パラメータについて

パラメータ設定からは、「取得したい経済指標のwebサイト」「取得したい期間」を選択することができます。

■コードの解説とカスタマイズ方法

デフォルトのソースコードでは各webサイトから、「発表日時」「重要度(☆)」「指標タイトル」の3つの情報を取得して、comment関数で出力しています。

このソースコードをカスタマイズすることで、「経済指標発表時にEAのエントリーを停止する」「経済指標発表時に通知を送信する」といったツールを作成することができます。ソースコードは1000行近くあるため、経済指標を利用するための必要最低限の解説のみ行います。

・構造体について

取得した経済指標は構造体として管理します。

struct NewsInfoStruct
{
   NewsInfoStruct()
   {
      time = 0;
      star = NewsStar_NONE;
      title = "";
   }
   datetime time;
   EnumNewsStar star;
   string title;
   string GetAllInfo()
   {
      return (title == "" ? "" : (TimeToStr(time, TIME_DATE | TIME_MINUTES) + "   " + (string)star + "   " + title));
   }
   string GetTitle()
   {
      return (title == "" ? "" : title);
   }
   string GetTime()
   {
      return (title == "" ? "" : TimeToStr(time, TIME_DATE | TIME_MINUTES));
   }
   string GetStar()
   {
      return (title == "" ? "" : (string)star);
   }
};

NewsInfoStruct構造体は3つのメンバ変数を持ちます。
取得した経済指標の時間、重要度、タイトル本文の3つの情報をそれぞれのメンバ変数に格納するようにしています。

datetime time;        //経済指標の発表時間
EnumNewsStar star;    //経済指標の重要度(☆)
string title;         //経済指標のタイトル

それぞれのメンバ変数の情報を取得することができる関数を4つ用意しています。

   string GetAllInfo()//3つの情報を連結して返す
   {
      return (title == "" ? "" : (TimeToStr(time, TIME_DATE | TIME_MINUTES) + "   " + (string)star + "   " + title));
   }
   string GetTitle()//ニュースのタイトルを返す
   {
      return (title == "" ? "" : title);
   }
   string GetTime()//ニュースの発表時間を返す
   {
      return (title == "" ? "" : TimeToStr(time, TIME_DATE | TIME_MINUTES));
   }
   string GetStar()//ニュースの重要度(☆)を返す
   {
      return (title == "" ? "" : (string)star);
   }

・経済情報の取得

mal4のフィールドにて、この構造体の配列を宣言しています。

NewsInfoStruct g_lastNewsInfos[];  //構造体の配列を宣言

そこで、WebRequest_News関数を呼び出すと、g_lastNewsInfosという配列にリアルタイムの経済指標情報が格納されます。
この関数を呼び出すとwebサイトと通信を行います。この関数が頻繁に実行されないように注意してください。

WebRequest_News();  //この関数を呼び出すことで、経済情報が配列g_lastNewsInfosに格納される

・使い方の例

例えば、以下のように使用することでチャートにコメントとして経済指標を表示することができます。

int OnInit()
  {
   WebRequest_News();  //g_lastNewsInfos配列に経済情報を格納する
   string News = "";
   for(int i = 0; i < ArraySize(g_lastNewsInfos) ; i++){    //格納したニュースの数だけfor文を回す
      News = News + g_lastNewsInfos[i].GetAllInfo() + "\n";  //GetAllInfo関数でニュースの詳細を取得する
   }
   Comment(News);    //取得した情報をComment関数で表示する
   return(INIT_SUCCEEDED);
  }

同様に、「GetTime関数で取得した時間に、GetStar関数で取得した重要度が3以上のときにEAの動作を停止する」といったプログラムを書くことで、経済指標発表時のEA停止機能を実装することができます。

■注意点

短期間に何度も経済情報を取得することはサーバーに負荷をかけることになり、IPがバンされる可能性があります。
OnTimer関数などを使用して多くても数分おきに経済情報を取得するようにしてください。

本プログラムではwininet.dllを使用して取得しいたHTMLを文字列として解析することで経済指標を取得しています。配信元のwebページのフォーマットやUIなどが変更されると、それに伴い経済指標が正しく取得できなくなる可能性があります。

本プログラムによって発生したあらゆるトラブルにおいて一切の責任を負いかねます。あらかじめご了承ください。