Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Ради отстрела пятки сделали венигрет - таймфрейм меняется из индикатора, символ из советника. Ещё поди ресурсы и имена имеются общие. Что вы ожидаете ???
Максим. Все ждут кода, в котором Вы решите проблему. Не нравятся три кнопки, что я дал, далее были примеры с другими продуктами.
Было бы всё просто, не было бы такой глобальной проблемы в сотнях дэшбордах и торговых панелях.
к сожалению Вы не разобрались в примерах выше.
Посмотрите их и напишите еще раз, но с полными данными, которые выкладывали не один раз...
Естественно всё "сделано" как "нужно"
В примере выше видно, что советник Mooving - стандартный. Без объектов! но в него добавляем ObjectDeleteALL
В втором индикаторе только 1 объект - кнопка.
Никаких одинаковых названий.
Или как тогда объяснить поведение, что OnDeinit - удаляет один объект - и весь терминал зависает наглухо.
Ну я бы еще поверил, если бы там было +_100500 объектов.
Но пример выше показывает, что это явно "ненормальное поведение терминала"
Читаем справку,
что физически происходит при переключении таймфрейма ? 1.сохраняется шаблон 2. начинает удалятся советник 3. Удаляются индикаторы (2,3 порядок неопределён, зависит от билда)...загружается шаблон, по нему загружаются индикаторы и советник.
Где-то у вас происходит race - добавляете ObjectsDelete в OnDeinit "стандартного" индикатора, а советник не "отпускает"(или спамит) график, и ждёте пока он освободит ресурс. Что-то вот такое происходит. Возможно в советнике неверно отработана причина reason в OnDeinit или циклы не реагирует на IsStopped
Где-то у вас происходит race - добавляете ObjectsDelete в OnDeinit "стандартного" индикатора, а советник не "отпускает"(или спамит) график, и ждёте пока он освободит ресурс. Что-то вот такое происходит. Возможно в советнике неверно отработана причина reason в OnDeinit или циклы не реагирует на IsStopped
я выше привел пример с Комментом, советник просто очищает комментарий в деините и всё зависает, без удаления объектов и без канвасов и без ресурсов-объектов внутри ЕА.
Стандартный советник из поставки, просто добавьте Коммент и всё, приплыли.
Читаем справку,
что физически происходит при переключении таймфрейма ? 1.сохраняется шаблон 2. начинает удалятся советник 3. Удаляются индикаторы (2,3 порядок неопределён, зависит от билда)...загружается шаблон, по нему загружаются индикаторы и советник.
Где-то у вас происходит race - добавляете ObjectsDelete в OnDeinit "стандартного" индикатора, а советник не "отпускает"(или спамит) график, и ждёте пока он освободит ресурс. Что-то вот такое происходит. Возможно в советнике неверно отработана причина reason в OnDeinit или циклы не реагирует на IsStopped
Я прекрасно понимаю, что "объем" данных "может" повлиять на лаги.
Но в данном случае: всего лишь 1 объект. И зависание постоянное = 100% раз при использовании сразу и эксперта и индикатора.
Т.е. если бы это было случайно - то и ладно, можно списать на огромное количество объектов.
Но объект всего лишь 1 и зависание 100% всегда.
И если дело в своих разработках, то передать контрол управления не проблема.
Но реалии диктуют, что разработки от сотни тысяч авторов, не совмещаются на МТ4 100% при использовании этой функции.
Возникает конфликт.
И Если с эксперта эта функция вызывается нормально - без глюков! То с индикатора происходит зависание!
Нашел ошибку, это из-за строки Comment(""); при деините.
Можно проверить на стандартном эксперте Moving Average.mq4, просто добавляем:
и всё, подвисание гарантировано.
если убираем, то всё работает ок.
Это было бы очень странно...
Проверил на всякий случай именно с Moving Average. Ничего не виснет. Видимо, есть что-то еще. Уточните, все шаги для воспроизведения, пожалуйста.
Это было бы очень странно...
Проверил на всякий случай именно с Moving Average. Ничего не виснет. Видимо, есть что-то еще. Уточните, все шаги для воспроизведения, пожалуйста.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Новая версия платформы MetaTrader 4 build 1350
Vladislav Andruschenko, 2021.11.15 17:07
Теперь как минимум нас 3, которые видят этот явный баг, который возник примерно год назад...
Сейчас еще кто-нибудь "поймет"
Например у меня в эксперте, если отключить все удаление объектов и обращение к ChartSet/Get..... то зависания нет ))))
т.е. проблема явная в ChartSetSymbolPeriod в индикаторах, при ее использовании - эксперт деинициализируется и снова не инициализируется (Если в нем есть Работа с чартом и объектами.)
Для воспроизведения:
Индикатор PrototypeCanvasMulti_IND_dn.mq4 Нанести на график
В стандартный советник (любой) добвить:
При нажатии на кнопку DN - происходит зависание.
Это повторяется с любыми парами : Эксперт + индикатор (С функций переключения графика ТФ/Символа )
Уважаемая Администрация @MetaQuotes Пожалуйста, обратите на это внимание.
Это было бы очень странно...
Проверил на всякий случай именно с Moving Average. Ничего не виснет. Видимо, есть что-то еще. Уточните, все шаги для воспроизведения, пожалуйста.
что мы все здесь обсуждаем?)
Как я писал выше:
возьмите индикаторы которые выложил Vitaliy Kuznetsov, и стандартный эксперт, добавьте в него строку и вы все сами увидите.
без "коммента" всё переключается отлично
Индикатор можно взять только один, можно любой который у вас есть и который переключает символ/период.
Эксперт также можно брать любой.
Увы, понять проблему могут только те, кто постоянно с этим работает.
Для всех остальных надо что-то доказывать, показывать, рисовать, разъяснять....
А времени то не хватает :-)
Будет чудесно, если на эту проблему все таки обратят внимание. Хотя я уже предполагаю ее исход ......
Боюсь, что она также утонет в сотнях сообщениях - попытках что-то доказать....
Проверил. Да, зависает. Но пример слишком неочевиден. Лучше сделать вот такую тестовую подборку.
Советник Test_Expert:
Индикатор Test:
Для воспроизведения:
Эксперт выполнял удаление объектов почти 10 секунд. Таким образом, проблема имеется. Возникает вопрос: что при этом произошло с индикатором? Ведь о его действиях в журнале ничего нет. Его объект бесследно исчез. Новые попытки запустить индикатор, не выгружая, ни к чему не приводят. Нужно только удалить индикатор с графика и присоединить заново.
Думаю, тут проблема в синхронизации потоков: эксперт (отдельный поток) получает сообщение о переключении графика и начинает выполнять удаление единственного объекта, но ему каким-то образом мешает поток индикатора (он же - GUI терминала). К чести терминала, получившийся dead lock (если это действительно он), со временем раскрывается, что и позволяет терминалу продолжить работу, хоть и с небольшим подвисанием.
что мы все здесь обсуждаем?)
Как я писал выше:
Индикатор можно взять только один, можно любой который у вас есть и который переключает символ/период.
Эксперт также можно брать любой.
Для описания проблемы, если Вы действительно заинтересованы в ее решении, лучше приводить выхолощенные коды. В коде больше 100 строк никто разбираться не будет.