Как получить в коде данные начала и конца периода тестирования

 

Доброго ВС!

Возможно ли в коде советника получить данные начала и конца периода тестирования, которые устанавливаются при запуске тестера стратегий?

период тестирования

 
TopSeller:

Доброго ВС!

Возможно ли в коде советника получить данные начала и конца периода тестирования, которые устанавливаются при запуске тестера стратегий?

Средствами MQL - нет. Только через WinAPI, но тоже слишком заморочливо.

Можно лишь по факту окончания прохода тестирования предположить, каковы эти данные. Но, я так понимаю, нужно знать это в самом начале прохода.

 
Одиночный проход.
#include <fxsaber\MultiTester\MTTester.mqh> // https://www.mql5.com/ru/code/26132

int OnInit()
{
  string Str;
  
  if (MTTESTER::GetSettings(Str))
  {
    Print(TimeCurrent()); // From
    Print((datetime)MTTESTER::GetValue(Str, "ToDate")); // To
  }
  
  return(INIT_FAILED);
}


Оптимизация (включая фермы).

Библиотеки: MultiTester - Настраиваю тестер, запускаю и не использую DLL.
Библиотеки: MultiTester - Настраиваю тестер, запускаю и не использую DLL.
  • 2021.06.20
  • www.mql5.com
How do you add a task for an ea on a symbol with input variables. How do you run an optimization like input variable A should run from 1 to 10 with steps of 1 and input variable B goes from 1 to 100 with steps of 10
 

Мммм...значит только с помощью подключаемого модуля. То-то я думаю, чего он у меня не компилируется?

Спасибо!

 
TopSeller:
Возможно ли в коде советника получить данные начала и конца периода тестирования, которые устанавливаются при запуске тестера стратегий?

Да, в коде советника вы можете получить данные о периоде тестирования, установленном в тестере стратегий MetaTrader.

Для получения начальной и конечной даты периода тестирования вы можете использовать функцию  ExpertRemove()  в связке с функциями  StartTime()  и  EndTime() . Вот пример кода, который позволяет получить начальную и конечную даты периода тестирования:

void OnStart() { datetime start = 0; datetime end = 0; if (TesterRunning()) { int expert = ExpertCreate(); ExpertRemove(expert); start = StartTime(); end = EndTime(); } // Используйте start и end в вашей логике советника // ... Print("Начальная дата периода тестирования: ", TimeToString(start, TIME_DATE)); Print("Конечная дата периода тестирования: ", TimeToString(end, TIME_DATE)); }

В этом примере мы проверяем, работает ли тестер стратегий ( TesterRunning() ). Затем мы создаем дополнительного эксперта ( ExpertCreate() ) и сразу же удаляем его ( ExpertRemove() ). После удаления эксперта мы можем получить начальную и конечную даты периода тестирования с помощью функций  StartTime()  и  EndTime() .

Обратите внимание, что эти функции будут возвращать нулевые значения, если тестер стратегий не запущен.

Вы можете использовать полученные значения начальной и конечной даты для управления логикой вашего советника, например, для ограничения выполнения определенных операций или анализа данных только внутри периода тестирования.


Вариант gpt

 
Yuriy Vasilyev #:

Да, в коде советника вы можете получить данные о периоде тестирования, установленном в тестере стратегий MetaTrader.

Для получения начальной и конечной даты периода тестирования вы можете использовать функцию  ExpertRemove()  в связке с функциями  StartTime()  и  EndTime() . Вот пример кода, который позволяет получить начальную и конечную даты периода тестирования:

void OnStart() { datetime start = 0; datetime end = 0; if (TesterRunning()) { int expert = ExpertCreate(); ExpertRemove(expert); start = StartTime(); end = EndTime(); } // Используйте start и end в вашей логике советника // ... Print("Начальная дата периода тестирования: ", TimeToString(start, TIME_DATE)); Print("Конечная дата периода тестирования: ", TimeToString(end, TIME_DATE)); }

В этом примере мы проверяем, работает ли тестер стратегий ( TesterRunning() ). Затем мы создаем дополнительного эксперта ( ExpertCreate() ) и сразу же удаляем его ( ExpertRemove() ). После удаления эксперта мы можем получить начальную и конечную даты периода тестирования с помощью функций  StartTime()  и  EndTime() .

Обратите внимание, что эти функции будут возвращать нулевые значения, если тестер стратегий не запущен.

Вы можете использовать полученные значения начальной и конечной даты для управления логикой вашего советника, например, для ограничения выполнения определенных операций или анализа данных только внутри периода тестирования.


Вариант gpt

По логике следующий шаг - это узнать код функций ExpertCreate(), StartTime() и EndTime(). Код функции TesterRunning() можно не спрашивать ))

Причина обращения: