Работа OnCalculate в индикаторе

 

Добрый день

Собрался делать индикатор типа "поводырь", который будет проводить вычисления используя совокупность инструментов, например спот, нефть, РТС, индекс доллара. Возник вопрос как часто будет вызываться OnCalculate: при изменении цен всех используемых в индикаторе инструментов или только того в окне которого запущен индикатор?

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

 
кто может лучше рассказать про функцию, как не документация https://www.mql5.com/ru/docs/event_handlers/oncalculate
Документация по MQL5: Обработка событий / OnCalculate
Документация по MQL5: Обработка событий / OnCalculate
  • www.mql5.com
OnCalculate - Обработка событий - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
SanAlex:
кто может лучше рассказать про функцию, как не документация https://www.mql5.com/ru/docs/event_handlers/oncalculate

Привет!

Я как бы адекватный человек и если бы нашел ответ на свой вопрос в документации, то не задавал бы его тут. Про событие OnTick однозначно написано что оно генерируется тиками инструмента,  к которому привязан советник, хотя это и так очевидно. А про OnCalculate такого не сказано и это не очевидно.

 
AlexInRush:

Про событие OnTick однозначно написано что оно генерируется тиками инструмента,  к которому привязан советник, хотя это и так очевидно. А про OnCalculate такого не сказано и это не очевидно.

По параметрам функции OnCalculate очевидно какие данные приходят.
И в описании параметров явно сказано про бары на графике.

Хотите обновляться независимо (или как-то по своему), делайте расчеты в ОнТаймере.

 
AlexInRush:

Привет!

Я как бы адекватный человек и если бы нашел ответ на свой вопрос в документации, то не задавал бы его тут. Про событие OnTick однозначно написано что оно генерируется тиками инструмента,  к которому привязан советник, хотя это и так очевидно. А про OnCalculate такого не сказано и это не очевидно.

Как это не описано? Все лаконично и понятно описано:

Calculate #

Событие Calculate генерируется только для индикаторов сразу после посылки события Init и при любом изменении ценовых данных. Обрабатывается функцией OnCalculate.

По сути обработки поступления ценовых данных на других инструментах есть два способа:

  1. Установить на нужные символы индикаторы-шпионы и от них получать данные в момент прихода тика.
  2. Обрабатывать данные через таймер в пределах одного символа. Это более простой, но и более проблемный способ в плане получения свежих данных. Так, если установить слишком высокую частоту таймера, то получим общее замедление системы. Если поставить слишком низкую, то получим запаздывание.
Документация по MQL5: Программы MQL5 / События клиентского терминала
Документация по MQL5: Программы MQL5 / События клиентского терминала
  • www.mql5.com
События клиентского терминала - Программы MQL5 - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Ihor Herasko:

Как это не описано? Все лаконично и понятно описано:

Calculate #

Событие Calculate генерируется только для индикаторов сразу после посылки события Init и при любом изменении ценовых данных. Обрабатывается функцией OnCalculate.

По сути обработки поступления ценовых данных на других инструментах есть два способа:

  1. Установить на нужные символы индикаторы-шпионы и от них получать данные в момент прихода тика.
  2. Обрабатывать данные через таймер в пределах одного символа. Это более простой, но и более проблемный способ в плане получения свежих данных. Так, если установить слишком высокую частоту таймера, то получим общее замедление системы. Если поставить слишком низкую, то получим запаздывание.

Всем спасибо, разобрался.

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