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

Nikolai Semko
6373
Nikolai Semko  
Alexey Navoykov:

Вот вариант с использованием winapi-таймера высокого разрешения, дающего точность 5.6e-13 секунды.

Ну что Вы такое говорите? Получается что частота 1786 ГГц. А это уже частота инфракрасного излучения. :)) 
Просто Вы там перепутали частоту с счетчиком.
Реально  3.8e-07 секунды. Т.е. примерно треть микросекунды. Не существенно отличается от MQL


Alexey Navoykov
4562
Alexey Navoykov  
Nikolai Semko:

Ну что Вы такое говорите? Получается что частота 1786 ГГц. А это уже частота инфракрасного излучения. :)) 
Просто Вы там перепутали частоту с счетчиком.
Реально  3.8e-07 секунды. Т.е. примерно треть микросекунды. Не существенно отличается от MQL

Да, точно, перепутал )  Поправил.

Nikolai Semko
6373
Nikolai Semko  
Alexey Navoykov:

Да, точно, перепутал )

Хотя это реально решение.
Проверил - их счетчик не реагирует на смену локального времени.
Поэтому если нужны микросекунды и использовать их в течении длительного времени - тогда милости просим через Kernel32.dll
Спасибо!

Значит это все-таки баг, который для MQ поправить не составит труда.
Alexey Navoykov
4562
Alexey Navoykov  

Надо отправлять коллективные заявки в сервис-деск. Потому что иначе бесполезно.  Они даже на баги компилятора перестали реагировать. Куча заявок висит, а всё без толку...

Аналогично вот давно прошу их сделать миллисекундные TimeLocal и TimeCurrent (особенно второе, т.к. самому реализовать его проблематично)

A100
2094
A100  
Konstantin:

польза есть, с ее помощью можно разгружать GUI, вот к примеру тут:

объект класса Canvas на весь чарт, отрисовка данных в таблицах, данных кластера, уровней и т.д., если OnTimer вывернуть на максимум и там разместить GUI (а я именно так и делаю всегда), то без тормоза по времени один чарт грузит мой VPS примерно на 45-60 %, если делать задержку в 250, то все нормализуется до минимума, графика откликается на кнопки четко, система не грузится

А какая связь между обсуждаемой здесь GetMicrosecondCount() и OnTimer()?
MetaQuotes
Админ
27452
Renat Fatkhullin  
Alexey Navoykov:

Вот вариант с использованием winapi-таймера высокого разрешения, дающего точность 3.8e-07 секунды.

У нас так и считаются микросекунды
Nikolai Semko
6373
Nikolai Semko  
Renat Fatkhullin:
У нас так и считаются микросекунды

Ренат, а поправите привязку к локальному времени GetMicrosecondCount()?
А то ведь последствия могут быть самыми непредсказуемыми для тех, кто не знает данной особенности.




int OnInit()
  {
   EventSetMillisecondTimer(1000);
   return(INIT_SUCCEEDED);
  }
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
  {
   return(rates_total);
  }
void OnTimer()
  {
    Comment("Программа уже работает: "+(string)(round(double(GetMicrosecondCount())/1000000.0))+" сек");
  }
MetaQuotes
Админ
27452
Renat Fatkhullin  
Нет, это относительный таймер для точного замера промежутков времени, а не астрономического времени.
Nikolai Semko
6373
Nikolai Semko  
Renat Fatkhullin:
Нет, это относительный таймер для точного замера промежутков времени, а не астрономического времени.

Спасибо, буду знать. 
Меня справка ввела в заблуждение.

Alexey Navoykov
4562
Alexey Navoykov  
Renat Fatkhullin:
У нас так и считаются микросекунды

Почему бы тогда и GetTickCount не вычислять таким же способом?  Тогда исчезнет проблема разрешающей способности в 15 мс, которая доставляет проблемы.