2 -ой миллисекундный таймер. - страница 5

 
papaklass:
 Тема о целесообразности 2-го МИЛЛИСЕКУНДНОГО таймера и о переполнении счетчика таймера, а не о моих представлениях. :)

Так я уже написал:

Всем спасибо!

Не понятно почему продолжили.... 

 
Печаль в том, что функции GetMicrosecondCount(), GetTickCount64() не эмулируются в тестере стратегий,они всегда превязаны к своим параметрам, а не к временному ряду в тестере. Странное решение разработчиков. "Для организации счетчиков и таймеров высокого разрешения нужно использовать функцию GetTickCount(), которая выдает значения в миллисекундах." Спасибо. А как тестировать с этим замечательным инструментом? Ответ - никак. В итоге можно забыть о тестировании тиковых высокочастотных советников, минимальный порог для тестера - 1 секунда.
 
Konstantin Efremov:
Печаль в том, что функции GetMicrosecondCount(), GetTickCount64() не эмулируются в тестере стратегий,они всегда превязаны к своим параметрам, а не к временному ряду в тестере. Странное решение разработчиков. "Для организации счетчиков и таймеров высокого разрешения нужно использовать функцию GetTickCount(), которая выдает значения в миллисекундах." Спасибо. А как тестировать с этим замечательным инструментом? Ответ - никак. В итоге можно забыть о тестировании тиковых высокочастотных советников, минимальный порог для тестера - 1 секунда.

Вы ошибаетесь.

  1. Тестер миллисекундный, это легко проверить распечаткой времени
  2. Таймер тоже работает в тестере
  3. Задержки при использовании Sleep эмулируются тестером
  4. Ваши собственные методы задержек через собственные ожидания не эмулируются конечно - в этом ваша ошибка 
 

Renat Fatkhullin:

Тестер миллисекундный, это легко проверить распечаткой времени

Это очень сложно сделать (почти невозможно), т.к. нет функции времени с точностью до миллисекунд.

 
fxsaber:

Это очень сложно сделать (почти невозможно), т.к. нет функции времени с точностью до миллисекунд.

Логи распечатываются с миллисекундной точностью, в MqlTick есть миллисекундное время time_msc, EventSetMillisecondTimer позволяет устанавливать миллисекундные таймеры, а Sleep не только миллисекундный, но и в режиме тестера умеет правильно прокручивать мир вперед.

Для доказательства ошибочности заявления "порог для тестера 1 секунда" этого более чем достаточно.


Для учета микросекунд мы предлагаем очень точный GetMicrosecondCount. Миллисекунды и микросекунды обычно используют не в абсолютных значениях (хотя у нас это есть в ценовом тике для удобства), а для замера промежутков времени. Эти промежутки очень легко и удобно считать в MQL5.

Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура для получения текущих цен
Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура для получения текущих цен
  • www.mql5.com
У каждого тика всегда заполняются все параметры, независимо от того, изменились ли данные по сравнению с предыдущим тиком. Это позволяет всегда иметь актуальное состояние цен на любой момент времени без поиска...
 
Renat Fatkhullin:

Логи распечатываются с миллисекундной точностью, в MqlTick есть миллисекундное время time_msc, EventSetMillisecondTimer позволяет устанавливать миллисекундные таймеры, а Sleep не только миллисекундный, но и в режиме тестера умеет правильно прокручивать мир вперед.

Я к тому, что в советнике невозможно узнать текущее время Тестера с нужной точностью. Такого инструментария просто нет.

 
fxsaber:

Я к тому, что в советнике невозможно узнать текущее время Тестера с нужной точностью. Такого инструментария просто нет.

В MqlTick время входа в миллисекундах на OnTick в тестере.

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

В тестере вам доступно время с достаточной миллисекундной точностью на входе, но требовать абсолютного времени с милли/микросекундной точностью в любой момент времени не имеет смысла.

 
Renat Fatkhullin:

В MqlTick время входа в миллисекундах на OnTick в тестере.

Во всех On-функциях, кроме OnTick, точное время недоступно в Тестере, к сожалению.

На реале научились обходить.

 
Stanislav Korotky:
Обычно одного таймера хватает на все нужды. От него можно "запитать" вызов всех событий с разными периодами.

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

 

странное поведение системного таймера в тестере

double OnTester()
   {
      return(GetTickCount()); // return(GetTickCount64());
   }