![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В OnTick() организован бесконечный цикл. Есть ли возможность программно установить факт смены графика, осуществляемой вручную (например, перетаскиванием мышью)? Установлено, что изменений значений переменных _Symbol и _UninitReason при смене графика не происходит, поэтому их использовать как условие замены графика невозможно. Спасибо.
А зачем засовывать бесконечные циклы в OnTick для такой задачи.
Это же жестко в плане нагрузки на процессор. Chart функции одни из самых дорогих.
Не проще ли через OnChartEvent без всяких циклов и Sleep- ов:
А зачем засовывать бесконечные циклы в OnTick для такой задачи.
Это же жестко в плане нагрузки на процессор. Chart функции одни из самых дорогих.
Не проще ли через OnChartEvent без всяких циклов и Sleep- ов:
В моем случае предлагаемый Вами способ не годится. Я использую бесконечный цикл для управления "живыми" управляющими объектами (ну, кнопками). И мне нужен был небольшой сервис для случая ручной замены графика. Вопрос решился чрезвычайно просто с помощью одной строки без какой бы то ни было "избыточной" нагрузки на процессор:
Chart определен выше у fxsaber.
Спасибо за участие.
В моем случае предлагаемый Вами способ не годится. Я использую бесконечный цикл для управления "живыми" управляющими объектами (ну, кнопками). И мне нужен был небольшой сервис для случая ручной замены графика. Вопрос решился чрезвычайно просто с помощью одной строки без какой бы то ни было "избыточной" нагрузки на процессор:
Chart определен выше у fxsaber.
Спасибо за участие.
Вы не поняли мою мысль.
Попробуйте сделать профилирование и Вы ахнете, какая медленная функция ChartSymbol. Если вы будете выполнять эту функцию на каждом тике, да еще в цикле, то поймете, насколько это большая роскошь.
Гораздо проще определить глобальную переменную, скажем Cur_Symbol, и вычислять ее именно в OnChartEvent при наступления события CHARTEVENT_CHART_CHANGE
тогда Ваша очень "дорогая" строчка в OnTick будет выглядеть следующим образом:
и на эту процедуру, уверяю Вас, суммарно времени на выяснение ручной замены графика будет тратиться в тысячи раз меньше.
Вы не поняли мою мысль.
Попробуйте сделать профилирование и Вы ахнете, какая медленная функция ChartSymbol. Если вы будете выполнять эту функцию на каждом тике, да еще в цикле, то поймете, насколько это большая роскошь.
Гораздо проще определить глобальную переменную, скажем Cur_Symbol, и вычислять ее именно в OnChartEvent при наступления события CHARTEVENT_CHART_CHANGE
тогда Ваша очень "дорогая" строчка в OnTick будет выглядеть следующим образом:
и на эту процедуру, уверяю Вас, суммарно времени на выяснение ручной замены графика будет тратиться в тысячи раз меньше.
Бесконечный цикл. Нет ОнТика и ОнЧартИвента. Только хардкор )
Вы не поняли мою мысль.
Попробуйте сделать профилирование и Вы ахнете, какая медленная функция ChartSymbol. Если вы будете выполнять эту функцию на каждом тике, да еще в цикле, то поймете, насколько это большая роскошь.
Гораздо проще определить глобальную переменную, скажем Cur_Symbol, и вычислять ее именно в OnChartEvent при наступления события CHARTEVENT_CHART_CHANGE
тогда Ваша очень "дорогая" строчка в OnTick будет выглядеть следующим образом:
и на эту процедуру, уверяю Вас, суммарно времени на выяснение ручной замены графика будет тратиться в тысячи раз меньше.
Простите, был невнимателен, Вы правы. Спасибо.