Хочется замерять время тестирования эксперта. Соответственно получать время запуска и завершения теста.
Есть ли такая возможность?
Я использую GetTickCount() в OnInit и OnDeinit. Разница и есть время выполнения (если нужно именно это).
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Особенности языка mql5, тонкости и приёмы работы
fxsaber, 2018.10.17 12:50
// Возвращает TimeLocal даже в Тестере datetime GetTimeLocal( void ) { static const bool IsTester = MQLInfoInteger(MQL_TESTER); static uint TickCount = 0; static datetime InitTimeLocal = 0; datetime Res = 0; if (IsTester) { if (InitTimeLocal) Res = InitTimeLocal + (GetTickCount() - TickCount) / 1000; else { int Array[]; const string FileName = __FUNCTION__; if (FileSave(FileName, Array)) { TickCount = GetTickCount(); Res = InitTimeLocal = (datetime)FileGetInteger(FileName, FILE_MODIFY_DATE); } } } else Res = TimeLocal(); return(Res); }
Применение
void OnInit() { Print(GetTimeLocal()); } double OnTester() { Print(GetTimeLocal()); return(0); }
Хочется замерять время тестирования эксперта. Соответственно получать время запуска и завершения теста.
Есть ли такая возможность?
https://www.mql5.com/ru/code/18804

- www.mql5.com
void GetLocalTime(ushort& time[]);
#import
// +------------------------------------------------------------------+
// | Script program start function |
// +------------------------------------------------------------------+
void OnStart()
{
ushort time[8];
GetLocalTime(time);
PrintFormat("Year=%d, Mn=%d, DOW=%d, Day=%d, H=%d, M=%d, S=%d, Msec=%d",
time[0], time[1], time[2], time[3], time[4], time[5], time[6], time[7]);
}
// +------------------------------------------------------------------+
https://docs.microsoft.com/en-us/windows/desktop/api/sysinfoapi/nf-sysinfoapi-getlocaltime

- 2018.12.05
- windows-sdk-content
- docs.microsoft.com
Вызовы WinAPI функций с недавних пор добавлены в MQL5:
//+------------------------------------------------------------------+ //| GetLocalTime.mq5 | //| Copyright © 2019, Vladimir Karputov | //| http://wmua.ru/slesar/ | //+------------------------------------------------------------------+ #property copyright "Copyright © 2019, Vladimir Karputov" #property link "http://wmua.ru/slesar/" #property version "1.00" #include <WinAPI\sysinfoapi.mqh> //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { //--- SYSTEMTIME system_time; GetLocalTime(system_time); PrintFormat("Year=%d, Month=%d, DayOfWeek=%d, Day=%d, Hour=%d, Minute=%d, Second=%d, Milliseconds=%d", system_time.wYear,system_time.wMonth,system_time.wDayOfWeek,system_time.wDay, system_time.wHour,system_time.wMinute,system_time.wSecond,system_time.wMilliseconds); } //+------------------------------------------------------------------+
Результат:
2019.04.21 18:52:34.353 Year=2019, Month=4, DayOfWeek=0, Day=21, Hour=18, Minute=52, Second=34, Milliseconds=340 2019.04.21 18:54:13.830 Year=2019, Month=4, DayOfWeek=0, Day=21, Hour=18, Minute=54, Second=13, Milliseconds=818
Добавлено: а вот запуск в тестере:
2019.04.03 00:00:00 Year=2019, Month=4, DayOfWeek=0, Day=21, Hour=18, Minute=59, Second=14, Milliseconds=254
Я использую GetTickCount() в OnInit и OnDeinit. Разница и есть время выполнения (если нужно именно это).

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Хочется замерять время тестирования эксперта. Соответственно получать время запуска и завершения теста.
Есть ли такая возможность?