CalendarValueById

IDによってイベントの値を取得します。

bool  CalendarValueById(
  ulong                value_id,    // イベント値ID
  MqlCalendarValue&    value       // イベント値を受け取るための変数
  );

パラメータ

value_id

[in] イベント値ID

value

[out] イベントの説明を受け取るためのMqlCalendarValue型の変数カレンダーイベント処理の例を参照してください

戻り値

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

  • 4001 – ERR_INTERNAL_ERROR(一般的なランタイムエラー)
  • 5402 – ERR_CALENDAR_NO_DATA(無効な国)
  • 5401 – ERR_CALENDAR_TIMEOUT(リクエスト制限時間の超過)

注意事項

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

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

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

例:

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

参照

CalendarValueHistoryByEventCalendarValueHistoryCalendarValueLastByEventCalendarValueLast