Библиотеки: Calendar - страница 8

 
AdrianR007 #:
I am using the code from your example but the current value is not being updated when the event occurs. Any suggestion about it?

Этот пример был сделан для демонстрации работы календаря в Тестере. К нему идет такая инструкция.

Запускаем один раз в MT5-Терминале, чтобы сохранить все исторические данные (~60 Mb). После этого они будут доступны в Тестере.

К сожалению, вы продолжаете делать невнятные формулировки, отнимая у меня время на гипотезы "что же он имел в виду?".

 
fxsaber #:

Этот пример был сделан для демонстрации работы календаря в Тестере. К нему идет такая инструкция.

К сожалению, вы продолжаете делать невнятные формулировки, отнимая у меня время на гипотезы "что же он имел в виду?".

At the instant the news occurs, the Current value is not being updated with respect to the expected value, therefore the operation is not executed. I'm talking about the operation in a news item in real time and not in a test. In test mode it works very well.
 
AdrianR007 #:
At the instant the news occurs, the Current value is not being updated with respect to the expected value, therefore the operation is not executed. I'm talking about the operation in a news item in real time and not in a test. In test mode it works very well.
 
Enrique Dangeroux #:

Thanks Enrique. Maybe you have an example to do this?
 
AdrianR007 #:
Thanks Enrique. Maybe you have an example to do this?

I do not have time to give basic coding lesson. Either read the documentation or ask on the forums.

On a side note. If you want to trade the news, the MQL calendar is useless. There are delays from seconds, minutes even hours.

 
AdrianR007 #:
At the instant the news occurs, the Current value is not being updated with respect to the expected value, therefore the operation is not executed. I'm talking about the operation in a news item in real time and not in a test. In test mode it works very well.

Я не знаю, что вы запускаете. По поводу обновлений данных календаря почитайте следующее обсуждение.


Библиотека выдает только те данные, что доступны во вкладке Calendar.

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 #:

Я не знаю, что вы запускаете. По поводу обновлений данных календаря почитайте следующее обсуждение.


Библиотека выдает только те данные, что доступны во вкладке Calendar.

Thank you so much. It is clear for me now!!!...
 

Единственный способ разобраться в MT5-календаре - сопоставить значения ДО/ПОСЛЕ.

#include <fxsaber\Calendar\Calendar.mqh> // https://www.mql5.com/ru/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); // Сохранили для сопоставления в будущем, когда USA/Europe синхронизируются.
  }
}

Понятно, что этим никто заниматься не будет.

 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Библиотеки: Calendar

fxsaber, 2023.01.07 21:31

Похоже, надо делать автоматический корректор в датах календаря.

Похоже, получился корректор Календаря, который соответствует торговому серверу.

#property script_show_inputs

input ulong inEventID = 840030006; // EventID
input string inName = ""; // Name -> EventID (Nonfarm Payrolls -> 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

Совпадает с Web-календарем. Если кто-то увидит явные несоответствия, дайте знать.

Вот сейчас, похоже, корректно использовать календарь для бэктестов.

 
fxsaber #:

Похоже, получился корректор Календаря, который соответствует торговому серверу.


Результат.

Совпадает с Web-календарем. Если кто-то увидит явные несоответствия, дайте знать.

Вот сейчас, похоже, корректно использовать календарь для бэктестов.

А если это время другой страны? Знаю что в разных странах в разные даты переводят время.