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

 
Taras Slobodyanik #:

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

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

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


нет. 

Comment нет в коде (индикатор и эксперт)

причина не в этом. 


зависание происходит при : использовании ChartSetInteger и ObjectDelete (ObjectsDeleteAll) 

 
Vladislav Andruschenko #:


нет. 

Comment нет в коде (индикатор и эксперт)

причина не в этом. 


зависание происходит при : использовании ChartSetInteger и ObjectDelete (ObjectsDeleteAll) 

Зачем говорить впустую?
возьмите индикаторы которые выложил Vitaliy Kuznetsov, и стандартный эксперт, добавьте в него строку и вы все сами увидите.

без "коммента" всё переключается отлично
 
Taras Slobodyanik #:

Зачем говорить впустую?
возьмите индикаторы которые выложил Vitaliy Kuznetsov, и стандартный эксперт, добавьте в него строку и вы все сами увидите.

без "коммента" всё переключается отлично

Но речь про ПАНЕЛИ и кнопки в экспертах и индикаторах! При чем здесь стандартный эксперт(в нем нет кнопок)? 

 

Можно вместо Comment(""); поставить ObjectsDeleteAll(); всё также подвисает.

В общем очевиден баг в МТ4.

 
Vladislav Andruschenko #:

Но речь про ПАНЕЛИ и кнопки в экспертах и индикаторах! При чем здесь стандартный эксперт? 

при том чтобы выявить ошибку и показать ее разработчикам.

 
Taras Slobodyanik #:

Можно вместо Comment(""); поставить ObjectsDeleteAll(); всё также подвисает.

В общем очевиден баг в МТ4.

воооот :-)

теперь Вы тоже в "теме" 

 
Vladislav Andruschenko #:

воооот :-)

теперь Вы тоже в "теме" 

так я и до этого был "в теме"))

про что мои посты?
 
Taras Slobodyanik #:

так я и до этого был "в теме"))

Теперь как минимум нас 3, которые видят этот явный баг, который возник примерно год назад... 

Сейчас еще кто-нибудь "поймет" 


Например у меня в эксперте, если отключить все удаление объектов и обращение к ChartSet/Get..... то зависания нет ))))

т.е. проблема явная в ChartSetSymbolPeriod в индикаторах, при ее использовании - эксперт деинициализируется и снова не инициализируется (Если в нем есть Работа с чартом и объектами.)

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

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

Taras Slobodyanik, 2021.11.15 17:05

Можно вместо Comment(""); поставить ObjectsDeleteAll(); всё также подвисает.

В общем очевиден баг в МТ4.

Для воспроизведения:

Индикатор PrototypeCanvasMulti_IND_dn.mq4 Нанести на график

В стандартный советник (любой) добвить:

void OnDeinit(const int reason)
       {
        ObjectsDeleteAll(0,"");
       }

При нажатии на кнопку DN - происходит зависание. 


Это повторяется с любыми парами : Эксперт + индикатор (С функций переключения графика ТФ/Символа )

Уважаемая Администрация @MetaQuotes Пожалуйста, обратите на это внимание. 

 
Vladislav Andruschenko #:

Теперь как минимум нас 3, которые видят этот явный баг, который возник примерно год назад... 

Сейчас еще кто-нибудь "поймет" 


Например у меня в эксперте, если отключить все удаление объектов и обращение к ChartSet/Get..... то зависания нет ))))

т.е. проблема явная в ChartSetSymbolPeriod в индикаторах, при ее использовании - эксперт деинициализируется и снова не инициализируется (Если в нем есть Работа с чартом и объектами.)

Для воспроизведения:

Индикатор PrototypeCanvasMulti_IND_dn.mq4 Нанести на график

В стандартный советник (любой) добвить:

При нажатии на кнопку DN - происходит зависание. 


Это повторяется с любыми парами : Эксперт + индикатор (С функций переключения графика ТФ/Символа )

Уважаемая Администрация @MetaQuotes Пожалуйста, обратите на это внимание. 

при переключении таймфреймов/символа/применения_шаблона были (наверное и сейчас есть) ситуации когда OnInit нового экземпляра начинает работать ранее завершения OnDeinit прежнего. 
Именно поэтому в OnInit не стоит создавать объекты (и ресурсы) которые должны пристреливаться в OnDeinit.

Если просто спокойно подумать, то процедуры смены_символа, смены_таймфрейма,применения_шаблона они мягко говоря отличаются. 
И к тому индикаторы (все) живут и работают в одном потоке, советники (каждый) в других.

Ради отстрела пятки сделали венигрет - таймфрейм меняется из индикатора, символ из советника. Ещё поди ресурсы и имена имеются общие. Что вы ожидаете ???

 
Maxim Kuznetsov #:

при переключении таймфреймов/символа/применения_шаблона были (наверное и сейчас есть) ситуации когда OnInit нового экземпляра начинает работать ранее завершения OnDeinit прежнего. 
Именно поэтому в OnInit не стоит создавать объекты (и ресурсы) которые должны пристреливаться в OnDeinit.

Если просто спокойно подумать, то процедуры смены_символа, смены_таймфрейма,применения_шаблона они мягко говоря отличаются. 
И к тому индикаторы (все) живут и работают в одном потоке, советники (каждый) в других.

Ради отстрела пятки сделали венигрет - таймфрейм меняется из индикатора, символ из советника. Ещё поди ресурсы и имена имеются общие. Что вы ожидаете ???

к сожалению Вы не разобрались в примерах выше. 

Посмотрите их и напишите еще раз, но с полными данными, которые выкладывали не один раз... 

Естественно всё "сделано" как "нужно" 


В примере выше видно, что советник Mooving - стандартный. Без объектов! но в него добавляем ObjectDeleteALL 

В втором индикаторе только 1 объект - кнопка. 

Никаких одинаковых названий. 

Или как тогда объяснить поведение, что OnDeinit - удаляет один объект - и весь терминал зависает наглухо. 

Ну я бы еще поверил, если бы там было +_100500 объектов.

Но пример выше показывает, что это явно "ненормальное поведение терминала"  


И это случается не случайно, а постоянно. Т.е. всегда. 
Причина обращения: