Новая версия платформы MetaTrader 4 build 1350 - страница 10

 
Не использую стандартных библиотек не создаю объекты в oninit. 
Но проблема с зависание такая же. 
Если и советник и индикатор содержит в себе функцию переключения тф и символа, то происходит зависание. 

Они даже могут работать вместе, но стоит нажать переключение тф на индикаторе , сразу зависание. 
(на советнике все ок. )
 
Maxim Kuznetsov #:

Это у вас очевидные/типичные проблемы в советниках/индикаторах, точнее в очерёдностях OnInit() OnDeinit и создании/удалении своих объектов чарта. Тут ремонт терминала не имеет смысла :-)

hint: не создавайте объектов по крайней мере до первого OnChartEvent. Тем более просто в OnInit (что конечно удобно для быстрого прототипа, но не вполне соответствует реалиям).
И удалять объекты пачкой лучше по ChartObjectsDelete(0,общий_префикс_объектов), а не по старинке перебором в цикле. 

У меня нет удаления объектов через удаление. Тут используется команда для canvas -> Canvas.Destroy()

Которая и должна удалять.

И в какой версии языка есть данная команда ChartObjectsDelete - чёто - не найду.


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

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

По поводу - проблема не в терминале, я показал, что в МТ5 с тем же кодом всё нормально. Хотя в МТ5 есть также проблемы со скоростью объектов в продуктах с bmp.


P.S. если есть время, то измените предложенный выше код так, чтобы всё летало в МТ4. Тогда будет предметно доказано решение.


Taras Slobodyanik #:

Надо говорить не "Коснёмся темы дэшбордов", а "Коснёмся темы стандартной библиотеки".
Делайте всё сами и ничего не будет тормозить.

пс. имхо скорее всего конфликт имен в ресурсах.

Я знаю о существовании данной проблемы очень давно. Дэшборды на канвасе и не на канвасе одинаково виснут со многими советниками)

И проблема порой возникает, когда появляется третий продукт. Например 2 индюка или 1 индюк + 1 сов нормально работают, а добавь ещё один индикатор с bmp (или включающий на графике отслеживание объектов) и всё зависло.

Как по мне, проблема кроется в порядке обработке объектов советника, который неадекватно реагирует на изменения в общем списке объектов и изменениях графика/символа. Но это 99% не решить кодом.

1% оставим на опыт форумчан.

 
Vitaliy Kuznetsov #:

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

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

По поводу - проблема не в терминале, я показал, что в МТ5 с тем же кодом всё нормально. Хотя в МТ5 есть также проблемы со скоростью объектов в продуктах с bmp.

P.S. если есть время, то измените предложенный выше код так, чтобы всё летало в МТ4. Тогда будет предметно доказано решение.

Я знаю о существовании данной проблемы очень давно. Дэшборды на канвасе и не на канвасе одинаково виснут со многими советниками)

И проблема порой возникает, когда появляется третий продукт. Например 2 индюка или 1 индюк + 1 сов нормально работают, а добавь ещё один индикатор с bmp (или включающий на графике отслеживание объектов) и всё зависло.

Как по мне, проблема кроется в порядке обработке объектов советника, который неадекватно реагирует на изменения в общем списке объектов и изменениях графика/символа. Но это 99% не решить кодом.

1% оставим на опыт форумчан.

каким образом "получается подружить"? 


Эта проблема возникла не сильно давно. Примерно год (или ????) назад стали появляться такие проблемы. 

Пробовал без канваса, bmp ... 

Чистая панель с кнопкой + индикатор с переключением ТФ/символа = зависание! 

Каким образом это получается "решить" у остальных "суперпупер" программистов - непонятно.  Здесь же что спросить - так каждый молчит как партизан ..... 

 
Vladislav Andruschenko #:

каким образом "получается подружить"? 

Приходится городить костыли.

Закрывать обработку событий и передавать управление на переключение советнику через глобальную переменную или объект на экране со специфической надписью.

 
Vitaliy Kuznetsov #:

Приходится городить костыли.

Закрывать обработку событий и передавать управление на переключение советнику через глобальную переменную или объект на экране со специфической надписью.

ясно. 

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

"Будем ждать опытных программистов", которые знают все и как решить проблему. 

 

вот нашел, первый раз проблема была в сентябре 20го

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

Ошибки, баги, вопросы

Vladislav Andruschenko, 2020.09.11 11:40

Ребята. 

Есть проблема в МТ4 (1280) с сменой символа или ТФ.


Если использовать смену ТФ и символа с эксперта - то все меняется быстро! 

Как только я использую дополнительный индикатор (нашел в инете) - при смене символа или ТФ терминал зависает на 10 секунд. 


Проверил с любыми панелями (своими чужими) и всегда результат один, при смене ТФ или символа - терминал подвисает на 10 секунд и !!! эксперт деинициализируется - т.е. не инициализируется заново. 


пример индикатора по смене ТФ прикрепил.  Также прикрепил найденную в инете панель информации (старая чужая)

Попробуйте с своими панелями.  



В МТ5 все нормально! 


вот пример:



1. Нажимаю на графике смену ТФ/символа  с индикатора ChartSetSymbolPeriod! - происходит зависание на 10 секунд, 

2.  после этого эксперты деинициализируются (Эксперт с панелью , любой, просто графика) 

3. Снова нажимаю на смену того же ТФ *(та же кнопка на графике) и все инициализируется. 




Если эти действия делать с Эксперта (ChartSetSymbolPeriod) - то никаких проблем нет



Пример в видео. 

Эксперт - меняет ТФ  - никаких проблем.

Индикатор меняет ТФ - проблема с зависанием.

 



проверил несколько панелей демок - все тоже самое. 

скорее всего это баг в мт4. 


 

Нашел ошибку, это из-за строки Comment(""); при деините.

Можно проверить на стандартном эксперте Moving Average.mq4, просто добавляем:

void OnDeinit(const int reason)
  {
   Comment("");
  }

и всё, подвисание гарантировано.
если убираем, то всё работает ок.

 
Taras Slobodyanik #:

Нашел ошибку, это из-за строки Comment(""); при деините.

Можно проверить на стандартном эксперте Moving Average.mq4, просто добавляем:

и всё, подвисание гарантировано.
если убираем, то всё работает ок.

У меня каждый советник удаляет комментарий графика и не зависало ни разу…

 
Alexey Viktorov #:

У меня каждый советник удаляет комментарий графика и не зависало ни разу…

Зависает индикатор. 
Попробуйте индикатор выше. 

И правильно ли вы поняли ? Речь о кнопках... панелях...
 
Vladislav Andruschenko #:
Зависает индикатор. 
Попробуйте индикатор выше. 

И правильно ли вы поняли ? Речь о кнопках... панелях...

Тарас говорит об эксперте… Да и в индикаторах у меня, тоже почти везде есть удаление комментария.