Почему происходит мерцание индикаторов (линий, стрелок, гистограмм) в биржевом терминале MT5? - страница 10

Алексей Тарабанов:

Коню понятно, как говорила Алла Юрьевна. Компостер указывал причину, пусть косвенно. Мерцание возникает при перегрузе терминала,- это факт. Перегруз возникает по ряду причин и не всегда означает превышение вычислительных способностей оного. 

Хочется отметить, что Renat говорил об использовании 3D карт для отрисовки, возможно и в этом есть конфликт.

Впрочем, гадать сложно, пока проблема не признана разработчиками.

2026 год, мерцания так и не пропали, несколько лет эта проблема уже мучает, пользователи индюка почти каждый день пишут что мигают все объекты, помогает только перезапуск терминала, сам тоже периодически ловлю их

Кодишь, компилируешь, смотришь и так много раз, в определенный момент после очередной компиляции все объекты начинают мигать 

Специально ни как эти мигания вызвать не возможно, появляются сами когда хотят. Код один и тот же в МТ4 ни каких миганий не наблюдается 

Мигают объекты которые с индикатором вообще ни как не связаны, вертикальные линии брошенные руками тоже мигают 

Во время миганий постоянно валят события CHARTEVENT_CHART_CHANGE, 1-3 раза в секунду прям без остановочно


pivalexander #:
CHARTEVENT_CHART_CHANGE
и в этом событии обрабатывается какой-то код?
Vitaly Muzichenko #:
и в этом событии обрабатывается какой-то код?
Да и вот уже почти сутки, не разу не было такого бага 
pivalexander #:
Да и вот уже почти сутки, не разу не было такого бага 

так выходные-же, и тиков тоже нет :-)

проверяйте что вы там такого творите в OnTick. 

pivalexander #:
Да и вот уже почти сутки, не разу не было такого бага 

Решение проблемы

if(id==CHARTEVENT_CHART_CHANGE && lp!=16)
Maxim Kuznetsov #:

так выходные-же, и тиков тоже нет :-)

проверяйте что вы там такого творите в OnTick. 

Вчера весь день с утра я имел ввиду, по крипте тики идут и в выходные, OnTick  OnCalculate() не используется вообще, пустой 
Vitaly Muzichenko #:

Решение проблемы

По моему lparam: 1 был
pivalexander #:
Вчера весь день с утра я имел ввиду, по крипте тики идут и в выходные, OnTick  OnCalculate() не используется вообще, пустой 

вот с этого поподробнее - с какой крипты, как идут..На той стороне от вас сервер MQ ? конкретно какой или чарт генерится чем-то(опять-же конкретно чем) через CustomSymbol ?

если OnCalculate пуст, то по каким событиям вы обновляете/перерисовываете свою сцену ? ищите там, где-то что -то тормозит и/или выпаливает ChartRedraw() очередями. 

(есть варик что граф.объектов много, но уверяете что считанные штуки, и не злоупотребляете ObjectFind). Если у вас всего один Canvas ну так и делайте как в game-dev - обновление не чаще N кадров/сек и только если надо обновлять

pivalexander #:

2026 год, мерцания так и не пропали, несколько лет эта проблема уже мучает, пользователи индюка почти каждый день пишут что мигают все объекты, помогает только перезапуск терминала, сам тоже периодически ловлю их

Кодишь, компилируешь, смотришь и так много раз, в определенный момент после очередной компиляции все объекты начинают мигать 

Специально ни как эти мигания вызвать не возможно, появляются сами когда хотят. Код один и тот же в МТ4 ни каких миганий не наблюдается 

Мигают объекты которые с индикатором вообще ни как не связаны, вертикальные линии брошенные руками тоже мигают 

Во время миганий постоянно валят события CHARTEVENT_CHART_CHANGE, 1-3 раза в секунду прям без остановочно


моргание может происходить по двум причинам: 
  • слишком активно используете штатные функции GetChart... или XY функции. От их использования надо отказаться. Это многолетняя беда MQ, которую многократно обещали исправить, но забили на это
  • или слишком часто (более 64 раз в секунду) у вас происходит пересчет положения канваса или объектов. Это лечится легко элементарной заглушкой в том числе и на вызов события CHARTEVENT_CHART_CHANGE.