Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Увы, понять проблему могут только те, кто постоянно с этим работает.
Для всех остальных надо что-то доказывать, показывать, рисовать, разъяснять....
А времени то не хватает :-)
Будет чудесно, если на эту проблему все таки обратят внимание. Хотя я уже предполагаю ее исход ......
Боюсь, что она также утонет в сотнях сообщениях - попытках что-то доказать....
В индикаторах, если пытаться установить символ и период, равные текущему символу/периоду, то с большой долей вероятности можно получить клинч. Это есть в справке.
Т.е., не нужно вызывать из индикатора функции, так или иначе активирующие подгрузку данных с сервера, если эти данные совпадают с символом/периодом графика.
В индикаторах, если пытаться установить символ и период, равные текущему символу/периоду, то с большой долей вероятности можно получить клинч.
По коду видно, что меняется символ.
Это есть в справке.
У меня такого нет в справке:
В индикаторах, если пытаться установить символ и период, равные текущему символу/периоду, то с большой долей вероятности можно получить клинч. Это есть в справке.
Т.е., не нужно вызывать из индикатора функции, так или иначе активирующие подгрузку данных с сервера, если эти данные совпадают с символом/периодом графика.
Спасибо. Это знаем.
Но проблема в другом. @Ihor Herasko расписал все выше https://www.mql5.com/ru/forum/379526/page12#comment_25886415
От перемены мест слагаемых..... тут разницы нет, какой код использовать.
Проблема с любым "маленьким/большим" кодом.
И подгрузки данных с сервера здесь тоже нет - все давно загружен.
Проблема с использованием ObjectDelete в эксперте и ChartSetSymbolPeriod в индикаторе на одном графике.
Дело не в коде, дело в очевидном.
Как я писал ранее - при таком раскладе - эксперт деинициализируется, но не инициализируется заново.
По коду видно, что меняется символ.
У меня такого нет в справке:
Странно, но я сейчас тоже не нашёл упоминание клинча в справке. Но об этом точно было написано, и я даже делал отсылку к этому пояснению в справке в своей статье:
Сейчас там не нашёл ничего про клинч (может смотрел невнимательно). Но просто так я бы не отсылался к справке, если бы этого там не было.
Странно, но я сейчас тоже не нашёл упоминание клинча в справке. Но об этом точно было написано, и я даже делал отсылку к этому пояснению в справке в своей статье:
Сейчас там не нашёл ничего про клинч (может смотрел невнимательно). Но просто так я бы не отсылался к справке, если бы этого там не было.
Насколько помню(могу ошибаться), вопрос подымался на форуме и на него отвечал Slava со всеми разъяснениями.
Насколько помню, вопрос подымался на форуме и на него отвечал Slava
если можно, дате хоть какие то ключевые слова по этому поводу для поиска ответа.
Странно, но я сейчас тоже не нашёл упоминание клинча в справке. Но об этом точно было написано, и я даже делал отсылку к этому пояснению в справке в своей статье:
Сейчас там не нашёл ничего про клинч (может смотрел невнимательно). Но просто так я бы не отсылался к справке, если бы этого там не было.
Видимо, справка достаточно часто обновляется. В итоге даже на таком небольшом периоде, как 1 год, мы начинаем теряться в ее утверждениях. Только успевай за новыми веяниями ))
Если смотреть описание для пятерки, то там вообще есть прямое указание на то, чтобы использовать эту функцию в индикаторах для их собственного перерасчета:
Проверил. Да, зависает. Но пример слишком неочевиден. Лучше сделать вот такую тестовую подборку.
Советник Test_Expert:
Индикатор Test:
Для воспроизведения:
Эксперт выполнял удаление объектов почти 10 секунд. Таким образом, проблема имеется. Возникает вопрос: что при этом произошло с индикатором? Ведь о его действиях в журнале ничего нет. Его объект бесследно исчез. Новые попытки запустить индикатор, не выгружая, ни к чему не приводят. Нужно только удалить индикатор с графика и присоединить заново.
Думаю, тут проблема в синхронизации потоков: эксперт (отдельный поток) получает сообщение о переключении графика и начинает выполнять удаление единственного объекта, но ему каким-то образом мешает поток индикатора (он же - GUI терминала). К чести терминала, получившийся dead lock (если это действительно он), со временем раскрывается, что и позволяет терминалу продолжить работу, хоть и с небольшим подвисанием.
а теперь поставьте в Деинит только одну строку Comment(""); остальные удалите.
Теперь эксперт ничего не удаляет и не мешает потоку индикаторов, но также висит)
если можно, дате хоть какие то ключевые слова по этому поводу для поиска ответа.
Не смог найти, нашёл только старое
Возможно, услышим ответ здесь и сейчас
а теперь поставьте в Деинит только одну строку Comment(""); остальные удалите.
Теперь эксперт ничего не удаляет, но также висит)
Теперь зависание заканчивается гораздо быстрее (порядка секунды). Индикатор в итоге остается работоспособным.