На подходе профилировщик кода MQL5 - страница 6

 
flops:
Критикуя, - предлагайте.
Как насчет чтения справки - https://www.mql5.com/ru/docs/eventfunctions/eventsettimer
Документация по MQL5: Работа с событиями / EventSetTimer
Документация по MQL5: Работа с событиями / EventSetTimer
  • www.mql5.com
Работа с событиями / EventSetTimer - Документация по MQL5
 
Rosh:
Как насчет чтения справки - https://www.mql5.com/ru/docs/eventfunctions/eventsettimer

Не понял, как это решает задачу:

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

Если я просто поставлю таймер, то буду пропускать тики. Если я буду работать только каждый тик, то время между ними может оказаться больше 1 секунды.

 
В принципе, мой код сейчас позволяет разделить таймер и тики, можно так и сделать , но не уверен, что в будущем можно будет этого избежать. Но вопрос не в этом, а в том, что показания по данной функции неправдоподобно большие.
 
flops:

Не понял, как это решает задачу:

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

Если я просто поставлю таймер, то буду пропускать тики. Если я буду работать только каждый тик, то время между ними может оказаться больше 1 секунды.

а вы не могли предположить (или догадаться на крайний случай), что OnTick и OnTimer - это два независимых события?
 
sergeev:
а вы не могли предположить (или догадаться на крайний случай), что OnTick и OnTimer - это два независимых события?
Возможно, я здесь упустил очень важный момент. Действие, которое необходимо выполнять, очень тяжелое - считывание истории котировок по нескольким инструментам + различные коррекции, вычисления. Поэтому цель была не только выполнять что-то не реже раза в 1 секунду, не пропуская новые тики, но и делать это как можно реже. Но оказалось, что профилировщик показывает, что установка таймера намного медленнее, чем даже все эти медленные действия. Это очень странно, и вопрос здесь только в этом.
 
Если бы мне было интересно мнение об оптимизации моего кода, я бы его попросил, причем в отдельной ветке. Не надо здесь оффтопить и предлагать свои решения, основанные на частичной информации, я все равно не дам вам все, для решения вопроса по профилировщику это не нужно, а вопрос исключительно по профилировщику и функции установки таймера.
Документация по MQL5: Работа с событиями / EventSetTimer
Документация по MQL5: Работа с событиями / EventSetTimer
  • www.mql5.com
Работа с событиями / EventSetTimer - Документация по MQL5
 
flops:

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

Проверяйте короче.

 
TheXpert:

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

Проверяйте короче.

Я надеюсь пока, что это просто ошибка профилировщика или медленная реализация EventSetTimer(), которую разработчики смогут исправить.
 
flops:
медленная реализация EventSetTimer()
Она не может быть быстрой.
 
flops:
Возможно, я здесь упустил очень важный момент. Действие, которое необходимо выполнять, очень тяжелое - считывание истории котировок по нескольким инструментам + различные коррекции, вычисления. Поэтому цель была не только выполнять что-то не реже раза в 1 секунду, не пропуская новые тики, но и делать это как можно реже. Но оказалось, что профилировщик показывает, что установка таймера намного медленнее, чем даже все эти медленные действия. Это очень странно, и вопрос здесь только в этом.
Если история была считана один раз, то она кешируется и следующее считывание происходит намного быстрее, так что вы зря вцепились в оптимизацию того что уже оптимизировано на уровне языка.