Особенности языка mql5, тонкости и приёмы работы - страница 106

 
Alain Verleyen:
Он не работает, поскольку глобальная переменная эмулируется с помощью MT5 Tester. Они также используют TimeCurrent ().

Извиняйте, попутал с МТ4. Работает в МТ4, но не МТ5.

 
fxsaber:


Применение


ЗЫ А есть способ проще узнать локальное время компа в Тестере?

В таком виде это нерационально.  Реальное время требуется получить лишь один раз, а потом вычислять разницу через GetTickCount или GetMicrosecondCount

 
Alexey Navoykov:

В таком виде это нерационально.  Реальное время требуется получить лишь один раз, а потом вычислять разницу через GetTickCount или GetMicrosecondCount

Да, согласен.

 
А код? 
 
Алексей Тарабанов:
А код? 
 
Alexey Navoykov:

В таком виде это нерационально.  Реальное время требуется получить лишь один раз, а потом вычислять разницу через GetTickCount или GetMicrosecondCount

Плотность времени в тестере совсем другая. Не прокатит.

 
Алексей Тарабанов:
А код? 

Обновил.

 
в GetTickCount по хорошему надо переполнение учитывать
 
TheXpert:
в GetTickCount по хорошему надо переполнение учитывать

Если из одного UINTа вычесть другой UINT, то результат всегда будет правильный, даже в случае переполнения.

Иллюстрация

void OnStart()
  {
//---
   uint first=UINT_MAX-5;
   uint second=first+100;
   PrintFormat("%u - %u = %u",second,first,second-first);
  }

лог

2018.10.18 10:48:12.775 TestUint (EURUSD,M1)    94 - 4294967290 = 100
 
Slava:
Если из UINTа вычесть другой UINT, то результат всегда будет правильный, даже в случае переполнения.

Наверное, имелось в виду, что один проход может длиться дольше ~50 дней (тогда GetTickCount пройдет полный цикл). Но это не из области практики.

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