CalendarValueHistory

指定された期間のすべてのイベントの値の配列を取得します(国や通貨で並び替え可能)。

bool  CalendarValueHistory(
  MqlCalendarValue& values[],             // 値の説明の配列
  datetime          datetime_from,        // 期間の左の境界
  datetime          datetime_to=0         // 期間の右の境界
  const string       country_code=NULL,    // 国コード名(ISO 3166-1 alpha-2)
  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] 国の通貨のコード名

戻り値

成功の場合は true、それ以外の場合は false。エラー情報を取得するためにはGetLastError()関数を呼び出します。可能なエラー:

  • 4001 – ERR_INTERNAL_ERROR(一般的なランタイムエラー)
  • 4004 – ERR_NOT_ENOUGH_MEMORY(メモリが操作完了に不充分)
  • 5401 – ERR_CALENDAR_TIMEOUT(リクエスト制限時間の超過)
  • 5400 – ERR_CALENDAR_MORE_DATA(配列サイズはすべての値の説明を受け取るには不十分で、配列に収まるものだけが受信された)

 

注意事項

経済指標カレンダーを使用するためのすべての関数は、取引サーバ時間(TimeTradeServer)を使用します。つまり、MqlCalendarValue構造体の時刻と、CalendarValueHistoryByEvent/CalendarValueHistory関数は、ユーザの現地時間ではなく、取引サーバの時間帯で設定されます。

固定された長さのevents[]配列が関数に渡されて、結果全体を保存するのに十分なスペースがなかった場合、ERR_CALENDAR_MORE_DATA (5400)エラーが発生します。

datetime_to が設定されていない場合(または0の場合)、指定されたdatetime_from以降のカレンダーデータベースのすべてのイベント値が返されます(将来のイベントを含む)。

country_codeおよびcurrencyによる絞り込みについては、NULLおよび""は道同等で、絞り込みがないことを意味します。

country_codeについては、MqlCalendarCountry構造体のcodeフィールドが使用されるべきです(例: "US"、"RU"、"EU")。

currencyについては、MqlCalendarCountry構造体のcurrencyフィールドが使用されるべきです(例: USD"、"RUB"、"EUR")。

フィルタは結合によって適用されます。つまり、論理 'AND'は、両方の条件(国と通貨)が同時に満たされるイベントの値のみを選択するために使用されます。

MqlCalendarValue構造体はactual_value、forecast_value、prev_value、revised_prev_valueフィールドの値を確認/設定するメソッドを備えています。値が指定されていない場合、フィールドにはLONG_MIN (-9223372036854775808)が格納されます。

これらのフィールドに格納されている値は100万倍されることに注意してください。CalendarValueByIdCalendarValueHistoryByEventCalendarValueHistoryCalendarValueLastByEventCalendarValueLastのいずれかの関数を使用してMqlCalendarValueで値を受け取る場合、フィールド値がLONG_MINに等しいかどうかを確認する必要があります。フィールドに値が指定されている場合、値を取得するには、値を100万で除算する必要があります。値を取得するもう1つの方法は、MqlCalendarValue構造体の関数を使用して値を確認および取得することです。

例:

//+------------------------------------------------------------------+
//| スクリプトプログラム開始関数                                              |
//+------------------------------------------------------------------+
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  
*/

参照

CalendarCountriesCalendarEventByCountryCalendarValueHistoryByEventCalendarEventByIdCalendarValueById