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]  시간 범위 이벤트의 초기 날짜는 지정된 아이디로 선택되고, 반면 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통화 필터의 경우, NULL 및 "" 값은 동일하며 필터의 부재를 의미합니다.

country_code의 경우, MqlCalendarCountry 구조의코드필드(예:"US", "RU" 또는 "EU")를 사용해야 합니다.

통화의 경우, MqlCalendarCountry 구조의 통화 필드(예: "USD", "RUB" 또는 "EUR")를 사용해야 합니다.

필터는 연결로 적용되는데, 즉 논리적 'AND'는 두 조건(국가 및 통화)이 동시에 충족되는 이벤트 값만 선택하는데 사용됩니다.

MqlCalendarValue structure는 actual_value, forecast_value, prev_value 와 revised_prev_value 필드의 value를 체크하고 세팅하는 메서드를 제공합니다. 만약 아무런 value도 없을 경우 필드는 LONG_MIN (-9223372036854775808)을 저장합니다.

이들 필드에 저장된 value에는 백만이 곱해집니다. 다음의 함수를 사용하여 MqlCalendarValu에서 밸류를 받을때 CalendarValueById, CalendarValueHistoryByEvent, CalendarValueHistory, CalendarValueLastByEvent and CalendarValueLast, 필드 밸류가 LONG_MIN과 같은지 확인해야 합니다; 만약 필드에 밸류가 지정된 경우 밸류를 얻기 위해서는 밸류를 1,000,000로 나누어 줘야 합니다. value를 가져오는 또 다른 방법은 MqlCalendarValue 구조의 함수를 사용하여 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("country_code=%s: %d에 대한 이벤트 값을 수신하였습니다",
                  EU_code,ArraySize(values));
      //--- 저널로 출력할 배열의 크기를 줄입니다
      ArrayResize(values,10);
//--- 저널에 이벤트 값 표시
      ArrayPrint(values);      
     }
   else
     {
      PrintFormat("Error! country_code=%s",EU_code);에 대한 이벤트를 수신하지 못했습니다
      PrintFormat("Error code: %d",GetLastError());
     }
//---
  }
/*
  결과:
  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