Новая версия платформы MetaTrader 5 build 5570: Улучшения в ONNX и отображении графиков

В этой версии мы улучшили работу с ONNX в MQL5. Теперь такие модели будут выполняться существенно быстрее при работе на видеокартах с поддержкой CUDA

29 января 2026

Terminal

  1. Исправлено отображение текста на графиках при работе в системах macOS и Linux, где используется Wine.
  2. Исправлена отрисовка индикаторов, отображающихся в виде линии с изменяющимся цветом.
  3. Исправлена отрисовка объектов «Текстовая метка» и «Кнопка».
  4. Исправлено форматирование некоторых статистических показателей в торговых отчетах. Они могли округляться некорректно.
  5. Изменен расчет показателей «Общая прибыль» и «Общий убыток» в торговом отчете. Теперь они включают комиссии и свопы.
  6. Исправлено сохранение состояния панели инструментов для открепленного графика. При перезапуске платформы скрытая панель могла появляться вновь.
  7. Исправлена загрузка настроек пользовательских торговых инструментов из файлов JSON. В частности, могли некорректно импортироваться настройки свопов, торговых сессий, а также стоимость тика.
  8. Добавлено указание инструмента и таймфрейма в заголовок окна при запуске скрипта на графике.



    Добавлено указание инструмента и таймфрейма в заголовок окна при запуске скрипта на графике.


  9. Исправлено дублирование торговых инструментов в подсказке, отображаемой при поиске инструментов в «Обзоре рынка».
  10. Исправлено отображение шрифтов Windings на графике.
  11. Исправлено отображение индикаторов в виде разноцветных свечей (DRAW_COLOR_CANDLES) и разноцветных линий (DRAW_COLOR_LINE).
  12. Добавлен вывод сообщения в журнал о том, что сервер брокера имеет устаревшую версию. Если сервер имеет версию ниже 5200, выпущенную полгода назад, вы увидите предупреждение:
    outdated server build - must be at least 5200, contact your broker please
    Сообщение выводится для информации и не влияет на возможность подключения к серверу.
  13. Обновлены переводы пользовательского интерфейса.

MQL5

  1. Изменен порядок установки библиотеки ONNX. Теперь она загружается при первом запуске MQL5-программы, использующей ONNX, а не вместе с платформой. Обновление библиотеки происходит автоматически.
  2. Добавлена поддержка CUDA для ONNX. Если ваша видеокарта поддерживает соответствующую технологию, это существенно ускорит инференс моделей. Настоятельно рекомендуем обновить драйверы NVIDIA для улучшения стабильности и повышения производительности.

    Разрешениями на использование CUDA можно управлять в настройках платформы: 


    Управление CUDA в настройках платформы


  3. Обновлены флаги в перечислении ENUM_ONNX_FLAGS. Они используются при создании и выполнении моделей ONNX:

    Работа с логами
    Вместо устаревшего флага ONNX_DEBUG_LOGS для работы с логами теперь используются:

    • ONNX_LOGLEVEL_VERBOSE — выводить все сообщения.
    • ONNX_LOGLEVEL_INFO — выводить информационные сообщения, а также предупреждения и ошибки. Заменяет устаревший флаг ONNX_DEBUG_LOGS.
    • ONNX_LOGLEVEL_WARNING — выводить предупреждения и ошибки. Используется по умолчанию.
    • ONNX_LOGLEVEL_ERROR — выводить только ошибки.

    Управление CUDA и GPU
    Флаг ONNX_CUDA_DISABLE удален. Вместо него используйте новый ONNX_USE_CPU_ONLY. Если он включен, для работы с моделями будет использоваться только процессор.

    Добавлены флаги для выбора видеокарты, на которой будет исполняться модель:

    • ONNX_GPU_DEVICE_0
    • ONNX_GPU_DEVICE_1
    • ONNX_GPU_DEVICE_2
    • ONNX_GPU_DEVICE_3
    • ONNX_GPU_DEVICE_4
    • ONNX_GPU_DEVICE_5
    • ONNX_GPU_DEVICE_6
    • ONNX_GPU_DEVICE_7

    Используйте их, если в системе есть 2 или более устройства, поддерживающих CUDA. Если задано несколько флагов, будет выбрано устройство с наименьшим индексом.

    Профилирование моделей
    Добавлен флаг ONNX_ENABLE_PROFILING, включающий профилирование модели ONNX.

    При запуске модели с включенным флагом в папке /MQL5/Files/OnnxProfileReports/ будет создан файл с именем [название файла EX5]_[дата]_[время].json, содержащий отчет профилирования.

  4. Увеличен лимит для файлов, которые могут быть включены в программу в виде ресурса. Теперь он составляет 1 ГБ. Это позволяет включать в проекты большие модели ONNX. 
  5. Улучшена стабильность при работе с OpenCL.
  6. Добавлен метод ReplaceToZero. Он заменяет малые значения в матрице/векторе нулевыми значениями и возвращает количество замененных элементов.
  7. Добавлены новые методы OpenBLAS:

    • FactorizationLDLComplexSyRaw — вычисляет разложение комплексной матрицы с использованием диагонального выбора ведущего элемента по методу Банча-Кауфмана.
    • LDLComplexSyLinearEquationsSolution — решает систему линейных уравнений A * X = B с комплексной симметричной неопределенной матрицей, используя разложение A = U**T * D * U or A = L * D * L**T, рассчитанное методом FactorizationLDLComplexSyRaw с несколькими правыми частями.
    • LDLComplexSyInverse — вычисляет обратную матрицу для комплексной симметричной неопределенной матрицы с использованием разложения A = U**T * D * U or A = L * D * L**T, рассчитанного методом FactorizationLDLComplexSyRaw.
    • LDLComplexSyCondNumReciprocal — оценивает обратное число обусловленности для комплексной симметричной неопределенной матрицы, используя разложение LDLT, рассчитанное методом FactorizationLDLComplexSyRaw.

  8. Добавлена функция ColorToPRGB. Она преобразует тип color в тип uint для получения PRGB-представления цвета. Такой формат используется при создании графического ресурса, вывода текста и в классе стандартной библиотеки CCanvas при работе с цветом COLOR_FORMAT_ARGB_RAW.
    uint  ColorToPRGB(
       color  clr,          // преобразуемый цвет в формате color
       uchar  alpha=255     // альфа-канал, управляющий прозрачностью цвета
    );
    PRGB цвет вычисляется по формуле:
    R = R * A / 255
    G = G * A / 255
    B = B * A / 255
    A = A
  9. Исправлена программная установка текста для объектов OBJ_LABEL, OBJ_TEXT, OBJ_BUTTON и OBJ_EDIT. В некоторых случаях заданный текст мог не отображаться.
  10. Исправлена установка цвета для графических объектов при помощи ObjectSetInteger. Значения clrNONE могло не учитываться.
  11. Исправлено зависание функции Bars при отсутствии ценовой истории на сервере.
  12. Исправлен поиск глобальных переменных в области видимости. Ошибка не позволяла использовать внутри namespace переменные с теми же именами, что у переменных на глобальном уровне.
  13. Исправлена работа с атрибутом final. Теперь при попытке переопределить функцию, помеченную как final, компилятор будет выдавать соответствующую ошибку.
  14. Исправлено ложное предупреждение компилятора, возникавшее при использовании предобъявлений функций в подключаемых файлах *.mqh без директивы #import. Теперь компилятор корректно обрабатывает такие объявления и не требует #import, если функции не являются импортируемыми из DLL.

    Пример

    Файл utils.mqh: 
    // Предобъявление функции
    double CalcLot(double risk, double stop);
    Файл expert.mq5:
    #include "utils.mqh"
    
    double CalcLot(double risk, double stop)
      {   
       return risk / stop;
      }
    Ранее компилятор мог выдавать предупреждение о том, что для функции CalcLot в файле utils.mqh отсутствует директива #import, несмотря на то что функция является пользовательской и реализована в коде проекта. Теперь такой код компилируется без предупреждений. Директива #import требуется только для функций, действительно импортируемых из внешних DLL. 

MetaEditor

  1. Исправлена ошибка недостатка памяти при работе с большими исходными файлами (мегабайты).
  2. Исправлен показ значения и имени перечисления в окне наблюдения выражений при отладке.


Tester

  1. Исправлена остановка тестирования для зацикленных экспертов. Теперь даже при наличии бесконечного цикла процесс будет моментально останавливаться при нажатии кнопки «Стоп».
  2. Исправлен вызов функции EventChartCustom при визуальном тестировании. Ранее событие ошибочно отправлялось дважды.
  3. Исправлена проверка уровня заморозки (SYMBOL_TRADE_FREEZE_LEVEL) при удалении только что установленных отложенных ордеров.
  4. Исправлен экспорт данных форвард-тестирования. При экспорте данных теста, в котором не использовался форвард-режим, могли сохраняться данные предыдущих форвард-тестов.

WebTerminal

  1. Добавлено отображение приблизительного размера прибыли/убытка в деньгах при выставлении Стоп Лосса и Тейк Профита на графике.


    Добавлено отображение приблизительного размера прибыли/убытка в деньгах


  2. Исправлено отображение спецификации для торговых инструментов, имеющих спецсимволы в названии.
  3. Исправлено отображение отрицательных цен в торговом диалоге.
  4. Исправлено отображение финансовых показателей счета для случаев, когда валюта депозита имеет точность более 2 знаков после запятой.