CalendarCountryById
IDによって国の説明を取得します。
bool  CalendarCountryById(  const long          country_id,      MqlCalendarCountry&  country          );  | 
パラメータ
country_id
[in]  Country ID (ISO 3166-1).
country
[out] 国の説明を受け取るためのMqlCalendarCountry型変数
戻り値
- 4001 – ERR_INTERNAL_ERROR(一般的なランタイムエラー)
 - 5402 – ERR_CALENDAR_NO_DATA(無効な国)
 - 5401 – ERR_CALENDAR_TIMEOUT(リクエスト制限時間の超過)
 
例:
//+——————————————————————+  //| スクリプトプログラム開始関数                                              |  //+——————————————————————+  void OnStart()  {  //— 経済指標カレンダーから国のリストを取得する  MqlCalendarCountry countries[];  int count=CalendarCountries(countries);  //— 結果を確認する  if(count==0)  PrintFormat(“CalendarCountries() returned 0!Error %d”,GetLastError());  //— 2国以上が存在する場合  if(count>=2)  {  MqlCalendarCountry country;  //— IDによって国の説明を取得する  if(CalendarCountryById(countries[1].id, country))  {  //— 国の説明を準備する  string descr=“id = “+IntegerToString(country.id)+“\n”;  descr+=(“name = “ + country.name+“\n”);  descr+=(“code = “ + country.code+“\n”);  descr+=(“currency = “ + country.currency+“\n”);  descr+=(“currency_symbol = “ + country.currency_symbol+“\n”);  descr+=(“url_name = “ + country.url_name);  //— 国の説明を表示する  Print(descr);  }  else  Print(“CalendarCountryById() failed. Error “,GetLastError());  }  //—  }  /*  結果:  id = 999  name = European Union  code = EU  currency = EUR  currency_symbol = €  url_name = european-union  */  | 
参照
CalendarCountries、CalendarEventByCountry
CalendarEventById
IDによってイベントの説明を取得します。
bool  CalendarEventById(  ulong                event_id,      MqlCalendarEvent&    event          );  | 
パラメータ
event_id
[in] イベントID
event
[out] イベントの説明を受け取るためのMqlCalendarEvent型の変数
戻り値
- 4001 – ERR_INTERNAL_ERROR(一般的なランタイムエラー)
 - 5402 – ERR_CALENDAR_NO_DATA(無効な国)
 - 5401 – ERR_CALENDAR_TIMEOUT(リクエスト制限時間の超過)
 
例:
//+——————————————————————+  //| スクリプトプログラム開始関数                                              |  //+——————————————————————+  void OnStart()  {  //— ドイツの国コード(ISO 3166-1 Alpha-2)  string germany_code=“DE”;  //— ドイツのイベントを取得する  MqlCalendarEvent events[];  int events_count=CalendarEventByCountry(germany_code,events);  //— ドイツのイベントを操作ログに表示する  if(events_count>0)  {  PrintFormat(“Germany events: %d”,events_count);  ArrayPrint(events);  }  else  {  PrintFormat(“Failed to receive events for the country code %s, error %d”,  germany_code,GetLastError());  //— スクリプトが完了した  return;  }  //— events[]配列の最後のイベントの説明を取得する  MqlCalendarEvent event;  ulong event_id=events[events_count-1].id;  if(CalendarEventById(event_id,event))  {  MqlCalendarCountry country;  CalendarCountryById(event.country_id,country);  PrintFormat(“Event description with event_id=%d received”,event_id);  PrintFormat(“Country: %s (country code = %d)”,country.name,event.country_id);  PrintFormat(“Event name: %s”,event.name);  PrintFormat(“Event code: %s”,event.event_code);  PrintFormat(“Event importance: %s”,EnumToString((ENUM_CALENDAR_EVENT_IMPORTANCE)event.importance));  PrintFormat(“Event type: %s”,EnumToString((ENUM_CALENDAR_EVENT_TYPE)event.type));  PrintFormat(“Event sector: %s”,EnumToString((ENUM_CALENDAR_EVENT_SECTOR)event.sector));  PrintFormat(“Event frequency: %s”,EnumToString((ENUM_CALENDAR_EVENT_FREQUENCY)event.frequency));  PrintFormat(“Event release mode: %s”,EnumToString((ENUM_CALENDAR_EVENT_TIMEMODE)event.time_mode));  PrintFormat(“Event measurement unit: %s”,EnumToString((ENUM_CALENDAR_EVENT_UNIT)event.unit));  PrintFormat(“Number of decimal places: %d”,event.digits);  PrintFormat(“Event multiplier: %s”,EnumToString((ENUM_CALENDAR_EVENT_MULTIPLIER)event.multiplier));  PrintFormat(“Source URL: %s”,event.source_url);  }  else  PrintFormat(“Failed to get event description for event_d=%s, error %d”,  event_id,GetLastError());  }  /*  結果:  Germany events: 50  [id] [type] [sector] [frequency] [time_mode] [country_id] [unit] [importance] [multiplier] [digits]                                [source_url]                       [event_code]                             [name] [reserved]  [ 0] 276010001      1        6           2           0          276      1            1            0        1 “https://www.destatis.de/EN/Homepage.html” “exports-mm”                       “Exports m/m”                               0  [ 1] 276010002      1        6           2           0          276      1            1            0        1 “https://www.destatis.de/EN/Homepage.html” “imports-mm”                       “Imports m/m”                               0  [ 2] 276010003      1        4           2           0          276      1            1            0        1 “https://www.destatis.de/EN/Homepage.html” “import-price-index-mm”           “Import Price Index m/m”                    0  [ 3] 276010004      1        4           2           0          276      1            1            0        1 “https://www.destatis.de/EN/Homepage.html” “import-price-index-yy”           “Import Price Index y/y”                    0  ….  [47] 276500001      1        8           2           0          276      0            2            0        1 “https://www.markiteconomics.com”           “markit-manufacturing-pmi”         “Markit Manufacturing PMI”                  0  [48] 276500002      1        8           2           0          276      0            2            0        1 “https://www.markiteconomics.com”           “markit-services-pmi”             “Markit Services PMI”                       0  [49] 276500003      1        8           2           0          276      0            2            0        1 “https://www.markiteconomics.com”           “markit-composite-pmi”             “Markit Composite PMI”                      0  Event description with event_id=276500003 received  Country: Germany (country code = 276)  Event name: Markit Composite PMI  Event code: markit-composite-pmi  Event importance: CALENDAR_IMPORTANCE_MODERATE  Event type: CALENDAR_TYPE_INDICATOR  Event sector: CALENDAR_SECTOR_BUSINESS  Event frequency: CALENDAR_FREQUENCY_MONTH  Event release mode: CALENDAR_TIMEMODE_DATETIME  Event measurement unit: CALENDAR_UNIT_NONE  Number of decimal places: 1  Value multiplier: CALENDAR_MULTIPLIER_NONE  Source URL: https://www.markiteconomics.com  */  | 
参照
CalendarEventByCountry、CalendarEventByCurrency、 CalendarValueById
CalendarValueById
IDによってイベントの値を取得します。
bool  CalendarValueById(  ulong                value_id,      MqlCalendarValue&    value          );  | 
パラメータ
value_id
[in] イベント値ID
value
[out] イベントの説明を受け取るためのMqlCalendarValue型の変数
戻り値
- 4001 – ERR_INTERNAL_ERROR(一般的なランタイムエラー)
 - 5402 – ERR_CALENDAR_NO_DATA(無効な国)
 - 5401 – ERR_CALENDAR_TIMEOUT(リクエスト制限時間の超過)
 
 
例:
//+——————————————————————+  //| スクリプトプログラム開始関数                                              |  //+——————————————————————+  void OnStart()  {  //— 日本の国コード(ISO 3166-1 Alpha-2)  string japan_code=“JP”;  //— イベントを取得する期間の境界を設定する  datetime date_from=D’01.01.2018′; // 2018のすべてのイベントを取得する  datetime date_to=0;               // 0はすべての既知イベント(今後起こるものを含む)   //— 日本のイベント値の配列を取得する  MqlCalendarValue values[];  int values_count=CalendarValueHistory(values,date_from,date_to,japan_code);  //— 検知されたイベント値とともに移動する  if(values_count>0)  {  PrintFormat(“Number of values for Japan events: %d”,values_count);  //— すべての「空の」値を削除する(actual_value==-9223372036854775808)         for(int i=values_count-1;i>=0;i–)  {  if(values[i].actual_value==-9223372036854775808)  ArrayRemove(values,i,1);  }  PrintFormat(“Number of values after deleting empty ones: %d”,ArraySize(values));  }  else  {  PrintFormat(“Failed to receive events for the country code %s, error %d”,  japan_code,GetLastError());  //— スクリプトが完了した  return;  }  //— values[]配列に10以上の値を残さない  if(ArraySize(values)>10)  {  PrintFormat(“Reduce the list of values to 10 and display them”);  ArrayRemove(values,0,ArraySize(values)-10);  }  ArrayPrint(values); //— 既知のvalue_idに基づいてイベント値の説明を取得する方法を表示する  for(int i=0;i<ArraySize(values);i++)  {  MqlCalendarValue value;  CalendarValueById(values[i].id,value);  PrintFormat(“%d: value_id=%d value=%d impact=%s”,  i,values[i].id,value.actual_value,EnumToString(ENUM_CALENDAR_EVENT_IMPACT(value.impact_type)));  }  //—  }  /*  結果:  Number of values for Japan events: 1734  Number of values after deleting empty ones: 1017  Reduce the list of values to 10 and display them  [id] [event_id]              [time]            [period] [revision] [actual_value] [prev_value] [revised_prev_value] [forecast_value] [impact_type] [reserved]  [0] 56500  392030004 2019.03.28 23:30:00 2019.03.01 00:00:00          0         900000       600000 -9223372036854775808           500000             1          0  [1] 56501  392030005 2019.03.28 23:30:00 2019.03.01 00:00:00          0         700000       700000 -9223372036854775808           700000             0          0  [2] 56502  392030006 2019.03.28 23:30:00 2019.03.01 00:00:00          0        1100000      1100000 -9223372036854775808           900000             1          0  [3] 56544  392030007 2019.03.28 23:30:00 2019.02.01 00:00:00          0        2300000      2500000 -9223372036854775808          2200000             2          0  [4] 56556  392050002 2019.03.28 23:30:00 2019.02.01 00:00:00          0        1630000      1630000              1610000          1620000             1          0  [5] 55887  392020003 2019.03.28 23:50:00 2019.02.01 00:00:00          0         400000       600000 -9223372036854775808          1300000             2          0  [6] 55888  392020004 2019.03.28 23:50:00 2019.02.01 00:00:00          0       -1800000     -3300000 -9223372036854775808         -2000000             1          0  [7] 55889  392020002 2019.03.28 23:50:00 2019.02.01 00:00:00          0         200000     -2300000             -1800000           300000             2          0  [8] 55948  392020006 2019.03.28 23:50:00 2019.02.01 00:00:00          1        1400000     -3400000 -9223372036854775808          -300000             1          0  [9] 55949  392020007 2019.03.28 23:50:00 2019.02.01 00:00:00          1       -1000000       300000 -9223372036854775808          -100000             2          0  Display brief data on event values based on value_id  0: value_id=56500 value=900000 impact=CALENDAR_IMPACT_POSITIVE  1: value_id=56501 value=700000 impact=CALENDAR_IMPACT_NA  2: value_id=56502 value=1100000 impact=CALENDAR_IMPACT_POSITIVE  3: value_id=56544 value=2300000 impact=CALENDAR_IMPACT_NEGATIVE  4: value_id=56556 value=1630000 impact=CALENDAR_IMPACT_POSITIVE  5: value_id=55887 value=400000 impact=CALENDAR_IMPACT_NEGATIVE  6: value_id=55888 value=-1800000 impact=CALENDAR_IMPACT_POSITIVE  7: value_id=55889 value=200000 impact=CALENDAR_IMPACT_NEGATIVE  8: value_id=55948 value=1400000 impact=CALENDAR_IMPACT_POSITIVE  9: value_id=55949 value=-1000000 impact=CALENDAR_IMPACT_NEGATIVE  */  | 
参照
CalendarValueHistoryByEvent、CalendarValueHistory、 CalendarValueLastByEvent、CalendarValueLast
CalendarCountries
カレンダーで利用可能な国名の配列を取得します。
int  CalendarCountries(  MqlCalendarCountry& countries[]          );  | 
パラメータ
countries[]
[out] カレンダーの国の説明を受け取るためのMqlCalendarCountry型の配列
戻り値
- 4001 – ERR_INTERNAL_ERROR(一般的なランタイムエラー)
 - 5401 – ERR_CALENDAR_TIMEOUT(リクエスト制限時間の超過)
 - 5400 – ERR_CALENDAR_MORE_DATA(配列サイズはすべての国の説明を受け取るには不十分で、配列に収まるものだけが受信された)
 
 
例:
//+——————————————————————+  //| スクリプトプログラム開始関数                                              |  //+——————————————————————+  void OnStart()  {  //— 経済指標カレンダーから国のリストを取得する  MqlCalendarCountry countries[];  int count=CalendarCountries(countries);  //— 操作ログに配列を表示する  if(count>0)  ArrayPrint(countries);  else  PrintFormat(“CalendarCountries() returned 0!Error %d”,GetLastError());  /*  結果:  [id]           [name] [code] [currency] [currency_symbol]       [url_name] [reserved]  [ 0]    0 “Worldwide”     “WW”   “ALL”     “”               “worldwide”               0  [ 1]  999 “European Union” “EU”   “EUR”     “€”               “european-union”          0  [ 2]  840 “United States” “US”   “USD”     “$”               “united-states”           0  [ 3]  124 “Canada”         “CA”   “CAD”     “$”               “canada”                  0  [ 4]   36 “Australia”     “AU”   “AUD”     “$”               “australia”               0  [ 5]  554 “New Zealand”   “NZ”   “NZD”     “$”               “new-zealand”             0  [ 6]  392 “Japan”         “JP”   “JPY”     “Ґ”               “japan”                   0  [ 7]  156 “China”         “CN”   “CNY”     “Ґ”               “china”                   0  [ 8]  826 “United Kingdom” “GB”   “GBP”     “Ј”               “united-kingdom”          0  [ 9]  756 “Switzerland”   “CH”   “CHF”     “₣”               “switzerland”             0  [10]  276 “Germany”       “DE”   “EUR”     “€”               “germany”                 0  [11]  250 “France”         “FR”   “EUR”     “€”               “france”                  0  [12]  380 “Italy”         “IT”   “EUR”     “€”               “italy”                   0  [13]  724 “Spain”         “ES”   “EUR”     “€”               “spain”                   0  [14]   76 “Brazil”         “BR”   “BRL”     “R$”             “brazil”                  0  [15]  410 “South Korea”   “KR”   “KRW”     “₩”               “south-korea”             0  */  }  | 
参照
CalendarEventByCountry、CalendarCountryById
CalendarEventByCountry
指定された国コードでカレンダーで利用可能なすべてのイベントの説明の配列を取得します。
int  CalendarEventByCountry(  string               country_code,      MqlCalendarEvent&    events[]            );  | 
パラメータ
country_code
[in] 国コード名(ISO 3166-1 alpha-2)
events[]
[out] 指定された国の説明を受け取るためのMqlCalendarEvent型配列
戻り値
- 4001 – ERR_INTERNAL_ERROR(一般的なランタイムエラー)
 - 4004 – ERR_NOT_ENOUGH_MEMORY(メモリが操作完了に不充分)
 - 5401 – ERR_CALENDAR_TIMEOUT(リクエスト制限時間の超過)
 - ArrayResize()操作の実行エラー
 
例:
//+——————————————————————+  //| スクリプトプログラム開始関数                                              |  //+——————————————————————+  void OnStart()  {  //— EUの国コード(ISO 3166-1 Alpha-2)  string EU_code=“EU”;  //— EUイベントを取得する  MqlCalendarEvent events[];  int events_count=CalendarEventByCountry(EU_code,events);  //— EUイベントを操作ログに表示する  if(events_count>0)  {  PrintFormat(“EU events: %d”,events_count);  ArrayPrint(events);  }  //—  }  /*  結果:  EU events: 56  [id] [type]  [country_id] [unit] [importance] [multiplier] [digits] [event_code]  [ 0] 999010001      0          999      0            2            0        0 “ECB Non-monetary Policy Meeting”  [ 1] 999010002      0          999      0            2            0        0 “ECB Monetary Policy Meeting Account  [ 2] 999010003      0          999      0            3            0        0 “ECB Monetary Policy Press Conferenc  [ 3] 999010004      0          999      0            3            0        0 “ECB President Draghi Speech”  [ 4] 999010005      0          999      0            2            0        0 “ECB Vice President Constancio Speec  [ 5] 999010006      1          999      1            3            0        2 “ECB Deposit Facility Rate Decision”  [ 6] 999010007      1          999      1            3            0        2 “ECB Interest Rate Decision”  [ 7] 999010008      0          999      0            2            0        0 “ECB Economic Bulletin”  [ 8] 999010009      1          999      2            2            3        3 “ECB Targeted LTRO”  [ 9] 999010010      0          999      0            2            0        0 “ECB Executive Board Member Praet Sp  [10] 999010011      0          999      0            2            0        0 “ECB Executive Board Member Mersch S     … */  | 
参照
CalendarCountries、CalendarCountryById
CalendarEventByCurrency
指定された通貨でカレンダーで利用可能なすべてのイベントの説明の配列を取得します。
int  CalendarEventByCurrency(  const string         currency,      MqlCalendarEvent&    events[]        );  | 
パラメータ
currency
[in] 国の通貨のコード名
events[]
[out] 指定された通貨の説明を受け取るためのMqlCalendarEvent型配列
戻り値
- 4001 – ERR_INTERNAL_ERROR(一般的なランタイムエラー)
 - 4004 – ERR_NOT_ENOUGH_MEMORY(メモリが操作完了に不充分)
 - 5401 – ERR_CALENDAR_TIMEOUT(リクエスト制限時間の超過)
 - ArrayResize()操作の実行エラー
 
 
例:
//+——————————————————————+  //| スクリプトプログラム開始関数                                              |  //+——————————————————————+  void OnStart()  {  //— 経済指標カレンダーを受け取るための配列を宣言する  MqlCalendarEvent events[];  //— EU通貨イベントを取得する        int count = CalendarEventByCurrency(“EUR”,events);  Print(“count = “, count);  //— この例では10イベントで足りる  if(count>10)  ArrayResize(events,10);  //— 操作ログにイベントを表示する          ArrayPrint(events);  }  /*  結果:  [id] [type] [country_id] [unit] [importance]                                        [source_url]                                 [event_code]                                    [name]  [0] 999010001      0          999      0            2 “https://www.ecb.europa.eu/home/html/index.en.html” “ecb-non-monetary-policy-meeting”           “ECB Non-monetary Policy Meeting”  [1] 999010002      0          999      0            2 “https://www.ecb.europa.eu/home/html/index.en.html” “ecb-monetary-policy-meeting-accounts”       “ECB Monetary Policy Meeting Accounts”  [2] 999010003      0          999      0            3 “https://www.ecb.europa.eu/home/html/index.en.html” “ecb-monetary-policy-press-conference”       “ECB Monetary Policy Press Conference”  [3] 999010004      0          999      0            3 “https://www.ecb.europa.eu/home/html/index.en.html” “ecb-president-draghi-speech”               “ECB President Draghi Speech”  [4] 999010005      0          999      0            2 “https://www.ecb.europa.eu/home/html/index.en.html” “ecb-vice-president-vitor-constancio-speech” “ECB Vice President Constancio Speech”  [5] 999010006      1          999      1            3 “https://www.ecb.europa.eu/home/html/index.en.html” “ecb-deposit-rate-decision”                 “ECB Deposit Facility Rate Decision”  [6] 999010007      1          999      1            3 “https://www.ecb.europa.eu/home/html/index.en.html” “ecb-interest-rate-decision”                 “ECB Interest Rate Decision”  [7] 999010008      0          999      0            2 “https://www.ecb.europa.eu/home/html/index.en.html” “ecb-economic-bulletin”                     “ECB Economic Bulletin”  [8] 999010009      1          999      2            2 “https://www.ecb.europa.eu/home/html/index.en.html” “targeted-ltro”                             “ECB Targeted LTRO”  [9] 999010010      0          999      0            2 “https://www.ecb.europa.eu/home/html/index.en.html” “ecb-executive-board-member-praet-speech”   “ECB Executive Board Member Praet Speech”  */  | 
参照
CalendarEventById、CalendarEventByCountry
CalendarValueHistoryByEvent
イベントIDによって、指定された期間のすべてのイベントの値の配列を取得します。
bool  CalendarValueHistoryByEvent(  ulong              event_id,            MqlCalendarValue& values[],           datetime          datetime_from,      datetime          datetime_to=0       );  | 
パラメータ
event_id
[in] イベントID
values[]
[out] イベント値を受け取るためのMqlCalendarValue型の配列
datetime_from
[in] 指定されたIDによって選択された、期間内のイベントの開始日(datetime_from < datetime_to)
datetime_to=0
[in] 指定されたIDによって選択された期間内のイベントの終了日。datetime_to が設定されていない場合(または0の場合)、指定されたdatetime_from以降のカレンダーデータベースのすべてのイベント値が返されます(将来のイベントを含む)。
戻り値
- 4001 – ERR_INTERNAL_ERROR(一般的なランタイムエラー)
 
- 4004 – ERR_NOT_ENOUGH_MEMORY(メモリが操作完了に不充分)
 - 5401 – ERR_CALENDAR_TIMEOUT(リクエスト制限時間の超過)
 
- 5400 – ERR_CALENDAR_MORE_DATA(配列サイズはすべての値の説明を受け取るには不十分で、配列に収まるものだけが受信された)
 
struct MqlCalendarValue  {  …  long              actual_value;             // イベントの実際の値  long              prev_value;               // イベントの以前の値  long              revised_prev_value;       // イベントの改正された以前の値  long              forecast_value;           // イベントの予測値  …  };  | 
例:
//+——————————————————————+  //| スクリプトプログラム開始関数                                              |  //+——————————————————————+  void OnStart()  {  //— EUの国コード(ISO 3166-1 Alpha-2)  string EU_code=“EU”;  //— EUイベントを取得する  MqlCalendarEvent events[];  int events_count=CalendarEventByCountry(EU_code,events);  //— EUイベントを操作ログに表示する  if(events_count>0)  {  PrintFormat(“EU events: %d”,events_count);  //— 分析には10イベントで十分であるため、イベントリストを減らす  ArrayResize(events,10);  ArrayPrint(events);  }  //— “ECB Interest Rate Decision”イベントがevent_id=999010007であることを確認する  ulong event_id=events[6].id;       // イベントのIDはカレンダーで変わる可能性があるので、必ず確認する  string event_name=events[6].name;   // カレンダーイベントの名前  PrintFormat(“Get values for event_name=%s event_id=%d”,event_name,event_id);  //— “ECB Interest Rate Decision”イベントのすべての値を取得する  MqlCalendarValue values[];  //— イベントを取得する期間の境界を設定する  datetime date_from=0;           // 利用可能な履歴の初めからのすべてのイベントをとる  datetime date_to=D’01.01.2016′; // 2016以降のイベントをとる  if(CalendarValueHistoryByEvent(event_id,values,date_from,date_to))  {  PrintFormat(“Received values for %s: %d”,  event_name,ArraySize(values));  //— 分析には10イベントで十分であるため、値リストを減らす  ArrayResize(values,10);  ArrayPrint(values);  }  else  {  PrintFormat(“Error!Failed to get values for event_id=%d”,event_id);  PrintFormat(“Error code: %d”,GetLastError());  }  }  //—  /*  結果:  EU events: 56  [id] [type] [sector] [frequency] [time_mode] [country_id] [unit] [importance] [multiplier] [digits]                                        [source_url]                                 [event_code]                                    [name] [reserv  [0] 999010001      0        5           0           0          999      0            2            0        0 “https://www.ecb.europa.eu/home/html/index.en.html” “ecb-non-monetary-policy-meeting”           “ECB Non-monetary Policy Meeting”  [1] 999010002      0        5           0           0          999      0            2            0        0 “https://www.ecb.europa.eu/home/html/index.en.html” “ecb-monetary-policy-meeting-accounts”       “ECB Monetary Policy Meeting Accounts”  [2] 999010003      0        5           0           0          999      0            3            0        0 “https://www.ecb.europa.eu/home/html/index.en.html” “ecb-monetary-policy-press-conference”       “ECB Monetary Policy Press Conference”  [3] 999010004      0        5           0           0          999      0            3            0        0 “https://www.ecb.europa.eu/home/html/index.en.html” “ecb-president-draghi-speech”               “ECB President Draghi Speech”  [4] 999010005      0        5           0           0          999      0            2            0        0 “https://www.ecb.europa.eu/home/html/index.en.html” “ecb-vice-president-vitor-constancio-speech” “ECB Vice President Constancio Speech”  [5] 999010006      1        5           0           0          999      1            3            0        2 “https://www.ecb.europa.eu/home/html/index.en.html” “ecb-deposit-rate-decision”                 “ECB Deposit Facility Rate Decision”  [6] 999010007      1        5           0           0          999      1            3            0        2 “https://www.ecb.europa.eu/home/html/index.en.html” “ecb-interest-rate-decision”                 “ECB Interest Rate Decision”  [7] 999010008      0        5           0           0          999      0            2            0        0 “https://www.ecb.europa.eu/home/html/index.en.html” “ecb-economic-bulletin”                     “ECB Economic Bulletin”  [8] 999010009      1        5           0           0          999      2            2            3        3 “https://www.ecb.europa.eu/home/html/index.en.html” “targeted-ltro”                             “ECB Targeted LTRO”  [9] 999010010      0        5           0           0          999      0            2            0        0 “https://www.ecb.europa.eu/home/html/index.en.html” “ecb-executive-board-member-praet-speech”   “ECB Executive Board Member Praet Speech”  Get values for event_name=ECB Interest Rate Decision event_id=999010007  Received ECB Interest Rate Decision event values: 102  [id] [event_id]              [time]            [period] [revision] [actual_value] [prev_value] [revised_prev_value]     [forecast_value] [impact_type] [reserved]  [0] 2776  999010007 2007.03.08 11:45:00 1970.01.01 00:00:00          0        3750000      4250000 -9223372036854775808 -9223372036854775808             0          0  [1] 2777  999010007 2007.05.10 11:45:00 1970.01.01 00:00:00          0        3750000      3750000 -9223372036854775808 -9223372036854775808             0          0  [2] 2778  999010007 2007.06.06 11:45:00 1970.01.01 00:00:00          0        4000000      3750000 -9223372036854775808 -9223372036854775808             0          0  [3] 2779  999010007 2007.07.05 11:45:00 1970.01.01 00:00:00          0        4000000      4000000 -9223372036854775808 -9223372036854775808             0          0  [4] 2780  999010007 2007.08.02 11:45:00 1970.01.01 00:00:00          0        4000000      4000000 -9223372036854775808 -9223372036854775808             0          0  [5] 2781  999010007 2007.09.06 11:45:00 1970.01.01 00:00:00          0        4000000      4000000 -9223372036854775808 -9223372036854775808             0          0  [6] 2782  999010007 2007.10.04 11:45:00 1970.01.01 00:00:00          0        4000000      4000000 -9223372036854775808 -9223372036854775808             0          0  [7] 2783  999010007 2007.11.08 12:45:00 1970.01.01 00:00:00          0        4000000      4000000 -9223372036854775808 -9223372036854775808             0          0  [8] 2784  999010007 2007.12.06 12:45:00 1970.01.01 00:00:00          0        4000000      4000000 -9223372036854775808 -9223372036854775808             0          0  [9] 2785  999010007 2008.01.10 12:45:00 1970.01.01 00:00:00          0        4000000      4000000 -9223372036854775808 -9223372036854775808             0          0  */  | 
 
参照
CalendarCountries、CalendarEventByCountry、 CalendarValueHistory、CalendarEventById、CalendarValueById
CalendarValueHistory
指定された期間のすべてのイベントの値の配列を取得します(国や通貨で並び替え可能)。
bool  CalendarValueHistory(  MqlCalendarValue& values[],               datetime          datetime_from,          datetime          datetime_to=0           const string       country_code=NULL,      const string       currency=NULL           );  | 
パラメータ
values[]
[out] イベント値を受け取るためのMqlCalendarValue型の配列
datetime_from
[in] 指定されたIDによって選択された、期間内のイベントの開始日(datetime_from < datetime_to)
datetime_to=0
[in] 指定されたIDによって選択された期間内のイベントの終了日。datetime_to が設定されていない場合(または0の場合)、指定されたdatetime_from以降のカレンダーデータベースのすべてのイベント値が返されます(将来のイベントを含む)。
country_code=NULL
[in] 国コード名(ISO 3166-1 alpha-2)
currency=NULL
[in] 国の通貨のコード名
戻り値
- 4001 – ERR_INTERNAL_ERROR(一般的なランタイムエラー)
 
- 4004 – ERR_NOT_ENOUGH_MEMORY(メモリが操作完了に不充分)
 - 5401 – ERR_CALENDAR_TIMEOUT(リクエスト制限時間の超過)
 
- 5400 – ERR_CALENDAR_MORE_DATA(配列サイズはすべての値の説明を受け取るには不十分で、配列に収まるものだけが受信された)
 
 
注意事項
struct MqlCalendarValue  {  …  long              actual_value;             // イベントの実際の値  long              prev_value;               // イベントの以前の値  long              revised_prev_value;       // イベントの改正された以前の値  long              forecast_value;           // イベントの予測値  …  };  | 
例:
//+——————————————————————+  //| スクリプトプログラム開始関数                                              |  //+——————————————————————+  void OnStart()  {  //— EUの国コード(ISO 3166-1 Alpha-2)  string EU_code=“EU”;  //— EUイベント値を取得する  MqlCalendarValue values[];  //— イベントを取得する期間の境界を設定する  datetime date_from=D’01.01.2018′; // 2018のすべてのイベントを取得する  datetime date_to=0;               // 0はすべての既知イベント(今後起こるものを含む)   //— 2018年以来のEUイベント履歴をリクエストする  if(CalendarValueHistory(values,date_from,date_to,EU_code))  {  PrintFormat(“Received event values for country_code=%s: %d”,  EU_code,ArraySize(values));  //— 操作ログに出力する配列サイズを減らす  ArrayResize(values,10);  //— 操作ログにイベント値を表示する  ArrayPrint(values);  }  else  {  PrintFormat(“Error!Failed to receive events for country_code=%s”,EU_code);  PrintFormat(“Error code: %d”,GetLastError());  }  //—  }  /*  結果:  Received event values for country_code=EU: 1384  [id] [event_id]           [time]               [period] [revision]   [actual_value] [prev_value] [revised_prev_value] [forecast_value] [impact_type] [reserved]  [0] 54215  999500001 2018.01.02 09:00:00 2017.12.01 00:00:00          3       60600000     60600000 -9223372036854775808         60500000             1          0  [1] 54221  999500002 2018.01.04 09:00:00 2017.12.01 00:00:00          3       56600000     56500000 -9223372036854775808         56000000             1          0  [2] 54222  999500003 2018.01.04 09:00:00 2017.12.01 00:00:00          3       58100000     58000000 -9223372036854775808         58400000             2          0  [3] 45123  999030005 2018.01.05 10:00:00 2017.11.01 00:00:00          0         600000       400000 -9223372036854775808           100000             1          0  [4] 45124  999030006 2018.01.05 10:00:00 2017.11.01 00:00:00          0        2800000      2500000 -9223372036854775808          1500000             1          0  [5] 45125  999030012 2018.01.05 10:00:00 2017.12.01 00:00:00          1         900000       900000 -9223372036854775808          1000000             2          0  [6] 45126  999030013 2018.01.05 10:00:00 2017.12.01 00:00:00          1        1400000      1500000 -9223372036854775808          1500000             2          0  [7] 54953  999520001 2018.01.05 20:30:00 2018.01.02 00:00:00          0      127900000     92100000 -9223372036854775808         76400000             0          0  [8] 22230  999040003 2018.01.08 10:00:00 2017.12.01 00:00:00          0        9100000      8200000              8100000          7600000             1          0  [9] 22231  999040004 2018.01.08 10:00:00 2017.12.01 00:00:00          0       18400000     16300000             16400000         16800000             1          0  */  | 
参照
CalendarCountries、CalendarEventByCountry、 CalendarValueHistoryByEvent、CalendarEventById、 CalendarValueById
 
CalendarValueLastByEvent
指定されたchange_idで、カレンダーデータベースのステータスからイベントIDの配列をIDで取得します。
int  CalendarValueLastByEvent(  ulong                event_id,        ulong&              change_id,      MqlCalendarValue&    values[]        );  | 
パラメータ
event_id
[in] イベントID
change_id
[in][out] 変化ID
values[]
[out] イベント値を受け取るためのMqlCalendarValue型の配列
戻り値
- 4001 – ERR_INTERNAL_ERROR(一般的なランタイムエラー)
 
- 4004 – ERR_NOT_ENOUGH_MEMORY(メモリが操作完了に不充分)
 - 5401 – ERR_CALENDAR_TIMEOUT(リクエスト制限時間の超過)
 
- 5400 – ERR_CALENDAR_MORE_DATA(配列サイズはすべての値の説明を受け取るには不十分で、配列に収まるものだけが受信された)
 
注意事項
struct MqlCalendarValue  {  …  long              actual_value;             // イベントの実際の値  long              prev_value;               // イベントの以前の値  long              revised_prev_value;       // イベントの改正された以前の値  long              forecast_value;           // イベントの予測値  …  };  | 
非農業部門就業者数の公開リスナーであるサンプルEA:
#property description “Example of using the CalendarValueLastByEvent function”  #property description ” for tracking the release of the Nonfarm Payrolls report.”  #property description “To achieve this, get the current change ID”  #property description ” of the Calendar database. Then, use this ID to receive”  #property description ” only new events via the timer survey”  //+——————————————————————+  //| エキスパート初期化関数                                                |  //+——————————————————————+  int OnInit()  {  //— タイマーを作成する  EventSetTimer(60);  //—  return(INIT_SUCCEEDED);  }  //+——————————————————————+  //| エキスパート初期化解除関数                                             |  //+——————————————————————+  void OnDeinit(const int reason)  {  //— タイマーを破壊する  EventKillTimer();  }  //+——————————————————————+  //| エキスパートティック関数                                                 |  //+——————————————————————+  void OnTick()  {  //— }  //+——————————————————————+  //| Timer関数                                                         |  //+——————————————————————+  void OnTimer()  {  //— カレンダーデータベース変更ID  static ulong calendar_change_id=0;  //— 1番目の実行属性  static bool first=true;  //— イベントID    static ulong event_id=0;  //— イベント名    static string event_name=NULL;  //— イベント値の配列  MqlCalendarValue values[];  //— 初期化を行う – 現在のcalendar_change_idを取得する  if(first)  {  MqlCalendarEvent events[];  //— 米国の国コード(ISO 3166-1 Alpha-2)   string USA_code=“US”;  //— 米国のイベントを取得する  int events_count=CalendarEventByCountry(USA_code,events);  //— 必要なイベントの’events’配列内の位置  int event_pos=-1;  //— 米国のイベントを操作ログに表示する  if(events_count>0)  {  PrintFormat(“%s: USA events: %d”,__FUNCTION__,events_count);  for(int i=0;i<events_count;i++)  {  string event_name_low=events[i].name;  //— イベント名を小文字に変換する   if(!StringToLower(event_name_low))  {  PrintFormat(“StringToLower() returned %d error”,GetLastError());  //— 前もって関数を終了する  return;  }  //— 「非農業部門就業者数」イベントを探す            if(StringFind(event_name_low,“nonfarm payrolls”)!=-1)  {  //— イベントが見つかったのでIDを記憶する  event_id=events[i].id;  //— 「非農業部門就業者数」イベント名を書く  event_name=events[i].name;  //— イベントの’events[]’ 配列内の位置を記憶する              event_pos=i;  //— カレンダーには名前に「非農業部門就業者数」を含むイベントが複数ある  PrintFormat(“Event \”Nonfarm Payrolls\” found: event_id=%d  event_name=%s”,event_id,event_name);  //— この例をよく理解するためには、’break’演算子をコメントアウトしてすべてのイベントを表示できる  break;  }  }  //— 「非農業部門就業者数」以降のイベントを削除してリストを減らす  ArrayRemove(events,event_pos+1);  //— より便利な分析のために「非農業部門就業者数」以前の9つのイベントをそのままにする   ArrayRemove(events,0,event_pos-9);  ArrayPrint(events);  }  else  {  PrintFormat(“%s: CalendarEventByCountry(%s) returned 0 events, error code=%d”,  USA_code,__FUNCTION__,GetLastError());  //— 操作は失敗して終了したため、タイマーの次の呼び出し中に再試行する         return;  } //— 指定されたイベントのカレンダーデータベース変更IDを取得する  if(CalendarValueLastByEvent(event_id,calendar_change_id,values)>0)  {  //— このコードブロックは最初の起動時には実行できないがとにかく追加する  PrintFormat(“%s: Received the Calendar database current ID: change_id=%d”,  __FUNCTION__,calendar_change_id);  //— フラグを設定してタイマーの次のイベントの前に終了する  first=false;  return;  }  else  {  //— データが受信されない)これは最初の起動では正常である)、エラーがないか確認する  int error_code=GetLastError();  if(error_code==0)  {  PrintFormat(“%s: Received the Calendar database current ID: change_id=%d”,  __FUNCTION__,calendar_change_id);  //— フラグを設定してタイマーの次のイベントの前に終了する  first=false;  //— calendar_change_idを取得した  return;  }  else  {  //— 本当のエラー              PrintFormat(“%s: Failed to get values for event_id=%d”,__FUNCTION__,event_id);  PrintFormat(“Error code: %d”,error_code);  //— 操作は失敗して終了したため、タイマーの次の呼び出し中に再試行する         return;  }  }  } //— カレンダーの変更IDの最後の既知の値(change_id)がある  ulong old_change_id=calendar_change_id;  //— 「非農業部門就業者数」イベント値を確認する  if(CalendarValueLastByEvent(event_id,calendar_change_id,values)>0)  {  PrintFormat(“%s: Received new events for \”%s\“: %d”,  __FUNCTION__,event_name,ArraySize(values));  //— ‘values’配列のデータを操作ログで表示する  ArrayPrint(values);  //— 前のカレンダーIDと新しいカレンダーIDの値を操作ログで表示する  PrintFormat(“%s: Previous change_id=%d, new change_id=%d”,  __FUNCTION__,old_change_id,calendar_change_id);  /*  非農業部門就業者数データの発表を処理するコードをここで書く  */  }  //—       }  /*  結果:  OnTimer: USA events: 202  Event “Nonfarm Payrolls” found: event_id=840030016  event_name=Nonfarm Payrolls  [id] [type] [sector] [frequency] [time_mode] [country_id] [unit] [importance] [multiplier] [digits]          [source_url]                             [event_code]                   [name] [reserved]  [0] 840030007      1        4           2           0          840      1            1            0        1 “https://www.bls.gov” “consumer-price-index-yy”               “CPI y/y”                         0  [1] 840030008      1        4           2           0          840      1            1            0        1 “https://www.bls.gov” “consumer-price-index-ex-food-energy-yy” “Core CPI y/y”                    0  [2] 840030009      1        4           2           0          840      0            1            0        3 “https://www.bls.gov” “consumer-price-index-nsa”               “CPI n.s.a.”                      0  [3] 840030010      1        4           2           0          840      0            1            0        3 “https://www.bls.gov” “consumer-price-index-ex-food-energy”   “Core CPI”                        0  [4] 840030011      1        4           2           0          840      1            1            0        1 “https://www.bls.gov” “import-price-index-mm”                 “Import Price Index m/m”          0  [5] 840030012      1        4           2           0          840      1            1            0        1 “https://www.bls.gov” “import-price-index-yy”                 “Import Price Index y/y”          0  [6] 840030013      1        4           2           0          840      1            1            0        1 “https://www.bls.gov” “export-price-index-mm”                 “Export Price Index m/m”          0  [7] 840030014      1        4           2           0          840      1            1            0        1 “https://www.bls.gov” “export-price-index-yy”                 “Export Price Index y/y”          0  [8] 840030015      1        3           2           0          840      1            2            0        1 “https://www.bls.gov” “unemployment-rate”                     “Unemployment Rate”               0  [9] 840030016      1        3           2           0          840      4            3            1        0 “https://www.bls.gov” “nonfarm-payrolls”                       “Nonfarm Payrolls”                0  OnTimer: Received the Calendar database current ID: change_id=33986560 */  | 
参照
CalendarValueLast、CalendarValueHistory、 CalendarValueHistoryByEvent、CalendarValueById
CalendarValueLast
指定されたchange_idで、カレンダデータベースのステータスからすべてのイベントの値の配列を取得します(国や通貨で並び替え可能)。
int  CalendarValueLast(  ulong&              change_id,              MqlCalendarValue&    values[],              const string         country_code=NULL,      const string         currency=NULL           );  | 
パラメータ
change_id
[in][out] 変化ID
values[]
[out] イベント値を受け取るためのMqlCalendarValue型の配列
country_code=NULL
[in] 国コード名(ISO 3166-1 alpha-2)
currency=NULL
[in] 国の通貨のコード名
戻り値
- 4001 – ERR_INTERNAL_ERROR(一般的なランタイムエラー)
 
- 4004 – ERR_NOT_ENOUGH_MEMORY(メモリが操作完了に不充分)
 - 5401 – ERR_CALENDAR_TIMEOUT(リクエスト制限時間の超過)
 
- 5400 – ERR_CALENDAR_MORE_DATA(配列サイズはすべての値の説明を受け取るには不十分で、配列に収まるものだけが受信された)
 
注意事項
struct MqlCalendarValue  {  …  long              actual_value;             // イベントの実際の値  long              prev_value;               // イベントの以前の値  long              revised_prev_value;       // イベントの改正された以前の値  long              forecast_value;           // イベントの予測値  …  };  | 
経済指標カレンダーイベントを聴取するサンプルEA:
#property description “Example of using the CalendarValueLast function”  #property description ” to develop the economic calendar events listener.”  #property description “To achieve this, get the current change ID”  #property description ” of the Calendar database. Then, use this ID to receive”  #property description ” only new events via the timer survey”  //+——————————————————————+  //| エキスパート初期化関数                                                |  //+——————————————————————+  int OnInit()  {  //— タイマーを作成する  EventSetTimer(60);  //—  return(INIT_SUCCEEDED);  }  //+——————————————————————+  //| エキスパート初期化解除関数                                              |  //+——————————————————————+  void OnDeinit(const int reason)  {  //— タイマーを破壊する  EventKillTimer();  }  //+——————————————————————+  //| エキスパートティック関数                                                 |  //+——————————————————————+  void OnTick()  {  //— }  //+——————————————————————+  //| Timer関数                                                        |  //+——————————————————————+  void OnTimer()  {  //— カレンダーデータベース変更ID  static ulong calendar_change_id=0;  //— 1番目の実行属性  static bool first=true;  //— イベント値の配列  MqlCalendarValue values[];  //— 初期化を行う – 現在のcalendar_change_idを取得する  if(first)  {  //— カレンダーデータベース変更IDを取得する  if(CalendarValueLast(calendar_change_id,values)>0)  {  //— このコードブロックは最初の起動時には実行できないがとにかく追加する  PrintFormat(“%s: Received the Calendar database current ID: change_id=%d”,  __FUNCTION__,calendar_change_id);  //— フラグを設定してタイマーの次のイベントの前に終了する  first=false;  return;  }  else  {  //— データが受信されない)これは最初の起動では正常である)、エラーがないか確認する  int error_code=GetLastError();  if(error_code==0)  {  PrintFormat(“%s: Received the Calendar database current ID: change_id=%d”,  __FUNCTION__,calendar_change_id);  //— フラグを設定してタイマーの次のイベントの前に終了する  first=false;  //— calendar_change_idを取得した  return;  }  else  {  //— 本当のエラー              PrintFormat(“%s: Failed to get events in CalendarValueLast. Error code: %d”,  __FUNCTION__,error_code);  //— 操作は失敗して終了し、タイマーの次の呼び出し中に再初期化される  return;  }  }  } //— カレンダーの変更IDの最後の既知の値(change_id)がある  ulong old_change_id=calendar_change_id;  //— 新しいカレンダーイベントがあるかどうか確認する  if(CalendarValueLast(calendar_change_id,values)>0)  {  PrintFormat(“%s: Received new Calendar events: %d”,  __FUNCTION__,ArraySize(values));  //— ‘values’配列のデータを操作ログで表示する  ArrayPrint(values);  //— 前のカレンダーIDと新しいカレンダーIDの値を操作ログで表示する  PrintFormat(“%s: Previous change_id=%d, new change_id=%d”,  __FUNCTION__,old_change_id,calendar_change_id);  //— 新しいイベントを操作ログで表示する  ArrayPrint(values);  /*  ここでイベントの発生を処理するためのコードを書く  */  }  //—       }  /*  リスナー操作の例:  OnTimer: Received the Calendar database current ID: change_id=33281792  OnTimer: Received new events for the Calendar: 1  [id] [event_id]              [time]            [period] [revision] [actual_value] [prev_value] [revised_prev_value] [forecast_value] [impact_type] [reserved]  [0] 91040   76020013 2019.03.20 15:30:00 1970.01.01 00:00:00          0       -5077000     -1913000 -9223372036854775808         -4077000             2          0  OnTimer: Previous change_id=33281792, new change_id=33282048  [id] [event_id]              [time]            [period] [revision] [actual_value] [prev_value] [revised_prev_value] [forecast_value] [impact_type] [reserved]  [0] 91040   76020013 2019.03.20 15:30:00 1970.01.01 00:00:00          0       -5077000     -1913000 -9223372036854775808         -4077000             2          0  OnTimer: Received new events for the Calendar: 1  [id] [event_id]              [time]            [period] [revision]       [actual_value] [prev_value] [revised_prev_value] [forecast_value] [impact_type] [reserved]  [0] 91041   76020013 2019.03.27 15:30:00 1970.01.01 00:00:00          0 -9223372036854775808     -5077000 -9223372036854775808         -7292000             0          0  OnTimer: Previous change_id=33282048, new change_id=33282560  [id] [event_id]              [time]            [period] [revision]       [actual_value] [prev_value] [revised_prev_value] [forecast_value] [impact_type] [reserved]  [0] 91041   76020013 2019.03.27 15:30:00 1970.01.01 00:00:00          0 -9223372036854775808     -5077000 -9223372036854775808         -7292000             0          0 */  | 
参照
CalendarValueLast、CalendarValueHistory、 CalendarValueHistoryByEvent、CalendarValueById
Originally posted 2019-07-29 23:24:27.