Новая версия платформы MetaTrader 5 build 2815: Доступ к стакану цен из Python, улучшения в отладчике и профилировщике - страница 16
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Насколько часто происходит запись в файл лога?
Внезапный ребут произошёл где-то в ~19.35. В итоге 9 часов из лога выпало. Он настолько редко сохраняет? Или как-то не прописывает в файл, что при аварийном завершении оно теряется?
МТ5, 2831.
Спустя некоторое время работы (возможно, когда происходит переход за полночь, пока точно не установил) CopyTicksRange странно обращается со временем.
Есть вот такой скрипт
Вывод
Если терминал перезагрузить, уже выводит нормально
Если нужен, есть дамп терминала, но весит даже в архиве больше 200Мб.
МТ5, 2831.
Спустя некоторое время работы (возможно, когда происходит переход за полночь, пока точно не установил) CopyTicksRange странно обращается со временем.
Спасибо, поставил проверку.
Бывает что пропускает тики в запросе к истории. Ошибка, приходит редко, логов нет, и существует уже давно.
CopyTicksRange(m_symbol, m_ticks, m_flags, m_from, m_to);
m_from, это последний полученный тик записанный в глобальную переменную , меняется только m_to, от старой истории к новой. Как в таком случае бывают пропуски тиков в истории я не пойму.
Наверное и за этогоОчень редко замечаю не пустое поле CPU в TaskManager для советников.
Просьба CPU выводить не с двумя знаками после запятой, а четыре или больше.
И что показывает сам параметр CPU? Такой код имеет почти нулевую загрузку CPU, если верить TaskManager.
А на самом деле более 10% времени занимает выполнение OnTimer - анимацию прикрепил, т.к. картинки не подключаются к сообщению по какой-то причине.
Возможно ли в дебагере показывать размер массива еще и в байтах?
Аналогично с объектами. И всей MQL-программы суммарно: все объекты, массивы, переменные и т.д.
Спасибо, поставил проверку.
Проверка в боевом советнике показала этот очень неприятный баг: начальный тик CopyTicksRange не равен тому, чему должен.
Первым может быть другой тик, а может и правильный, но с измененным флагом.
ЗЫ Флаги исторических тиков нужно так сравнивать.
Т.е. перед сравнением выкидывать все, что дальше седьмого бита.
Там довольно серьёзная ошибка, у меня привело это к вылету терминала
Вылет терминала. В неудачный момент попытался закрыть окно результатов оптимизации.
Проверка в боевом советнике показала этот очень неприятный баг: начальный тик CopyTicksRange не равен тому, чему должен.
Первым может быть другой тик
Все довольно печально.
БД свежих тиков Терминала пропускает тики - 100%. Баг.
Все довольно печально.
Можно подумать, что тик меняет свое время. Но, скорее всего, иногда CopyTicksRange выдает неправильное время крайнего правого тика. В данном примере это 370, а должен был выдать 220.
Самое хреновое, что SymbolInfoTick со временем 370 был! Это уже говорит в пользу того, что тик прошел мимо БД.
А вы не исключаете, что между запросом и ответом, между временем «to» и текущим временем с точностью до миллисекунд, может пройти ещё несколько тиков. Если вам нужны последние тики, то лучше использовать CopyTicks() имхо.
Я писал советник собирающий тики до определённого условия, писал их в файл и сверял с тем, что выгружается
и никаких расхождений не наблюдалось. Ни по времени, ни по флагам, ни по объёму или цене.