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

 
AdrianR007 #:
예제의 코드를 사용하고 있지만 이벤트가 발생할 때 현재 값이 업데이트되지 않습니다. 이에 대한 제안 사항이 있나요?

이 예제는 테스터에서 캘린더가 어떻게 작동하는지 보여주기 위해 만들어졌습니다. 이 지침과 함께 제공됩니다.

MT5 터미널에서 한 번 실행하여 모든 기록 데이터(~60Mb)를 저장합니다. 그 후에는 테스터에서 사용할 수 있습니다.

안타깝게도 계속 불명확한 설명을 하셔서 "무슨 뜻일까?"라는 가설을 세우는 데 시간이 걸립니다.

 
fxsaber #:

이 예제는 테스터에서 캘린더가 어떻게 작동하는지 보여주기 위해 만들어졌습니다. 다음 지침과 함께 제공됩니다.

안타깝게도 계속 불명확한 설명을 하셔서 "저게 무슨 뜻일까?"라는 가설을 세우는 데 시간이 걸립니다.

뉴스가 발생하는 순간 현재 값이 예상 값에 대해 업데이트되지 않으므로 연산이 실행되지 않습니다. 저는 테스트가 아닌 실시간 뉴스 항목의 연산에 대해 이야기하고 있습니다. 테스트 모드에서는 매우 잘 작동합니다.
 
AdrianR007 #:
뉴스가 발생하는 순간 현재 값은 예상 값에 대해 업데이트되지 않으므로 연산이 실행되지 않습니다. 저는 테스트가 아닌 실시간 뉴스 항목의 연산에 대해 이야기하고 있습니다. 테스트 모드에서는 매우 잘 작동합니다.

트레이딩, 자동매매 시스템 및 테스트 트레이딩 전략에 관한 포럼.

라이브러리: 캘린더

빌리언클럽, 2023.02.23 19:35

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


 
Enrique Dangeroux #:

고마워요, 엔리케. 이 작업을 수행한 예가 있으신가요?
 
AdrianR007 #:
고마워요 엔리케. 이 작업을 수행하는 예제가 있을까요?

기본적인 코딩 강의를 할 시간이 없습니다. 문서를 읽거나 포럼에서 물어보세요.

참고로 말씀드리자면 뉴스를 거래하고 싶다면 MQL 캘린더는 쓸모가 없습니다. 몇 초, 몇 분, 심지어 몇 시간까지 지연이 발생합니다.

 
AdrianR007 #:
뉴스가 발생하는 순간 현재 값은 예상 값에 대해 업데이트되지 않으므로 연산이 실행되지 않습니다. 저는 테스트가 아닌 실시간 뉴스 항목의 연산에 대해 이야기하고 있습니다. 테스트 모드에서는 매우 잘 작동합니다.

무엇을 실행하고 있는지 모르겠습니다. 캘린더 데이터 업데이트와 관련하여 다음 토론을 읽어보세요.


라이브러리는 캘린더 탭에서 사용할 수 있는 데이터만 제공합니다.

MetaTrader5 calendar updates - I'm looking to improve my news trading robot for MT5 platform calendar updates: Is it possible the same broker-by-broker
MetaTrader5 calendar updates - I'm looking to improve my news trading robot for MT5 platform calendar updates: Is it possible the same broker-by-broker
  • 2022.07.14
  • www.mql5.com
I would like to ask about mt5 platform calendar updates: is platform's calendar updated about actual values in real time. Is it possible  updating time is not the same broker-by-broker. Yes, i'm looking how to improve my news trading robot
 
fxsaber #:

무엇을 실행 중인지 모르겠습니다. 캘린더 데이터 업데이트에 관한 다음 토론을 읽어보세요.


라이브러리는 캘린더 탭에서 사용할 수 있는 데이터만 제공합니다.

정말 감사합니다. 이제 명확해졌습니다!!!....
 

MT5 캘린더를 이해하는 유일한 방법은 전/후 값을 비교하는 것입니다.

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

void OnStart()
{
  CALENDAR Calendar;
  
  if (Calendar.Set(NULL, CALENDAR_IMPORTANCE_NONE, 0, 0)) // MT5-터미널에서 모든 이벤트(기록 + 미래)를 로드했습니다.
  {
    const string FileName = "Calendars\\" + AccountInfoString(ACCOUNT_SERVER) + "\\Calendar_" +
                            AccountInfoString(ACCOUNT_SERVER) + "_" + TimeToString(TimeCurrent(), TIME_DATE) + ".bin";
    
    Calendar.Save(FileName); // 향후 미국/유럽 동기화 시 비교를 위해 저장되었습니다.
  }
}

물론 아무도 그렇게 하지 않을 것입니다.

 

트레이딩, 자동매매 시스템 및 트레이딩 전략 테스트 포럼

라이브러리: 캘린더

fxsaber, 2023.01.07 21:31.

달력 날짜에 자동 수정기를 만들어야 할 것 같습니다.

거래 서버와 일치하는 캘린더 보정기를 가져오는 것 같습니다.

#property script_show_inputs

input ulong inEventID = 840030006; // EventID
input string inName = ""; // 이름 -> 이벤트ID(비농업 급여 -> 840030016)
input datetime inFrom = D'2020.01.01';
input bool inDST = true;

void OnStart()
{
  CALENDAR Calendar;
    
  if (inName == "")
  {
    Calendar.Set(inEventID);
    Calendar.FilterByTime(inFrom, TimeCurrent());
    
    Calendar.CorrectTime(); // MQL 캘린더 특성 우회: https://www.mql5.com/ru/forum/444094/page14#comment_46213385
    
    if (inDST)
      Calendar.DST(); // 거래 서버가 유럽 시간으로 동기화되면 호출합니다.
  
    for (int i = Calendar.GetAmount() - 1; i >= 0; i--)
    {
      const EVENT Event = Calendar[i];    
      const datetime ChartNews = ChartNewsTime(Event.time); // https://www.mql5.com/ru/forum/357793/page5#comment_44225999
      
      if (Event.time != ChartNews)    
        Print("-" + (string)Event.EventID + ": " + TimeToString(ChartNews) + " != " + Event.ToString());
      else
        Print("+" + (string)Event.EventID + ": " + TimeToString(ChartNews) + " == " + Event.ToString());
    }
  }
  else // 이름으로 EventID를 가져옵니다.
  {
    string Currencies[2];
    
    // 현재 캐릭터의 통화를 가져옵니다.
    Currencies[0] = ::SymbolInfoString(_Symbol, SYMBOL_CURRENCY_BASE);
    Currencies[1] = ::SymbolInfoString(_Symbol, SYMBOL_CURRENCY_PROFIT);
    
    if (Calendar.Set(Currencies, CALENDAR_IMPORTANCE_MODERATE, inFrom) && Calendar.FilterByName(inName))
      for (int i = Calendar.GetAmount() - 1; i >= 0; i--)
        Print((string)Calendar[i].EventID + ": " + Calendar[i].ToString());
  }
}


결과.

+840030016: 2023.04.07 15:30 == 2023.04.07 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 236 K | -8 K | 311 K | 326 K
+840030016: 2023.03.10 15:30 == 2023.03.10 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 311 K | -35 K | 517 K | 504 K
+840030016: 2023.02.03 15:30 == 2023.02.03 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 517 K | 16 K | 223 K | 260 K
+840030016: 2023.01.06 15:30 == 2023.01.06 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 223 K | 57 K | 263 K | 256 K
+840030016: 2022.12.02 15:30 == 2022.12.02 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 263 K | -30 K | 261 K | 284 K
+840030016: 2022.11.04 14:30 == 2022.11.04 14:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 261 K | -97 K | 263 K | 315 K
+840030016: 2022.10.07 15:30 == 2022.10.07 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 263 K | 33 K | 315 K | 
+840030016: 2022.09.02 15:30 == 2022.09.02 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 315 K | 156 K | 528 K | 526 K

웹 캘린더와 일치합니다. 명백한 불일치를 발견하는 사람이 있으면 알려주세요.

이제 백테스트에 캘린더를 사용하는 것이 올바른 방법인 것 같습니다.

 
fxsaber #:

거래 서버와 일치하는 캘린더 교정기로 밝혀진 것 같습니다.


결과.

웹 캘린더와 일치합니다. 명백한 불일치를 발견하는 사람이 있으면 알려주세요.

이제 백테스트에 캘린더를 사용하는 것이 맞는 것 같습니다.

하지만 다른 나라의 시간이라면 어떻게 해야 하나요? 국가마다 시간대별로 날짜가 다르다는 것을 알고 있습니다.