![Документация по MQL5: Обработка событий / OnCalculate Документация по MQL5: Обработка событий / OnCalculate](https://c.mql5.com/36/47/dokumentaciya-po-mql5-obrabotka.png)
- www.mql5.com
кто может лучше рассказать про функцию, как не документация https://www.mql5.com/ru/docs/event_handlers/oncalculate
Привет!
Я как бы адекватный человек и если бы нашел ответ на свой вопрос в документации, то не задавал бы его тут. Про событие OnTick однозначно написано что оно генерируется тиками инструмента, к которому привязан советник, хотя это и так очевидно. А про OnCalculate такого не сказано и это не очевидно.
Про событие OnTick однозначно написано что оно генерируется тиками инструмента, к которому привязан советник, хотя это и так очевидно. А про OnCalculate такого не сказано и это не очевидно.
По параметрам функции OnCalculate очевидно какие данные приходят.
И в описании параметров явно сказано про бары на графике.
Хотите обновляться независимо (или как-то по своему), делайте расчеты в ОнТаймере.
Привет!
Я как бы адекватный человек и если бы нашел ответ на свой вопрос в документации, то не задавал бы его тут. Про событие OnTick однозначно написано что оно генерируется тиками инструмента, к которому привязан советник, хотя это и так очевидно. А про OnCalculate такого не сказано и это не очевидно.
Как это не описано? Все лаконично и понятно описано:
Calculate #
Событие Calculate генерируется только для индикаторов сразу после посылки события Init и при любом изменении ценовых данных. Обрабатывается функцией OnCalculate.
По сути обработки поступления ценовых данных на других инструментах есть два способа:
- Установить на нужные символы индикаторы-шпионы и от них получать данные в момент прихода тика.
- Обрабатывать данные через таймер в пределах одного символа. Это более простой, но и более проблемный способ в плане получения свежих данных. Так, если установить слишком высокую частоту таймера, то получим общее замедление системы. Если поставить слишком низкую, то получим запаздывание.
![Документация по MQL5: Программы MQL5 / События клиентского терминала Документация по MQL5: Программы MQL5 / События клиентского терминала](https://c.mql5.com/36/47/dokumentaciya-po-mql5-programmi__2.png)
- www.mql5.com
Как это не описано? Все лаконично и понятно описано:
Calculate #
Событие Calculate генерируется только для индикаторов сразу после посылки события Init и при любом изменении ценовых данных. Обрабатывается функцией OnCalculate.
По сути обработки поступления ценовых данных на других инструментах есть два способа:
- Установить на нужные символы индикаторы-шпионы и от них получать данные в момент прихода тика.
- Обрабатывать данные через таймер в пределах одного символа. Это более простой, но и более проблемный способ в плане получения свежих данных. Так, если установить слишком высокую частоту таймера, то получим общее замедление системы. Если поставить слишком низкую, то получим запаздывание.
Всем спасибо, разобрался.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый день
Собрался делать индикатор типа "поводырь", который будет проводить вычисления используя совокупность инструментов, например спот, нефть, РТС, индекс доллара. Возник вопрос как часто будет вызываться OnCalculate: при изменении цен всех используемых в индикаторе инструментов или только того в окне которого запущен индикатор?
Если второй вариант, то предвижу проблему в том, что цена инструмента на котором висит индикатор может не меняться, а другие инструменты, которые составляют поводырь, могут начать активное движение. Ну и смысл такого поводыря сразу теряется, так как я об этом движении узнаю с опозданием. Кто-нибудь может сталкивался с подобными задачами?