경제 달력. 질문, 토론.

 

MQL5 경제 달력 이 어떻게 작동하는지 알고 싶지만 뭔가 잘 움직이지 않습니다. 어제와 오늘의 시작을 거의 모두 보냈지만 CalendarValueHistory가 모든 이벤트를 반환하지 않는 이유를 이해하지 못했습니다. 아니면 제가 이 사건들을 조금 혼동하고 있는 걸까요...

어제 달력에 적힌 대로 xx:45에 4개의 이벤트를 받았습니다. 수신된 시간이 표에 표시된 시간과 일치하지 않기 때문에 이벤트 시간을 "xx"로 씁니다. 그러나 적어도 누군가는 이것이 지정된 시간과 이 데이터를 수신한 터미널 또는 서버의 시간 간의 차이 때문이라는 것을 이해할 수 있습니다. 그리고 오늘 나는 분으로 3개의 이벤트만 받습니다: 45 그리고 나는 그 이유를 이해할 수 없습니다.

그리고 개발자에게 질문: 날짜가 2019.07.25 00:00인 이유는 배열의 첫 번째 이유이며 다음 행은 오름차순으로 정렬됩니다. 결과 목록을 참조하십시오.

 2019.07 . 24 10 : 12 : 22.297 ! 00 (EURUSD,H1)        [id] [event_id]              [time]            [period] [revision]       [actual_value]         [prev_value] [revised_prev_value]     [forecast_value] [impact_type] [reserved]
2019.07 . 24 10 : 12 : 22.297 ! 00 (EURUSD,H1) [ 0 ]   96782    76020005 2019.07 . 25 00 : 00 : 00 1970.01 . 01 00 : 00 : 00            0 - 9223372036854775808 - 9223372036854775808 - 9223372036854775808 - 9223372036854775808              0            0
2019.07 . 24 10 : 12 : 22.297 ! 00 (EURUSD,H1) [ 1 ]   96840    76030003 2019.07 . 24 11 : 00 : 00 2019.07 . 01 00 : 00 : 00            0 - 9223372036854775808              88500000 - 9223372036854775808              91600000              0            0
2019.07 . 24 10 : 12 : 22.297 ! 00 (EURUSD,H1) [ 2 ] 100501    484020006 2019.07 . 24 11 : 00 : 00 2019.07 . 01 00 : 00 : 00            0 - 9223372036854775808                  10000 - 9223372036854775808                110000              0            0
2019.07 . 24 10 : 12 : 22.297 ! 00 (EURUSD,H1) [ 3 ] 100502    484020007 2019.07 . 24 11 : 00 : 00 2019.07 . 01 00 : 00 : 00            0 - 9223372036854775808                160000 - 9223372036854775808                130000              0            0
// Пропущено, удалено вручную.
2019.07 . 24 10 : 12 : 22.297 ! 00 (EURUSD,H1) [ 59 ]   93627    410010001 2019.07 . 25 21 : 00 : 00 2019.07 . 01 00 : 00 : 00            0 - 9223372036854775808              97500000 - 9223372036854775808              97000000              0            0
2019.07 . 24 10 : 12 : 22.297 ! 00 (EURUSD,H1) [ 60 ]   87322    392030006 2019.07 . 25 23 : 30 : 00 2019.07 . 01 00 : 00 : 00            0 - 9223372036854775808                900000 - 9223372036854775808                900000              0            0
2019.07 . 24 10 : 12 : 22.297 ! 00 (EURUSD,H1) [ 61 ]   87323    392030004 2019.07 . 25 23 : 30 : 00 2019.07 . 01 00 : 00 : 00            0 - 9223372036854775808                1100000 - 9223372036854775808                1100000              0            0
2019.07 . 24 10 : 12 : 22.297 ! 00 (EURUSD,H1) [ 62 ]   87324    392030005 2019.07 . 25 23 : 30 : 00 2019.07 . 01 00 : 00 : 00            0 - 9223372036854775808                800000 - 9223372036854775808                800000              0            0
 

몇 가지 질문이 사라졌습니다. 시간이 지남에 따라 이해했습니다. 모든 것이 간단하게 밝혀졌습니다. 우리는 GMT 시간을 얻고 GMT + 3이 사이트에 제시되었으므로 모든 오해가 형성되었습니다.

첫 번째 결과는 다음과 같습니다. 이벤트에 대한 설명이 수신되었으며, 스냅샷의 첫 번째 줄입니다.


 2019.07 . 24 11 : 29 : 03.972 ! 00 (EURUSD,H1) время и дата события - 2019.07 . 24 13 : 45 : 00
2019.07 . 24 11 : 29 : 03.972 ! 00 (EURUSD,H1) идентификатор события - 840500001
2019.07 . 24 11 : 29 : 03.972 ! 00 (EURUSD,H1) тип события из перечисления ENUM_CALENDAR_EVENT_TYPE - CALENDAR_TYPE_INDICATOR
2019.07 . 24 11 : 29 : 03.972 ! 00 (EURUSD,H1) сектор, к которому относится событие - CALENDAR_SECTOR_BUSINESS
2019.07 . 24 11 : 29 : 03.972 ! 00 (EURUSD,H1) частота (периодичность) события - CALENDAR_FREQUENCY_MONTH
2019.07 . 24 11 : 29 : 03.972 ! 00 (EURUSD,H1) режим времени события - CALENDAR_TIMEMODE_DATETIME
2019.07 . 24 11 : 29 : 03.972 ! 00 (EURUSD,H1) идентификатор страны - 840
2019.07 . 24 11 : 29 : 03.972 ! 00 (EURUSD,H1) текстовое имя страны (в текущей кодировке терминала) - Соединенные Штаты
2019.07 . 24 11 : 29 : 03.972 ! 00 (EURUSD,H1) единица измерения значения экономического индикатора - CALENDAR_UNIT_NONE
2019.07 . 24 11 : 29 : 03.972 ! 00 (EURUSD,H1) важность события - CALENDAR_IMPORTANCE_MODERATE
2019.07 . 24 11 : 29 : 03.972 ! 00 (EURUSD,H1) множитель значения экономического индикатора - CALENDAR_MULTIPLIER_NONE
2019.07 . 24 11 : 29 : 03.972 ! 00 (EURUSD,H1) количество знаков после запятой - 1
2019.07 . 24 11 : 29 : 03.972 ! 00 (EURUSD,H1) URL источника, где публикуется событие - https: //www.markiteconomics.com
2019.07 . 24 11 : 29 : 03.972 ! 00 (EURUSD,H1) код события - markit-manufacturing-pmi
2019.07 . 24 11 : 29 : 03.972 ! 00 (EURUSD,H1) текстовое имя события на языке терминала (в текущей кодировке терминала) - Индекс менеджеров по закупкам в производственном секторе от Markit
 

개발자를 위한 질문:

문서에서 이 코드를 약간 변경한 이유는 무엇입니까?

 void OnStart ()
{
   MqlCalendarValue values[]; 

//--- запросим историю событий от текущего времени до конца сегодняшнего дня.
   if ( CalendarValueHistory (values, TimeCurrent (), iTime ( _Symbol , PERIOD_D1 , 0 )+ PeriodSeconds ( PERIOD_D1 ))) 
     { 
       PrintFormat ( "Получены значения событий по country_code=%s: %d" , ArraySize (values) ); 
//--- выведем значения событий в Журнал 
       ArrayPrint (values);
      
     } 
   else 
     { 
       PrintFormat ( "Ошибка! Не удалось получить события по стране country_code=%s" ); 
       PrintFormat ( "Код ошибки: %d" , GetLastError ()); 
     } 
//---
}

값 배열의 크기 가 0임을 반환하지만 여전히 달력의 모든 것을 인쇄합니다. 즉, 모든 이벤트가 수신됩니다.

 2019.07 . 24 15 : 20 : 33.131 ! 00 (EURUSD,H1) Получены значения событий по country_code=(non- string passed): 0
2019.07 . 24 15 : 20 : 33.131 ! 00 (EURUSD,H1)      [id] [event_id]              [time]            [period] [revision]       [actual_value] [prev_value] [revised_prev_value]     [forecast_value] [impact_type] [reserved]
2019.07 . 24 15 : 20 : 33.131 ! 00 (EURUSD,H1) [ 0 ] 97265    76020013 2019.07 . 24 15 : 30 : 00 1970.01 . 01 00 : 00 : 00            0 - 9223372036854775808      - 1227000 - 9223372036854775808              - 2405000              0            0
2019.07 . 24 15 : 20 : 33.131 ! 00 (EURUSD,H1) [ 1 ] 87842    840220012 2019.07 . 24 17 : 00 : 00 1970.01 . 01 00 : 00 : 00            0 - 9223372036854775808        1791000 - 9223372036854775808 - 9223372036854775808              0            0
2019.07 . 24 15 : 20 : 33.131 ! 00 (EURUSD,H1) [ 2 ] 93625    410010011 2019.07 . 24 23 : 00 : 00 2019.04 . 01 00 : 00 : 00            1 - 9223372036854775808       - 400000 - 9223372036854775808                400000              0            0
2019.07 . 24 15 : 20 : 33.131 ! 00 (EURUSD,H1) [ 3 ] 93626    410010012 2019.07 . 24 23 : 00 : 00 2019.04 . 01 00 : 00 : 00            1 - 9223372036854775808        1700000 - 9223372036854775808                2900000              0            0
2019.07 . 24 15 : 20 : 33.131 ! 00 (EURUSD,H1) [ 4 ] 87394    392060016 2019.07 . 24 23 : 50 : 00 2019.06 . 01 00 : 00 : 00            0 - 9223372036854775808        800000 - 9223372036854775808                      0              0            0
2019.07 . 24 15 : 20 : 33.131 ! 00 (EURUSD,H1) [ 5 ] 97012    392070003 2019.07 . 24 23 : 50 : 00 2019.07 . 20 00 : 00 : 00            0 - 9223372036854775808      950000000 - 9223372036854775808 - 9223372036854775808              0            0
2019.07 . 24 15 : 20 : 33.131 ! 00 (EURUSD,H1) [ 6 ] 97013    392070004 2019.07 . 24 23 : 50 : 00 2019.07 . 20 00 : 00 : 00            0 - 9223372036854775808     - 93100000 - 9223372036854775808 - 9223372036854775808              0            0

어디에서, 무엇을 할 시간이 없습니까?

 
형식 문자열 의 추가 %s
 
Renat Fatkhullin :
형식 문자열 의 추가 %s

네 감사합니다. 나는 이미 이것을 다루었습니다. 문서에서 예제를 수정하면 엉망이 됩니다.

 

@Renat Fatkhullin Renat , 언젠가 TimeGMTOffset()과 같은 함수가 로컬 시간이 아닌 서버 시간에 의해서만 만들어지기를 바랄 수 있습니까? 결국 경제 달력의 기능은 GMT 시간을 사용하고 현지 시간은 종종 서버 시간과 일치하지 않습니다. 뉴스의 시간을 수신하고 터미널에서 번역하여 장난을 쳐야 하는 것으로 나타났습니다. 주말에 그런 함수를 호출할 때 문제가 있을 수 있다는 것을 이해하지만 현재 함수를 사용할 수 없다는 일종의 오류를 정의하거나 다른 것을 정의할 수 있습니다.

지금까지는 OnInit()에서 시간 차이를 고려하여 전역 수준 변수에 기록했습니다. 하지만 마음에 들지 않는 부분이 있습니다. 제 생각에는 내장 함수를 호출하여 뉴스 시간을 서버 시간으로 조정하는 것이 더 나을 것입니다. 또한 터미널은 서버 시간과 주말에 사용할 수 있습니다.

 
Alexey Viktorov :

@Renat Fatkhullin Renat , 언젠가 TimeGMTOffset()과 같은 함수가 로컬 시간이 아닌 서버 시간에 의해서만 만들어지기를 바랄 수 있습니까? 결국 경제 달력의 기능은 GMT 시간을 사용하고 현지 시간은 종종 서버 시간과 일치하지 않습니다. 뉴스의 시간을 수신하고 터미널에서 번역하여 장난을 쳐야 하는 것으로 나타났습니다. 주말에 그런 함수를 호출할 때 문제가 있을 수 있다는 것을 이해하지만 현재 함수를 사용할 수 없다는 일종의 오류를 정의하거나 다른 것을 정의할 수 있습니다.

지금까지는 OnInit()에서 시간 차이를 고려하여 전역 수준 변수에 기록했습니다. 하지만 마음에 들지 않는 부분이 있습니다. 제 생각에는 내장 함수를 호출하여 뉴스 시간을 서버 시간으로 조정하는 것이 더 나을 것입니다. 또한 터미널은 서버 시간과 주말에 사용할 수 있습니다 .

물론 사용 가능합니다. 이것은 이미 요청되었습니다.

 
Vitaly Muzichenko :

물론 사용 가능합니다. 이것은 이미 요청되었습니다.

Vitaly, 모든 요청에 대해 주장해야 합니다. 그러한 기능의 필요성에 대해 충분히 논의하였기를 바랍니다. 이제는 회사 프로그래머의 작업량과 주장을 이해하고 수용하는 방법에만 의존합니다. 희망.

 

달력에서 얻을 수 있는 정보: (프로그램에서 사용하고 사람에게 그다지 유익하지 않은 값은 여기에 나열되지 않음)

  • 국가의 이름
  • 국가 통화
  • 이벤트 유형

행사(집회, 연설 등)

지시자

휴일


  • 이벤트가 속한 섹터

시장, 교환

국내총생산 (GDP)

노동 시장

물가

거래

정부

사업

소비

주택

구실

휴가


  • 터미널 언어(현재 터미널 인코딩)로 된 이벤트의 텍스트 이름
  • 이벤트의 시간과 날짜
  • 이벤트 보고 기간
  • 표시기의 실제 값
  • 이전 지표 값
  • 수정된 이전 지표 값
  • 지표의 예측 값
  • 환율에 대한 잠재적 영향

언급되지 않은 영향

긍정적인 영향

부정적인 영향


불행히도 지금까지 뉴스가 발표되기 전에 자리를 여는 것을 금지하는 것 외에는 다른 해결책을 찾지 못했습니다. 열거된 값들 중 어떤 값을 사용할 수 있고 어떻게 대응해야 하는지 알고 싶습니다.

제가 알기로는 강조된 값들이 뉴스에 어떻게 반응할지 결정하는 데 매우 중요한데, 어떻게 되는지 모르겠습니다. 토론에 초대합니다.

 
Alexey Viktorov :

달력에서 얻을 수 있는 정보: (프로그램에서 사용하고 사람에게 그다지 유익하지 않은 값은 여기에 나열되지 않음)

  • 국가의 이름
  • 국가 통화
  • 이벤트 유형

행사(집회, 연설 등)

지시자

휴일


  • 이벤트가 속한 섹터

시장, 교환

국내총생산 (GDP)

노동 시장

물가

거래

정부

사업

소비

주택

구실

휴가


  • 터미널 언어(현재 터미널 인코딩)로 된 이벤트의 텍스트 이름
  • 이벤트의 시간과 날짜
  • 이벤트 보고 기간
  • 표시기의 실제 값
  • 이전 지표 값
  • 수정된 이전 지표 값
  • 지표의 예측 값
  • 환율에 대한 잠재적 영향

언급되지 않은 영향

긍정적인 영향

부정적인 영향


불행히도 지금까지 뉴스가 발표되기 전에 자리를 여는 것을 금지하는 것 외에는 다른 해결책을 찾지 못했습니다. 열거된 값들 중 어떤 값을 사용할 수 있고 어떻게 대응해야 하는지 알고 싶습니다.

제가 알기로는 강조된 값들이 뉴스에 어떻게 반응할지 결정하는 데 매우 중요한데, 어떻게 되는지 모르겠습니다. 토론에 초대합니다.

여기 내 버전의 뉴스 표시기가 있습니다. 단말기는 뉴스출시시각에 대한 정보를 통화별로 제공하며, 중요도도 선택하여 선택할 수 있습니다. 정보는 가격 차트에 수직선으로 표시됩니다. 하위 창에서 중요 뉴스로 분류된 뉴스에 대한 예측 데이터를 위해 현재 데이터의 최신 값에 대한 히스토그램을 시간순으로 작성합니다. 뉴스의 종류(금리, 실업률, 소비자물가지수, GDP 등 ) 에 따라 다양한 색상으로 색칠해 드립니다. 결과 차트는 시간 프레임을 전환할 때 가격 차트와 시간 및 규모가 동기화되어야 합니다. 또한 관련 데이터를 얻는 속도에 관심이 있습니다.

 
Vladimir Kononenko :

여기 내 버전의 뉴스 표시기가 있습니다. 단말기는 뉴스출시시각에 대한 정보를 통화별로 제공하며, 중요도도 선택하여 선택할 수 있습니다. 정보는 가격 차트에 수직선으로 표시됩니다. 하위 창에서 중요 뉴스로 분류된 뉴스에 대한 예측 데이터를 위해 현재 데이터의 최신 값에 대한 히스토그램을 시간순으로 작성합니다. 결과 차트는 시간 프레임을 전환할 때 가격 차트와 시간적으로 동기화되어야 합니다. 또한 관련 데이터를 얻는 속도에 관심이 있습니다.

차트에서 사용할 수 있는 전체 기록 깊이에 대한 히스토그램을 의미합니까?

하지만 이것은 실제 사용을 위한 것이며, 실시간으로 어떠한 정보도 제공하지 않습니다. 아니면 내가 전혀 이해하지 못했는가? 글쎄, 우리는 예측과 현재 값을 얻었습니다. 글쎄, 우리는 히스토그램을 넣었습니다. 수동으로만 결정하시겠습니까?

달력에서 데이터 업데이트 속도를 확인하지 않았고, 준비된 데이터를 얻는 속도를 측정해야 하는데 속도가 꽤 빨라서 그런 욕구는 없다.