Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Есть вот такие люди, которым нравится жить в проблемах. У них такое самомнение особенное... что их проблемы такие уникальные и удивительные, неповторимые... А они такие страдальце вселенские.
Проблема возникает о попытки любой работы с объектами в деините советника.
Решение проблемы в советнике:
Может, ObjectFind() и не нужен.
Приложил бы код с проблемой, еще вчера бы проблема решилась
вообще не в этом проблема.
Эта проблема(подвисание OnChartEvent) существует только в MT4, и она совсем не очевидная. Сам очень долго мучался. Но в этой ветке она уже обсуждалось около года назад.
вообще не в этом проблема.
Эта проблема существует только в MT4, и она совсем не очевидная. Сам очень долго мучался. Но в этой ветке она уже обсуждалось околого года назад.
А я вообще не знаю в чем проблема, просто написал от чего она возникает и как решается. Но можете продолжать страдать...
А я вообще не знаю в чем проблема, просто написал от чего она возникает и как решается. Но можете продолжать страдать...
А я вообще не знаю в чем проблема, просто написал от чего она возникает и как решается. Но можете продолжать страдать...
Проблема деюнита здесь ни причем. Эта проблема возникает только в MT5. А здесь речь про МТ4.
Странный Вы человек.
Сами хотите, чтоб другие разбирались в вашем коде и сотен строк, задавая вопрос, но при этом даже не пытаетесь вникнуть в ответ и заглянуть в код из одной сотни строк.
Ладно. Упрощу жизнь.
Переведите весь код из OnChartEvent в OnTimer. Таймер установите на 30 миллисекунд. Нужно будет ввести только глобальные переменные (не терминала), которые должны обновляться в OnChartEvent, а сбрасываться(которые bool) в OnTimer.
Переменные могут быть такие
Для меня всё было совсем не так очевидно. По той ссылке, что я ранее давал, узнал, что проблема старая и её решение искали даже авторы с 10 000+ продажами на маркете не один раз.
И это касается всех советников МТ4 с объектами, а значит и огромное количество пользователей с таким сталкивались. Пишут авторам на маркет, а те не знают решения. Поэтому так важно было решить эту проблему.
Глядя на GIF (доказательство работоспособности) преисполнен решимости внедрения такого подхода в свои продукты. Наверное посижу, поэкспериментирую и отпишусь завтра.Для меня всё было совсем не так очевидно. По той ссылке, что я ранее давал, узнал, что проблема старая и её решение искали даже авторы с 10 000+ продажами на маркете не один раз.
И это касается всех советников МТ4 с объектами, а значит и огромное количество пользователей с таким сталкивались. Пишут авторам на маркет, а те не знают решения. Поэтому так важно было решить эту проблему.
Глядя на GIF преисполнен решимости внедрения такого подхода в свои продукты. Наверное посижу, поэкспериментирую и отпишусь завтра.возможно тоже самое можно сделать в советнике.
Но и так работает без лагов
возможно тоже самое можно сделать в советнике.
Но и так работает без лагов
Во-первых, Спасибо!
Хм, вроде в рамках заданного кода работает. Но по прежнему конфликт с советниками. Например с этим - https://www.mql5.com/ru/code/35440
С другими проверял, также. Надо попробовать код советника улучшить. Всё ещё актуальна проблема.Во-первых, Спасибо!
Хм, вроде в рамках заданного кода работает. Но по прежнему конфликт с советниками. Например с этим - https://www.mql5.com/ru/code/35440
С другими проверял, также. Надо попробовать код советника улучшить. Всё ещё актуальна проблема.у меня не видно лагов.
Да, в советнике тоже надо подправить код так, чтобы не было вычислений в OnChartEvent.
Правило простое:
- в OnChartEvent нужно заполнять глобальные переменные(не терминала) событий и координат, но не запускать из него функции с громоздкими расчетами.
- Весь вызов таких функций должен осуществляться из таймера в соответствии с переменными событий,
- после отработки событий, в таймере нужно не забывать обнулять эти события, чтобы на следующей итерации таймера вновь не запускать тоже самое.
Повторюсь - это баг заморозки OnChartEvent только в MT4
ЗЫ Прикол в том, что если MQ все же исправят этот баг, который судя по всему элементарный ( OnChartEvent замораживается если внутри него происходит вычислений около 10 миллисекунд) и так просто исправляется с помощью таймера, то многие заметят после перекомпиляции своих индикаторов или советников, в которых активно используется OnChartEvent, что у них все стало просто летать :))
А может это искуственный баг, чтоб на MT5 переходили ;))
у меня не видно лагов.
Да, в советнике тоже надо подправить код так, чтобы не было вычислений в OnChartEvent.
Правило простое:
- в OnChartEvent нужно заполнять глобальные переменные(не терминала) событий и координат, но не запускать из него функции с громоздкими расчетами.
- Весь вызов таких функций должен осуществляться из таймера в соответствии с переменными событий,
- после отработки событий, в таймере нужно не забывать обнулять эти события, чтобы на следующей итерации таймера вновь не запускать тоже самое.
Повторюсь - это баг заморозки OnChartEvent только в MT4
ЗЫ Прикол в том, что если MQ все же исправят этот баг, который судя по всему элементарный ( OnChartEvent замораживается если внутри него происходит вычислений около 10 миллисекунд) и так просто исправляется с помощью таймера, то многие заметят после перекомпиляции своих индикаторов или советников, в которых активно используется OnChartEvent, что у них все стало просто летать :))
А может это искуственный баг, чтоб на MT5 переходили ;))
Получается, что методом обычного улучшения кода индикатора глобально не решить конфликтность с советниками в закрытом коде, использующие объекты.
Надеюсь, что улучшение советника решит глобально конфликтность со всеми индикаторами дэшбордами (в чём моя задача и состоит).
Написал в ветке билда МТ4 1353, может программисты терминала обратят внимание.
P.S. Внёс правки в сов и что-то лыжи не поехали...
P.S. Внёс правки в сов и что-то лыжи не поехали...
точно в OnChartEvent не осталось ничего рассчетного с циклами и вызов других функций?
Замерте с помощью GetMicrosecondCount() время расчета того что происходит в OnTimer (или в OnChartEvent ).