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

 
Andrey Khatimlianskii: Мерцание очень легко воспроизводится при сильно нагруженном процессоре. Запустите оптимизацию на всех локальных ядрах и попробуйте удалить/создать десяток объектов и сделать ЧартРедроу. Эффект гирлянды обеспечен.

Да, но хотелось бы как раз наоборот, не воспроизвести мерцание, а остановить его, сделать что-то такое, чтобы больше не видеть это мерцание.
Причем при благоприятных условиях, когда процессор не нагружен, можно сказать простаивает, оптимизация не запущена, т.е. локальные ядра тоже не нагружены, объекты не создаются, обращение к ChartRedraw() не происходит. И вот в таком спокойном состоянии компьютера "гирлянды" продолжают мигать!

А разработчики даже не ответили, это мерцание пока в принципе не устранимо и будет устранено лишь в будущих версиях MT5 или у разработчиков индикаторов кривые руки и они чего-то не догоняют при разработке индикаторов под MT5...

 

Мерцают не только пользовательские индикаторы, но и встроенные инструменты, к примеру "Канал регрессии".

 

Aleksey Vyazmikin: Мерцают не только пользовательские индикаторы, но и встроенные инструменты, к примеру "Канал регрессии".

Ну если так, то тогда и гадать нечего, значит эта проблема пока в принципе не устранима и будет решена в каких-то будущих версиях MT5. Разработчики должны честно сказать об этом и не заставлять программистов ломать голову, что они делают не так и как с этим бороться...

 

Пару дней я парился с этой фишкой.

пробовал все что выше посоветовали.

Не помогло.

Мерцание индикатора происходит в МТ5 по единственной причине:

при применении функции ChartGetInteger(0,CHART_VISIBLE_BARS ...

По крайней мере когда задал постоянное число вместо этой функции, то перестал мерцать.

Возможно как то коряво применил эту функцию, но тем не менее...
Документация по MQL5: Операции с графиками / ChartGetInteger
Документация по MQL5: Операции с графиками / ChartGetInteger
  • www.mql5.com
Возвращает значение соответствующего свойства указанного графика. Свойство графика должно быть типов datetime, int или bool. Существует 2 варианта функции. 2. Возвращает true или false в зависимости от успешности выполнения функции.  В случае успеха значение свойства помещается в приемную переменную, передаваемую по ссылке последним параметром...
 

Не помогло и это ;)))

 
Renat Akhtyamov:

Не помогло и это ;)))

" ... Функция является синхронной – это означает, что она дожидается выполнения всех команд, которые были помещены в очередь графика перед её вызовом. ... " 

Это из документации. От себя добавлю, что синхронная функция тормозит весь процесс, - пока ее исполнение не закончится, никакой другой процесс не начнет выполняться, даже если ресурсы для его выполнения имеются. 

 
Есть гипотеза, что мерцание зависит от перерисовки объектов движком терминала, т.е. если точки построения за пределами видимого экрана, то у них меньший приоритет для отрисовки, что проявляется при вычислительных нагрузках на чарте (в том числе скорость поступления котировок - замечал, что именно при сильных и интенсивных движениях возникает мерцание).
 
Aleksey Vyazmikin:
Есть гипотеза, что мерцание зависит от перерисовки объектов движком терминала, т.е. если точки построения за пределами видимого экрана, то у них меньший приоритет для отрисовки, что проявляется при вычислительных нагрузках на чарте (в том числе скорость поступления котировок - замечал, что именно при сильных и интенсивных движениях возникает мерцание).

очень хочется, чтобы разработчики обратили на эту тему внимание.

мерцание индикатора не возможно устранить самостоятельно.

 

кажись разобрался

не факт но

похоже на некоторое внешнее тестирование текущего эксперта, который в данный момент торгует на реале.

лично у меня выводы такие:

чарт строится ровно на 10 часов вперед, мы видим уже готовое

остальное справа за кулисами и постепенно едет к нам на экран

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

---

теперь в картинках

во первых меняется количество баров, а оно у меня фиксировано 1000, но поскольку расчет идет от нуля, то получается 1001:

в момент мерцания неожиданно баров стает на 600 меньше (и всегда при мерцании цифра одна и та же - 358):

и в момент мерцания индикатора иногда бывает такое (удалось поймать кадр только на видео):

и самое интересное: иногда в моменты мерцания графически кажет закрытые сделки из настоящего в будущее, т.е. они пока просто открыты, а будут закрыты где то там - за кулисами

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

а, ну да, совсем забыл

эта фича происходит вечером

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

;))))

----

а теперь прения ...

 
Aleksey Vyazmikin:
Есть гипотеза, что мерцание зависит от перерисовки объектов движком терминала, т.е. если точки построения за пределами видимого экрана, то у них меньший приоритет для отрисовки, что проявляется при вычислительных нагрузках на чарте (в том числе скорость поступления котировок - замечал, что именно при сильных и интенсивных движениях возникает мерцание).

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

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