Бета-версия платформы MetaTrader 5 build 1910: Свободное перетаскивание графиков и .Net библиотеки в MQL5 - страница 12
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Обратите пожалуйста внимание на это баг: no history data
Файлы для воспроизведения ошибки здесь https://www.mql5.com/ru/forum/1111/page2304#comment_8930335
А если выставить валюту депозита USD, то тоже будет no history data?
Andrey Voytenko:
Перепробовал разные настройки в тестере, поведение не меняется.
Аха. Попытались сделаать рационально. Сходу не получилось.
Бывают случаи, когда ExpertRemove может "поломать" загруженную версию эксперта. И все эти случаи однозначно проидентифицировать сложно. Поэтому вернулись к старой практике - после ExpertRemove загружать эксперта заново
Смотрю, что Incorrect-выходы починили. Но в чем принципиальное отличие от ExpertRemove - не пониманию. Могли бы Вы разъяснить, что происходит на каждом проходе пачки заданий Агента и как на это влияет ExpertRemove?
ЗЫ Сломанные проходы так и не подсвечиваются, к сожалению.
ExpertRemove выставляет стоп-флаг и говорит терминалу/тестеру что эксперт должен быть загашен как можно быстрее. Если в эксперте после вызова ExpertRemove есть бесконечный цикл без проверки IsStopped, то загруженный код точно будет испорчен. На глобальной инициализации что-то может быть недоинициализировано - опять код будет испорчен.
В тестере можно, конечно, дождаться окончания выполнения глобальной инициализации, либо OnInit, OnTick etc, но тут могут возникнуть вопросы какого фига эксперт не завершился сразу? Поэтому поведение, как в терминале.
ExpertRemove выставляет стоп-флаг и говорит терминалу/тестеру что эксперт должен быть загашен как можно быстрее. Если в эксперте после вызова ExpertRemove есть бесконечный цикл без проверки IsStopped, то загруженный код точно будет испорчен. На глобальной инициализации что-то может быть недоинициализировано - опять код будет испорчен.
В тестере можно, конечно, дождаться окончания выполнения глобальной инициализации, либо OnInit, OnTick etc, но тут могут возникнуть вопросы какого фига эксперт не завершился сразу? Поэтому поведение, как в терминале.
Спасибо за развёрнутый ответ! Получил информацию, которой не знал.
ExpertRemove выставляет стоп-флаг и говорит терминалу/тестеру что эксперт должен быть загашен как можно быстрее. Если в эксперте после вызова ExpertRemove есть бесконечный цикл без проверки IsStopped, то загруженный код точно будет испорчен. На глобальной инициализации что-то может быть недоинициализировано - опять код будет испорчен.
В тестере можно, конечно, дождаться окончания выполнения глобальной инициализации, либо OnInit, OnTick etc, но тут могут возникнуть вопросы какого фига эксперт не завершился сразу? Поэтому поведение, как в терминале.
Видимо, дело в разной терминологии, раз не понимаю выделенную фразу. Не понимаю, как код может быть испорчен. И почему нужно из EX5 из-за этого заново получать нативный код.
Видимо, дело в разной терминологии, раз не понимаю выделенную фразу. Не понимаю, как код может быть испорчен. И почему нужно из EX5 из-за этого заново получать нативный код.
Вы видели когда нибудь в логе эксперта/тестера запись "abnormal termination"? Это и есть последствия порчи исполняемого кода.
Вы видели когда нибудь в логе эксперта/тестера запись "abnormal termination"? Это и есть последствия порчи исполняемого кода.
Видел. Что такое "порча" исполняемого кода? Думаю, все таки терминологическое непонимание. Т.к. не укладывает в голове, как можно испортить исполняемый код.
Видел. Что такое "порча" исполняемого кода? Думаю, все таки терминологическое непонимание. Т.к. не укладывает в голове, как можно испортить исполняемый код.
Снятие программ из Таск менеджера делали?
Хотели бы вы после этого передать управление такому коду или перезапустили бы от греха подальше? Вот и у нас так - нам приходится прерывать выполнение, чаще всего зацикленное.
Код в данном случае - это не просто исполнимый код, но и масса блоков данных и различных кешей, которые явно не в консистентном состоянии после принудительной остановки. Единственно правильный подход - рестарт с нуля.Снятие программ из Таск менеджера делали?
Спасибо за аналогию, стало значительно яснее.
Хотели бы вы после этого передать управление такому коду или перезапустили бы от греха подальше? Вот и у нас так - нам приходится прерывать выполнение, чаще всего зацикленное.
Что имеется под словом "код"? Понимаю так, что пришла пачка заданий на Агент. Агент один раз распаковывает EX5 и хранит нативный код, как начальное состояние для каждого прохода пачки, вне зависимости, завершился аварийно проход перед ним или нет.
Спасибо за аналогию, стало значительно яснее.
Что имеется под словом "код"? Понимаю так, что пришла пачка заданий на Агент. Агент один раз распаковывает EX5 и хранит нативный код, как начальное состояние для каждого прохода пачки, вне зависимости, завершился аварийно проход перед ним или нет.
Код в данном случае - это не просто исполнимый код, но и масса блоков данных и различных кешей, которые явно не в консистентном состоянии после принудительной остановки.
ExpertRemove не для игр с оптимизацией рестартов придуман.