라이브러리: 캘린더 - 페이지 7

 

감사합니다,

스크립트가 훌륭합니다. 저는 MT5를 처음 사용하며 캘린더 스크립트를 사용하고 있습니다. 과거 데이터의 경우 경제 데이터가 속한 기간을 어떻게 추가 할 수 있습니까? (예 : 릴리스 데이터의 경우 1 월은 1 월에 속합니다) ?


감사합니다,

Edwin

 
eapricorn 기간을 어떻게 추가할 수 있나요? (예: 발표 데이터의 경우 1월은 1월에 속합니다) ?
#include <fxsaber\Calendar\Calendar.mqh> // https://www.mql5.com/ko/code/32430

void OnStart()
{
  CALENDAR Calendar;
  
  Calendar.Set(NULL, CALENDAR_IMPORTANCE_HIGH, D'2023.01.01', D'2023.02.01');
  
  Print(Calendar.ToString());
}
 
fxsaber # :

안녕하세요 fxsaber,


메시지 주셔서 감사합니다. 제가 질문을 잘못 해석한 것 같아서 죄송합니다. 사실 제가 말씀드린 것은 MT5의 '달력 창'에서 일반적으로 기간 열에 '1월'이 있는 경우 오늘 발표되는 경제 데이터 '2023년 2월 2일'은 실제로 1월 경제 데이터를 가리키는 것입니다(첨부 사진 참조). 하지만 스크립트를 보면 데이터 발표 날짜만 있고 '기간'은 지정되지 않은 것을 알 수 있습니다. (첨부된 그림 참조).

MqlCalendarValue를 검색하고 "기간"날짜에 Value.period를 사용하려고 시도했지만 1970.01.01이라는 매우 이상한 값이 나옵니다 (첨부 파일 참조).

기간을 사용할 수 있는지, 그리고 스크립트에 추가하는 방법을 진심으로 알고 싶습니다. 감사합니다.

파일:
Calendar.jpg  298 kb
MT5_calendar.jpg  414 kb
MetaEditor.jpg  465 kb
 
eapricorn #:

실제로 MT5의 '달력 창'에서 기간 열에 '1월'이 표시되어 있는 것은 오늘 발표되는 경제지표 '2023년 2월 2일'이 실제로는 1월 경제지표를 가리키는 것입니다(첨부 사진 참조).

#include <fxsaber\Calendar\Calendar.mqh> // https://www.mql5.com/ko/code/32430

struct CALENDAR_EVENT : public EVENT
{
  string ToString() const
  {
    struct CALENDAR_VALUE : public MqlCalendarValue
    {
      string ToString( void ) const
      {
        static const string Month[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
        static const string Quarter[] = {"Q1", "Q2", "Q3", "Q4"};
        
        MqlDateTime Time;
    
        return((this.period && ::TimeToStruct(this.period, Time) ? (this.revision ? Quarter[(Time.mon - 1) / 3]
                                                                                  : Month[Time.mon - 1] + ((Time.day != 1) ? " " + (string)Time.day : NULL))
                                                                 : NULL));
      }
    } Value;

    return(this.EVENT::ToString() + (::CalendarValueById(this.id, Value) ? Value.ToString() : NULL));
  }
};

void OnStart()
{  
  CALENDAR Calendar;
  
  Calendar.Set();
  
  const int Size = Calendar.GetAmount();
  
  for (int i = 0; i < Size; i++)
  {
    const CALENDAR_EVENT Event = Calendar[i];
    
    Print(Event.ToString());
  }
}


2023.02.02 16:15 GBP 3 BoE Governor Bailey Speech (boe-governor-bailey-speech), United Kingdom (GB) |  |  |  |  
2023.02.02 17:15 EUR 3 ECB President Lagarde Speech (ecb-president-lagarde-speech), European Union (EU) |  |  |  |  
2023.02.02 20:30 EUR 3 ECB President Lagarde Speech (ecb-president-lagarde-speech), European Union (EU) |  |  |  |  
2023.02.03 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) |  | 16 K | 223 K |  Jan
2023.02.03 17:00 USD 3 ISM Non-Manufacturing PMI (ism-non-manufacturing-pmi), United States (US) |  | 53 | 49.6 |  Jan
2023.02.06 12:00 EUR 3 Retail Sales m/m (retail-sales-mm), European Union (EU) |  | 0.3% | 0.8% |  Dec
2023.02.06 17:00 CAD 3 Ivey PMI (ivey-pmi), Canada (CA) |  | 55.2 | 33.4 |  Jan
2023.02.07 05:30 AUD 3 RBA Interest Rate Decision (rba-interest-rate-decision), Australia (AU) |  |  | 3.1% |  
2023.02.07 19:30 CAD 3 BoC Governor Macklem Speech (boc-governor-macklem-speech), Canada (CA) |  |  |  |  
2023.02.08 06:30 INR 3 RBI Interest Rate Decision (rbi-interest-rate-decision), India (IN) |  |  | 6.25% |  
2023.02.08 17:30 USD 3 EIA Crude Oil Stocks Change (eia-crude-oil-stocks-change), United States (US) |  | -0.012 M | 4.140 M |  Feb 3
2023.02.09 AllDay EUR 3 EU Leaders Summit (eu-leaders-summit), European Union (EU) |  |  |  |  
2023.02.09 10:30 SEK 3 Riksbank Interest Rate Decision (riksbank-interest-rate-decision), Sweden (SE) |  |  | 2.5% |  
 

현재 뉴스 값이 즉시 생성되지 않기 때문인가요? 예제에서는 (Event.Actual!= LONG_MIN) && (Event.Forecast!= LONG_MIN) 메서드를 사용하지만 값이 허용되지 않습니다.

실제 테스트에서이 정확한 값을 허용하고 예제의 논리가 실행되도록하려면 어떻게해야합니까?

Gracias

 
AdrianR007 LONG_MIN) && (Event.Forecast!= LONG_MIN) 메서드를 사용하지만 해당 값은 허용되지 않습니다.

실제 테스트에서 이 값을 허용하고 예제의 로직이 실행되도록 하려면 어떻게 해야 하나요?

대화의 맥락을 이해하지 못합니다.

 
뉴스의 현재 값이 업데이트되고 있지 않으므로 (Event.Actual!= LONG_MIN) && (Event.Forecast!= LONG_MIN) 코드가 작동하지 않습니다. 이벤트가 발생하는 순간에 이벤트를 읽을 수 있는 다른 방법이 있나요?
 
AdrianR007 LONG_MIN) && (Event.Forecast!= LONG_MIN) 코드가 작동하지 않습니다. 이벤트가 발생하는 순간에 이벤트를 읽을 수 있는 다른 방법이 있나요?

너무 간결해서 무슨 뜻인지 명확하게 이해할 수 없습니다. 문의하려는 문제를 실행하여 확인할 수 있는 간결한 코드를 제공하세요.

 
fxsaber #:

너무 간결해서 무슨 뜻인지 명확하게 이해하지 못합니다. 실행하여 이야기하고자 하는 문제를 확인할 수 있는 간결한 코드를 제공하세요.

예제의 코드를 사용하고 있지만 이벤트가 발생할 때 현재 값이 업데이트되지 않습니다. 이에 대한 제안 사항이 있으신가요?
감사합니다.
파일:
Capture.PNG  124 kb
 
AdrianR007 #:
예제의 코드를 사용하고 있지만 이벤트가 발생할 때 현재 값이 업데이트되지 않습니다. 이에 대한 제안 사항이 있으십니까?
감사합니다.

자체 새로 고침 라이브러리가 아니며 캘린더에서 ID를 사용하여 mql5에서 새로운 데이터를 얻습니다.