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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Eugeni Neumoin
15108
Eugeni Neumoin  

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Vitaly Muzichenko
13914
Vitaly Muzichenko  
Artyom Trishkin:

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

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

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

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

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

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

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

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

Eugeni Neumoin
15108
Eugeni Neumoin  
Vitaly Muzichenko:

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

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

Artyom Trishkin: 

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

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

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

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

Eugeni Neumoin
15108
Eugeni Neumoin  

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

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

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

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

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

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

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

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

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

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

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

Taras Slobodyanik
36413
Taras Slobodyanik  

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

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

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

Georgiy Merts
9181
Georgiy Merts  
Artyom Trishkin:
 

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

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

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

Eugeni Neumoin
15108
Eugeni Neumoin  
Georgiy Merts:

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

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

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

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

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

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

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

123
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий