CalendarValueHistoryByEvent

지정된 시간 범위의 모든 이벤트에 대한 값 배열을 이벤트 ID를 기준으로 가져오기

bool  CalendarValueHistoryByEvent(
   ulong              event_id,          // event ID 
   MqlCalendarValue&  values[],          // 갑 설명 배열 
   datetime           datetime_from,     // 시간 범위의 좌측 테두리
   datetime           datetime_to=0      // 시간 범위의 우측 테두리
   );

매개변수

event_id

[in]  이벤트 ID.

values[]

[out]  이벤트 값을 수신하기 위한 MqlCalendarValue 유형 배열.  다음을 확인 하세요캘린더 이벤트 핸들링 예제.

datetime_from

[in]  시간 범위 이벤트의 초기 날짜는 지정된 아이디로 선택되고, 반면 datetime_from < datetime_to.

datetime_to=0

[in]  시간 범위 이벤트의 종료 날짜는 지정된 ID로 선택됩니다. datetime_to 가 설정되지 않은 경우(또는 0인 경우), 캘린더 데이터베이스에서 지정된 datetime_from으로 시작하는 모든 이벤트 값이 반환됩니다 (향후 이벤트 값을 포함).

값 반환

성공하면 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 기능의 시간 입력은 사용자의 로컬 시간이 아니라 거래 서버 시간대에 설정됩니다.

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 이벤트 가져오기
   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 금리 결정" 이벤트에 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 금리 결정" 이벤트의 모든 값을 가져오기
   MqlCalendarValue values[];
//--- 이벤트 발생 간격의 경계를 설정
   datetime date_from=0;           // 사용 가능한 내역의 시작부터 모든 내용을 받기
   datetime date_to=D'01.01.2016'; // 2016년 이전 이벤트를 받기
   if(CalendarValueHistoryByEvent(event_id,values,date_from,date_to))
     {
      PrintFormat("%s: %d에 대한 값을 수신하였습니다",
                  event_name,ArraySize(values));
      //--- 10개의 이벤트만 분석해도 충분하니, 값 목록을 줄입니다
      ArrayResize(values,10);
      ArrayPrint(values);
     }
   else
     {
      PrintFormat("Error! event_id=%d에 대한 값을 가져오지 못하였습니다",event_id);
      PrintFormat("Error code: %d",GetLastError());
     }
  }
//---
/*
  결과:
  EU 이벤트: 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 비화폐성 정책 회의"                
   [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 통화 정책 회의 계정"           
   [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 금융 정책 기자 회견"           
   [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 드라기 총재 연설"                    
   [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 콘스탄치오 부총재 연설"           
   [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 예금 설비 금리 결정"             
   [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 금리 결정"                     
   [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 이코노미 게시판"                          
   [8] 999010009      1        5           0           0          999      2            2            3        3 "https://www.ecb.europa.eu/home/html/index.en.html" "targeted-ltro"                              "ECB 대상 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 이사회 멤버 프래트 연설"        
  Get values for event_name=ECB Interest Rate Decision event_id=999010007
  수신된 ECB 금리 결정 이벤트 값: 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