MetaTrader 5 build 2650: Фоновая загрузка графиков и улучшения в профилировщике MQL5-кода

Что нового в MetaTrader 5?

9 октября 2020

Terminal

  1. Добавлена настройка "Заранее загружать данные графиков по открытым позициям и ордерам".

    Для экономии трафика торговая платформа загружает ценовую историю по инструментам только в момент ее фактического запроса, например, при открытии графика или при запуске тестирования. Однако для активно используемых инструментов это может быть не всегда удобно. Если включить новую опцию, то графики инструментов, по которым у вас есть открытые позиции или отложенные ордера, будут обновляться в фоновом режиме каждый раз при запуске платформы. Таким образом, при открытии графиков вам не придется ждать дозагрузки данных, они будут сразу доступны для анализа.




  2. Исправлено формирование дневных баров после выходных дней.
  3. Исправлено обновление графиков. В некоторых случаях после дозакачки обновленных ценовых данных графики могли не перестраиваться.
  4. Оптимизировано обновление кэша торговой истории счета. Это позволило снизить задержки получения данных при помощи функций History*.
  5. Исправлено отображение колонки комментариев при просмотре торговой истории в виде позиций.
  6. Исправлено отображение кнопки продления подписки на "Сигналы".

MQL5

  1. Продолжаются работы по полному обновлению профилировщика кода. В дополнение к нововведениям версии 2615:

    Добавлены новые параметры
    Как уже сообщалось в предыдущем обновлении, для профилирования теперь используется метод "Sampling". Профилировщик делает паузы в работе MQL-программы (~1000 раз в секунду) и собирает статистику того, сколько раз пауза пришлась на тот или иной участок кода. В том числе анализируются стеки вызовов, чтобы определить "вклад" каждой функции в общее время работы кода. В конце профилирования вы получаете информацию о том, сколько раз была выполнена пауза и сколько раз каждая из функций оказывалась в стеке вызовов:

    • Общая активность ЦП [единица измерения, %] — общее количество "появления" функции в стеке вызовов.
    • Собственная активность ЦП [единица измерения, %] — количество "пауз", которые произошли непосредственно внутри указанной функции. Этот счетчик наиболее важен для определения "узких" мест, поскольку по статистике остановка чаще происходит в тех участках программы, которые требуют большего процессорного времени.


    Добавлена возможность отключения инлайнинга функций при профилировании
    При компиляции MQL-программ осуществляется инлайнинг (встраивание) — код функций помещается непосредственно в место их вызова, что позволяет добиться существенного ускорения при работе. Однако это затрудняет профилирование функций. Чтобы получить отчет по "чистым" функциям, вы можете отключить инлайнинг при профилировании в настройках MetaEditor:




    Обновлен дизайн отчета
    Мы переработали отчет профилирования, а также представление информации профилирования в окне исходного кода. Дизайн стал более современным и привычным для пользователей Visual Studio.




  2. Исправлена ошибка в работе функции CopyTicksRange. Из-за нее в некоторых случаях функция возвращала не все данные.
  3. Добавлен новый код ошибки TRADE_RETCODE_HEDGE_PROHIBITED — открытие позиции или выставление отложенного ордера невозможно, поскольку перекрытые позиции запрещены. Ошибка возвращается в ответ на попытку произвести торговую операцию, если для счета запрещено хеджирование и на нем уже есть позиция или ордер в противоположном направлении по тому же символу.
  4. Убрана возможность вызова функции MessageBox при отладке индикаторов. MessageBox не вызывается из индикаторов, поскольку она приостанавливает работу потока исполнения на все время ожидания ответа пользователя.
  5. Оптимизировано и значительно ускорено добавление торговых инструментов в "Обзор рынка" с помощью функции SymbolSelect.
  6. Исправлено поведение функции ArrayInsert для массивов фиксированного размера. Теперь оно соответствует документации: при вставке элементов размер массива-приемника не меняется, при этом начиная с позиции вставки элементы массива-приемника сдвигаются вправо (последние count элементов "выпадают" ), а на освободившееся место происходит копирование элементов из массива-источника.

Tester

  1. Исправлена работа с пользовательскими настройками торговых условий при тестировании, переработан диалог настроек.

    • Исправлено начисление пользовательских комиссий. Теперь для работы комиссии достаточно указать только название символа, а не весь путь к нему.
    • Изменено расположение вкладок для более удобной работы.
    • Переименован диалог и опция, включающая пользовательские настройки, для облегчения понимания.
    • Оптимизирована ширина колонок в таблицах настроек.
    • При отключении опции "Использовать пользовательские настройки" все остальные настройки в диалоге теперь деактивируются. Ранее настройки оставались доступными для редактирования, и пользователи могли ошибочно посчитать, что они будут применены при тестировании.




  2. Исправлена ошибка, возникавшая в некоторых случаях при получении ордеров из торговой истории по тикету.

MetaEditor

  1. Добавлены предустановленные цветовые схемы для окна редактирования кода: светлая (по умолчанию), темная и синяя. Теперь для более комфортной работы в ночное время вам не придется перенастраивать внешний вид редактора вручную.

    Помимо этого добавилась возможность настраивать цвет рамки для окна подсказок по функциям.



     
  2. Полностью обновлены иконки на панелях инструментов для поддержки HiDPI-мониторов.
Обновлена документация.