Новая версия платформы MetaTrader 5 build 3091: Улучшения в работе - страница 4

 
Denis Kirichenko #:

Build 3091.

Уважаемые разработчики, что-то сломали в календаре.

Функция уходит в таймаут:

Проверил на последней версии релиза (build 2981), там всё работает...

Проверил в скрипте - работает


 
Alexander Martinez #:

Отчет об ошибке : UninitializeReason не работает. Он всегда возвращает 0 независимо от того. Пример кода ниже.

Вы не понимаете работу параметров и локальных переменных.


 
Ihor Herasko #:

Где-то уже писали, что в MT5 эта функция работает только в OnDeinit(), в отличие от MT4.

Вы не пытались вникнуть в код. Не пишите, если не разобрались, пожалуйста.

Как и в случае с тестированием на текущем дне -

 
Rashid Umarov #:

Вы не пытались вникнуть в код. Не пишите, если не разобрались, пожалуйста.

То, что Вы показали на рисунке, это само собой разумеется. С чего Вы взяли, что Александр считает эти переменные одним и тем же? 

Другое дело, что в билде 3091 эта проблема уже не воспроизводится, т. е. поведение такое же, как и в МТ4. Возможно, она была в одном из билдов 3080 - 3090. К сожалению, билд Александр не указал (то, что он написал в теме о b3091, вовсе не значит, что именно такой билд им использовался).

Как и в случае с тестированием на текущем дне -

Я не вижу там какой-то ошибки со своей стороны. Если Вы ее видите, напишите об этом в той теме.

 
Rashid Umarov # :

Вы не понимаете работу параметров и локальных переменных.


Боюсь, Рашид, это ты не понимаешь вопроса. В mql5 UninitializeReason () просто бесполезен, потому что он предоставляет правильное значение только в OnDeinit () и там уже есть параметр «причина».

См. Сообщение A100 только №30 .

Новая версия платформы MetaTrader 5 build 3091: Улучшения в работе
Новая версия платформы MetaTrader 5 build 3091: Улучшения в работе
  • 2021.10.24
  • www.mql5.com
В пятницу 22 октября 2021 года будет выпущена обновленная версия платформы MetaTrader 5...
 
Думаю, разработчикам надо следовать по примеру Linux: раз в пол года выпускать стабильную версию MT, тщательно проверенную с минимальным количеством ошибок.
В остальных версиях - эксперименты с интерфейсом, мелкие доработки, устранение ошибок...
Т.к. в некоторых версиях уж очень много ошибок, тем более, если учитывать,что роботы на MQL5 с деньгами работают.

И убрали бы всплывающее окошко об обновлениях - иногда обновления не нужны. Если пользователю будет нужно - у вас для загрузки и установки обновлений отдельная кнопка есть.
 
Andrey Khatimlianskii #:

Бьюсь об заклад, каждый второй сможет воспроизвести ваш случай. Вы ведь сделали все, чтобы это было возможно.

 

Про сохранение кода причины деинициализации между запусками

Для начала ссылка https://www.mql5.com/ru/docs/runtime/running

И цитата

Загрузка эксперта производится в следующих случаях:

  • прикрепление эксперта к графику;
  • запуск терминала (если эксперт был прикреплен к графику перед предыдущим закрытием терминала);
  • загрузка шаблона (если в шаблоне указан прикрепленный к графику эксперт);
  • после удачной перекомпиляции эксперта, если данный эксперт был прикреплен к графику.
  • смена профиля (если эксперт прикреплен к одному из графиков профиля);
  • подключение к счету, даже если номер счета не менялся (если эксперт был прикреплен к графику перед авторизацией терминала на сервере).

При загрузке эксперта безусловно инициализируется пул данных эксперта. В этом пуле хранятся такие переменные, как _Symbol, _Period, _LastError, _UniitReason etc, переменные, объявленные на глобальном уровне, статические переменные

То есть, после перекомпиляции эксперта, после смены профиля, после загрузки шаблона, после смены счёта эксперт загружается заново, при этом значение переменной _UninitReason обнуляется. Поэтому UninitializeReason() возвращает 0.

При смене входных параметров эксперта, при смене символа. при смене таймфрейма эксперт не перезагружается, и в переменной _UninitReason сохраняется то значение, с которым была вызвана предыдущая функция OnDeinit

Документация по MQL5: Программы MQL5 / Выполнение программ
Документация по MQL5: Программы MQL5 / Выполнение программ
  • www.mql5.com
Выполнение программ - Программы MQL5 - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Renat Fatkhullin #:

Бьюсь об заклад, каждый второй сможет воспроизвести ваш случай. Вы ведь сделали все, чтобы это было возможно.

В тех случаях, когда это важно, прикладываю код и максимально полные данные.

По несущественным вопросам предпочитаю не тратить время, поскольку шансов получить ответ — около нуля.

Пользовательские символы. Ошибки, баги, вопросы, предложения.
Пользовательские символы. Ошибки, баги, вопросы, предложения.
  • 2021.09.14
  • www.mql5.com
Так как тема достаточна обширна, решил, что стоит выделить её в отдельное обсуждение...