Отличие работы функции OnChartEvent в МТ4 и в МТ5

Eugeni Neumoin
15672

По многочисленным просьбам пользователей перевел код ZUP с MQL4 на MQL5.

В МТ4 все работает как часы. Большое количество кнопок графического интерфейса через функцию OnChartEvent отрабатывают мгновенно.

И когда открыт рынок, и когда закрыт - в выходные.

В МТ5 тот же самый код в рабочие дни работает, хотя и с задержками.

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

В МТ4 в тестере все функции графического интерфейса работают. А при профилировании в МТ5 некоторые кнопки работать отказываются.

Почему такое отличие в работе функции OnChartEvent  в МТ4 и в МТ5.

Artyom Trishkin
Модератор
82756
Eugeni Neumoin:

По многочисленным просьбам пользователей перевел код ZUP с MQL4 на MQL5.

В МТ4 все работает как часы. Большое количество кнопок графического интерфейса через функцию OnChartEvent отрабатывают мгновенно.

И когда открыт рынок, и когда закрыт - в выходные.

В МТ5 тот же самый код в рабочие дни работает, хотя и с задержками.

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

В МТ4 в тестере все функции графического интерфейса работают. А при профилировании в МТ5 некоторые кнопки работать отказываются.

Почему такое отличие в работе функции OnChartEvent  в МТ4 и в МТ5.

ChartRedraw() делайте когда необходимо отобразить изменения. Иначе - только с новым тиком.

Vitaly Muzichenko
17146
Artyom Trishkin:

ChartRedraw() делайте когда необходимо отобразить изменения. Иначе - только с новым тиком.

Это очень дорогая функция

Artyom Trishkin
Модератор
82756
Vitaly Muzichenko:

Это очень дорогая функция

Но в mql4 она по умолчанию отрабатывает при взаимодействии с графикой, и при этом

В МТ4 все работает как часы. Большое количество кнопок графического интерфейса через функцию OnChartEvent отрабатывают мгновенно.

В mql5 же для контроля за производительностью нам дана возможность использовать её выборочно, а не исключительно, как в mql4, что при равных условиях даёт преимущество неиспользования её там, где не нужно.

ЗЫ. Меня вообще конечно порой поражает, что пользователи ранее - лет 10 назад - можно сказать прям требовали дать более низкоуровневый доступ в mql4 - для точечного и разумного использования открывающихся при этом возможностей. Нет-нет, да проскакивали на форуме такие просьбы. Ну дали - в mql5 это по умолчанию есть. И теперь люди эту возможность стали преподносить как недостаток. Наверное такова природа человека..

Eugeni Neumoin
15672
Vitaly Muzichenko:

Это очень дорогая функция

Это не критично. ZUP - использует индикаторное построение. Отработка нажатий кнопок происходит редко и быстро. На основную работу это не влияет.

Artyom Trishkin: 

ЗЫ. Меня вообще конечно порой поражает, что пользователи ранее - лет 10 назад - можно сказать прям требовали дать более низкоуровневый доступ в mql4 - для точечного и разумного использования открывающихся при этом возможностей. Нет-нет, да проскакивали на форуме такие просьбы. Ну дали - в mql5 это по умолчанию есть. И теперь люди эту возможность стали преподносить как недостаток. Наверное такова природа человека..

Вопрос был - почему в МТ4 работает, а в МТ5 не работает...

Проверю с ChartRedraw(). Результат отпишу здесь.

Напрягает - придется очень много строчек кода "забить" функцией ChartRedraw(). Но попробую, для начала там, где вообще не работает в МТ5.

Eugeni Neumoin
15672

Экспресс тест.

Работает с ChartRedraw();

Спасибо Артем.

================

Но работает странным образом. Стали нажиматься те кнопки, на которые не нажимаю. Разберусь.

Artyom Trishkin
Модератор
82756
Eugeni Neumoin:

Это не критично. ZUP - использует индикаторное построение. Отработка нажатий кнопок происходит редко и быстро. На основную работу это не влияет.

Вопрос был - почему в МТ4 работает, а в МТ5 не работает...

Проверю с ChartRedraw(). Результат отпишу здесь.

Напрягает - придется очень много строчек кода "забить" функцией ChartRedraw(). Но попробую, для начала там, где вообще не работает в МТ5.

В MetaTrader5 тоже работает. Но обновление графика происходит только на новом тике если нет принудительного обновления ChartRedraw(). Отсюда и кажущиеся "тормоза" и "неработа" в выходные

Taras Slobodyanik
49948

Насколько помню, в МТ4 прямой доступ к объектам своего графика - как только произошло обращение, объект сразу изменяется.

В МТ5 есть очередь, в которую собираются все запросы, и всё исполняется по очереди.
Это можно увидеть при профилировании когда некоторые, встроенные, функции начинают явно "тормозить".

Раньше это был, конкретный тормоз, сейчас уже ускорили немного.

Georgiy Merts
9029
Artyom Trishkin:
 

ЗЫ. Меня вообще конечно порой поражает, что пользователи ранее - лет 10 назад - можно сказать прям требовали дать более низкоуровневый доступ в mql4 - для точечного и разумного использования открывающихся при этом возможностей. Нет-нет, да проскакивали на форуме такие просьбы. Ну дали - в mql5 это по умолчанию есть. И теперь люди эту возможность стали преподносить как недостаток. Наверное такова природа человека..

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

Всем в любом случае не угодишь.

Eugeni Neumoin
15672
Georgiy Merts:

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

Всем в любом случае не угодишь.

Почему же не угодишь? Вполне можно угодить. Надо сделать этот низкоуровневый доступ отключаемым или включаемым отдельной командой (функцией).
Artyom Trishkin
Модератор
82756
Georgiy Merts:

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

Всем в любом случае не угодишь.

Не берусь утверждать. Просто отложилось в памяти об одном и том же пользователе. Ну и со временем обобщённое мнение появилось.

А всем угождать-то и не надо. Кому нужно, тот давно оценил.