ChartGetInteger(), ChartTimePriceToXY() - серьезные проблемы вызывают зависание

Doerk Hilger  
Все функции Chart-Functions, такие как ChartGetInteger(), а также ChartTimePriceToXY() и ChartXYToTimePrice() все еще имеют серьезные проблемы. Иногда функции возвращают false, но без этого GetLastError() ничего не показывает. Иногда, особенно при интенсивном использовании в индикаторе и советнике на одном графике, время выполнения функций достигает 4-5 секунд. Излишне говорить, что использование 10 раз подряд просто замораживает все. В то же время, когда это происходит, ObjectGetInteger() показывает тот же эффект, но только при использовании версии 3-Params, а не при использовании версии 5-Params. Довольно странно, но верно и воспроизводимо по требованию. 

Забавный факт: я могу воспроизвести это только на VPS и виртуальных машинах, но не на обычных машинах или выделенных серверах, независимо от того, насколько сильно я нагружаю CPU и/или RAM, это не имеет никакого отношения к этому. На VPS это происходит сразу, но ТОЛЬКО когда оба, индикатор и советник, используют один и тот же график и одни и те же функции. Вообще-то можно было бы написать пример кода, но прежде я хочу убедиться, что MetaQuotes обратит на это внимание. 

Translated with DeepL

Nikolai Semko  
Doerk Hilger:
Все функции Chart-Functions, такие как ChartGetInteger(), а также ChartTimePriceToXY() и ChartXYToTimePrice() все еще имеют серьезные проблемы. Иногда функции возвращают false, но без этого GetLastError() ничего не показывает. Иногда, особенно при интенсивном использовании в индикаторе и советнике на одном графике, время выполнения функций достигает 4-5 секунд. Излишне говорить, что использование 10 раз подряд просто замораживает все. В то же время, когда это происходит, ObjectGetInteger() показывает тот же эффект, но только при использовании версии 3-Params, а не при использовании версии 5-Params. Довольно странно, но верно и воспроизводимо по требованию. 

Забавный факт: я могу воспроизвести это только на VPS и виртуальных машинах, но не на обычных машинах или выделенных серверах, независимо от того, насколько сильно я нагружаю CPU и/или RAM, это не имеет никакого отношения к этому. На VPS это происходит сразу, но ТОЛЬКО когда оба, индикатор и советник, используют один и тот же график и одни и те же функции. Вообще-то можно было бы написать пример кода, но прежде я хочу убедиться, что MetaQuotes обратит на это внимание. 

Translated with DeepL

Проблема старая, но не решенная до сих пор должным образом.

Можете здесь почитать:

наблюдаются некоторые противоречия
Vitaly Muzichenko  

И снова Я также столкнулся с тормозами

Перечитал старые темы и ...

Ничего кардинально не поменялось

Рассуждения:  К сожалению, работа с графикой и обработкой событий в мт5 желает быть лучшей, хотя-бы на уровне мт4, который это обрабатывает в разы быстрее при одинаковых условиях.

Ответ:

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

CHARTEVENT_CHART_CHANGE в MQL5

Slava, 2021.12.08 06:17

В экспертах MT4 всегда была копия графика и его свойств. Именно этим объясняется скорость доступа к свойствам графика, в том числе и к объектам.

Обработка событий всегда и везде асинхронна. И вы можете, например, отключить поступление событий от мыши, тогда другие события будут обрабатываться несколько быстрее. Вот события прихода тиков отключить никак нельзя. А вы когда нибудь сравнивали скорости тиковых потоков в четвёрке и пятёрке? А ещё стаканы цен и торговые события, которые в пятёрке гораздо сложнее, чем в четвёрке


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