Ошибки, баги, вопросы - страница 2618

 

Чутка странные котировки))

Это тики от Метаквот.

Генерируемые тики такого не показывают.

 
Stanislav Korotky:

Прошу проверить/подтвердить/опровергнуть ситуацию, что попытка рефреша чарта через рекомендованный способ ChartSetSymbolPeriod(0, NULL, 0); подвешивает терминал на несколько секунд (у меня ~ на 15). Прикладываю упрощенный индикатор для воспроизведения.

Требовалось сделать такое (раньше работало без проблем): в индикаторе есть вертикальная линия (объект), и после того как пользователь её передвигает, индикатор перестраивается с новым значением параметра Offset, берущегося из позиции линии.

Сам индикатор - примитивный: отображает котировку как есть (с параметрами по умолчанию) в подокне. Просчитывается моментально.

Чтобы воспроизвести проблему достаточно набросить индикатор на чарт и передвинуть вертикальную желтую линию назад на несколько баров.

В логе при этом выводятся сообщения:

- "Drag" моментально по факту.

- "Calc" через десяток секунд - он выводится при каждом OnCalculate.

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

В чем проблема? Как лечить?

Заранее спасибо.

Сколько графиков того же самого инструмента открыто?

Сколько баров на этих графиках.

Есть ли эксперты/индикаторы/скрипты, которые доступаются к данным этого же инструмента

 

Никого не хочу обидеть.

При проектировании пользовательского интерфейса, правилами хорошего тона является сохранение настроек пользователя. И как правило на такие "мелочи" не обращают внимания программисты занимаясь "глобальными" задачами. А ведь надо написать пару строчек кода.

https://www.mql5.com/ru/forum/1111/page2613#comment_14153742

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2019.12.06
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 
Slava:

Сколько графиков того же самого инструмента открыто?

Сколько баров на этих графиках.

Есть ли эксперты/индикаторы/скрипты, которые доступаются к данным этого же инструмента

Именно инструмента, или пары инструмент-таймфрейм?

Открываю чарт EURUSD D1 12000 баров. Больше на этом символе-таймфрейме ничего нет. Но есть еще чарты EURUSD M1, M5 и H1. Ограничений по барам нет. В частности на M1 - 7млн (MQ Demo). Был один служебный эксперт, пара индикаторов. Всё сейчас убрал. Даже все прочие чарты закрыл (оставил только EURUSD D1). Но проблема осталась.

 
Alain Verleyen:

В переводе не понятно, что это значит?

Я тестировал только 1 открытый график на EURUSD, может быть, у вас есть еще?

It's meant "a bit buggy, according to reviews".

 
Stanislav Korotky:

Именно инструмента, или пары инструмент-таймфрейм?

Открываю чарт EURUSD D1 12000 баров. Больше на этом символе-таймфрейме ничего нет. Но есть еще чарты EURUSD M1, M5 и H1. Ограничений по барам нет. В частности на M1 - 7млн (MQ Demo). Был один служебный эксперт, пара индикаторов. Всё сейчас убрал. Даже все прочие чарты закрыл (оставил только EURUSD D1). Но проблема осталась.

Именно инструмента.

Кнопка F5 на графике, выбор "Обновить" из контекстного меню графика делают то же самое, что и ChartSetSymbolPeriod(NULL,0,0). А именно обновление ценовых данных.

После того, как с сервера придёт ответ, все кеши периодов этого самого инструмента насильно перестраиваются. Чем больше кешей, тем дольше перестройка (интерфейс, кстати, при этом не замораживается)

Нажмите F5 и засеките время до момента, когда появится строка Calc в журнале экспертов

 
Slava:

Именно инструмента.

Кнопка F5 на графике, выбор "Обновить" из контекстного меню графика делают то же самое, что и ChartSetSymbolPeriod(NULL,0,0). А именно обновление ценовых данных.

После того, как с сервера придёт ответ все кеши периодов этого самого инструмента насильно перестраиваются. Чем больше кешей, тем дольше перестройка (интерфейс, кстати, при этом не замораживается)

Нажмите F5 и засеките время, когда появится строка Calc в журнале экспертов

Кнопка F5 и пункт контекстного меню Refresh работают по-разному: F5 визуально ничего не делает, Refresh - подвешивает терминал аналогично.

 
Slava:

После того, как с сервера придёт ответ, все кеши периодов этого самого инструмента насильно перестраиваются. Чем больше кешей, тем дольше перестройка (интерфейс, кстати, при этом не замораживается)

Тогда это очень жесткий рефреш. В MQL нужен какой-то более легкий способ обновить один единственный индикатор, без инвалидации котировок и кешей.

 
Stanislav Korotky:

Кнопка F5 и пункт контекстного меню Refresh работают по-разному: F5 визуально ничего не делает, Refresh - подвешивает терминал аналогично.

Да, точно. В MT5 нажатие F5 не вызывает обновления данных (в отличие от MT4)

Refresh подвешивает терминал? До состояния "(не отвечает)"? Вы не можете даже вкладки менять?

 
Slava:

Да, точно. В MT5 нажатие F5 не вызывает обновления данных (в отличие от MT4)

Refresh подвешивает терминал? До состояния "(не отвечает)"? Вы не можете даже вкладки менять?

Нет "подвес" мягкий, все работает, только обновляемый чарт "думает" и CPU 100%.

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

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