Бета-версия платформы MetaTrader 5 build 5050: Переход на Git и хаб разработчиков MQL5 Algo Forge, темная тема и улучшения интерфейса

 

В пятницу 30 мая 2025 года будет выпущена обновленная версия платформы MetaTrader 5 в бета-режиме.

В этой версии мы существенно переработали редактор исходного кода MetaEditor. Встроенное версионное хранилище MQL5 Storage переведено на использование Git вместо Subversion. Git является стандартом для разработчиков по всему миру, обеспечивая надежность и гибкость в управлении кодом. Вместе с переходом на новую систему мы открываем новый портал для управления проектами онлайн — MQL5 Algo Forge. Это не просто список ваших проектов, это целая социальная сеть для разработчиков. Подписывайтесь на интересных авторов, создавайте команды и ведите совместные проекты удобно.

Помимо этого, во всех компонентах платформы появилась поддержка темной темы интерфейса для более комфортной работы в ночное время.

Бета-версия платформы MetaTrader 5 build 5050: Переход на Git и хаб разработчиков MQL5 Algo Forge, темная тема и улучшения интерфейса

Также добавлена возможность арендовать VPS на 12 месяцев. Покупая хостинг сразу на долгий срок, вы экономите треть стоимости.

Кроме этого мы существенно расширили поддержку библиотеки линейной алгебры OpenBLAS в MQL5, добавив почти три десятка новых функций.

Призываем всех трейдеров присоединиться к тестированию новой версии платформы, чтобы самостоятельно опробовать все ее возможности и помочь разработчикам в исправлении найденных ошибок. Для обновления на новый билд платформы MetaTrader 5 достаточно нажать «Помощь \ Проверить обновления десктопа \ Последняя бета-версия»:

Обновитесь на бета-версию и примите участие в тестировании

После окончания данного этапа бета-тестирования будет выпущен финальный билд новой платформы MetaTrader 5.

Обновление содержит следующие изменения:


MetaTrader 5 Client Terminal

  1. MetaEditor: Мы полностью обновили хранилище исходных кодов MQL5 Storage. Теперь в качестве системы контроля версий в нем используется не Subversion, а Git. Он является стандартом для разработчиков по всему миру, обеспечивая надежность и гибкость в управлении кодом.

    • Гибкое ветвление и слияние — создавайте отдельные ветки для новых функций или экспериментов, а затем легко объединяйте их в основную версию проекта.
    • Ускоренная работа с репозиторием — в отличие от Subversion, Git хранит все данные локально, что делает операции (коммиты, переключение между версиями, сравнение изменений) гораздо быстрее.
    • Работа в оффлайн-режиме — теперь вам не нужно постоянное подключение к серверу: вы можете коммитить изменения локально, а затем отправлять их в онлайн-репозиторий, когда будет удобно.
    • Продвинутая система отслеживания изменений — Git позволяет легко просматривать историю изменений, отслеживать, кто и когда внес правки, а также откатываться к предыдущим версиям без лишних сложностей.
    • Лучшее слияние изменений — продвинутая система сравнения и объединения кода позволяет минимизировать конфликты и легко управлять совместной разработкой.

    Совместная разработка на новом уровне
    Вместе с переходом на Git мы открываем новый портал для управления проектами онлайн — MQL5 Algo Forge. Это не просто список ваших проектов, это целая социальная сеть для разработчиков, своего рода GitHub для алготрейдеров. Подписывайтесь на интересных авторов, создавайте команды и ведите совместные проекты удобно.


    Новый портал для управления проектами онлайн — MQL5 Algo Forge


    Просматривайте детали проектов: структуру, файлы, коммиты, ветки и т.д. Отслеживайте вклад каждого участника, создавайте документацию и делитесь проектом в Интернете.


    Детали проекта


    Отслеживайте все изменения в коде: новые, измененные и удаленные строки. При обнаружении проблем ставьте разработчику задачу на исправление прямо в проекте.


    Отслеживайте все изменения в коде


    Для работы с Git мы переработали меню Навигатора и активного окна редактирования кода. Также мы добавили отдельное меню Git на верхнюю панель MetaEditor:


    Новые меню для работы с Git


    Все подробности работы с Git скоро появятся в документации.

  2. Terminal: Добавлена поддержка темной цветовой схемы интерфейса для всех компонентов: торгового терминала, MetaEditor и визуального тестера. Темная тема позволит работать с платформой более комфортно в ночное время. Для переключения используйте меню «Вид»:


    Добавлена поддержка темной цветовой схемы


    Адаптируя интерфейс для поддержки разных тем, мы внесли множество улучшений в отображение диалогов, меню, панелей и кнопок для более комфортной работы. В MetaEditor информация о текущем положении курсора в активном окне, а также индикатор режима ввода текста (INS/OVR) показываются в правом верхнем углу. Строка состояния внизу окна больше не показывается, чтобы сэкономить рабочее пространство.

  3. Terminal: Добавлена возможность арендовать VPS на 12 месяцев. Покупая хостинг сразу на долгий срок, вы экономите треть стоимости.


    Добавлена возможность арендовать VPS на 12 месяцев


  4. Terminal: Оптимизировано потребление памяти, теперь для работы терминала используется меньше ресурсов компьютера.
  5. Terminal: Оптимизировано отображение торговой истории счета. Теперь платформа может корректно выводить миллионы записей.
  6. Terminal: Добавлена команда «По умолчанию» в меню «Окно». Она возвращает все элементы интерфейса — графики, Навигатор, Тестер стратегий и т.д. — в исходное положение.
  7. Terminal: Исправлена ошибка, в некоторых случаях приводившая к зависанию диалога изменения позиции.
  8. Terminal: Исправлен расчет стоимости открытых позиций при отрицательных ценах.
  9. Terminal: Исправлен расчет гарантийного обеспечения в спецификации торгового инструмента при отрицательных ценах.
  10. Terminal: Исправлен расчет текущих значений и отображение графиков MFE и MAE в торговом отчете.
  11. Terminal: Исправлено масштабирование осцилляторов в подоконах графиков. Теперь вертикальная шкала для них отображается корректно.
  12. Terminal: Исправлено скрытие и показ стаканов и досок опционов при переключении полноэкранного режима.
  13. Terminal: Добавлен показ тикета позиции в торговой истории счета. Для включения колонки используйте контекстное меню.
  14. Terminal: Исправлен расчет ликвидационной стоимости на вкладке «Активы» для фьючерсов и опционов.
  15. Terminal: Исправлено копирование данных созданного счета в буфер обмена. На последнем этапе регистрации демонстрационного или предварительного счета пользователю выводятся данные счета: логин, пароли и т.д. Их можно скопировать в буфер обмена, чтобы сохранить в отдельном файле. Теперь соответствующая команда работает корректно на macOS.
  16. Terminal: Исправлено отображение раздела журнала VPS. В некоторых случаях на странице показывалась ошибка.
  17. Terminal: Обновлены переводы пользовательского интерфейса.
  18. MQL5: Добавлен оператор матричного умножения @. Он работает по правилам линейной алгебры и позволяет умножать матрицы и векторы, а также выполнять скалярное произведение векторов.

    Матричное умножение (матрица × матрица)
    matrix A(2, 3);
    matrix B(3, 2);
    matrix C = A @ B; // Результат: матрица C размером [2,2]
    Матричное умножение (матрица × вектор)
    matrix M(2, 3);
    vector V(3);
    vector R = M @ V; // Результат: вектор R из 2 элементов
    Матричное умножение (вектор × матрица)
    matrix M(2, 3);
    vector V(1, 2);
    vector R = V @ M; // Результат: вектор R из 3 элементов
    Скалярное произведение (вектор × вектор)
    vector V1(1, 3), V2(1, 3);
    double r = V1 @ V2; // Результат: скаляр
  19. MQL5: Добавлен параметр ddof в методы Std, Var и Cov. Он определяет число степеней свободы, которые вычитаются из делителя при вычислении стандартного отклонения. Для Std и Var параметр по умолчанию равен 0, для Cov — 1.

    Как влияет ddof:

    • По умолчанию ddof=0, и стандартное отклонение вычисляется для всей совокупности (population standard deviation).
    • Если ddof=1, то используется выборочное стандартное отклонение (sample standard deviation), что корректирует оценку для конечной выборки (используется в статистике при работе с подмножеством данных).

  20. MQL5: Добавлены новые методы OpenBLAS:

    Вычисление собственных значений и собственных векторов

    • EigenTridiagonalDC — вычисляет собственные значения и собственные векторы симметричной трехдиагональной матрицы с использованием алгоритма «разделяй и властвуй» (LAPACK-функция STEVD).
    • EigenTridiagonalQR — вычисляет собственные значения и собственные векторы симметричной трехдиагональной матрицы с использованием QR-алгоритма (LAPACK-функция STEV).
    • EigenTridiagonalRobust — вычисляет собственные значения и собственные векторы симметричной трехдиагональной матрицы с использованием алгоритма MRRR (Multiple Relatively Robust Representations) (LAPACK-функция STEVR).
    • EigenTridiagonalBisect — вычисляет собственные значения и собственные векторы симметричной трехдиагональной матрицы с использованием алгоритма бисекции (LAPACK-функция STEVX).
    • ReduceToBidiagonal — приводит общую вещественную или комплексную матрицу размером m×n к верхней или нижней бидиагональной форме B с помощью ортогонального преобразования: Q**T * A * P = B. Если m≥n, то B является верхней бидиагональной матрицей, иначе — нижней бидиагональной. (LAPACK-функция GEBRD).
    • ReflectBidiagonalToQP — генерирует ортогональные матрицы Q и P**T (или P**H для комплексных типов), определяемые методом ReduceToBidiagonal при приведении вещественной или комплексной матрицы A к бидиагональной форме: A = Q * B * P**T.  Q и P**T представляют собой произведения элементарных отражателей H(i) или G(i) соответственно. (LAPACK-функции ORGBR, UNGBR).
    • ReduceSymmetricToTridiagonal — приводит вещественную симметричную или комплексную эрмитову матрицу A к трехдиагональной форме B с помощью ортогонального преобразования подобия: Q**T * A * Q = B.  (LAPACK-функции SYTRD, HETRD).
    • ReflectTridiagonalToQ — генерирует ортогональную матрицу Q, которая представляет собой произведение n-1 элементарных отражателей порядка n, возвращаемых функцией ReduceSymmetricToTridiagonal.

    • LinearEquationsSolution — вычисляет систему линейных уравнений с квадратной матрицей коэффициентов A и несколькими правыми частями.
    • LinearEquationsSolutionTriangular — вычисляет систему линейных уравнений с квадратно-треугольной матрицей коэффициентов A и несколькими правыми частями.
    • LinearEquationsSolutionSy — вычисляет систему линейных уравнений с симметричной или эрмитово сопряженной матрицей A и несколькими правыми частями.
    • LinearEquationsSolutionComplexSy — вычисляет систему линейных уравнений с комплексной симметричной матрицей A и несколькими правыми частями.
    • LinearEquationsSolutionGeTrid — вычисляет систему линейных уравнений с симметричной или эрмитово сопряженной положительно определенной матрицей A и несколькими правыми частями.
    • LinearEquationsSolutionSyPD — вычисляет систему линейных уравнений с общей (несимметричной) трехдиагональной матрицей коэффициентов A и несколькими правыми частями.
    • LinearEquationsSolutionSyTridPD — вычисляет систему линейных уравнений с симметричной трехдиагональной положительно определенной матрицей A и несколькими правыми частями.
    • FactorizationQR — вычисляет QR-разложение общей матрицы размера m на n: A = Q * R (LAPACK-функция GEQRF).
    • FactorizationQRNonNeg — вычисляет QR-разложение общей матрицы размера m на n: A = Q * R, где R — верхнетреугольная матрица с неотрицательными элементами на диагонали (LAPACK-функция GEQRFP).
    • FactorizationQRPivot — вычисляет QR-разложение общей матрицы размера m на n с перестановкой столбцов: A * P = Q * R (LAPACK-функция GEQP3).
    • FactorizationLQ — выполняет LQ-разложение общей матрицы размером m на n: A = L * Q (LAPACK-функция GELQF).
    • FactorizationQL — выполняет QL-разложение общей матрицы размером m на n: A = Q * L (LAPACK-функция GEQLF).
    • FactorizationRQ — выполняет RQ-разложение общей матрицы размером m на n: A = R * Q (LAPACK-функция GERQF).
    • FactorizationPLU — вычисляет LU-разложение общей матрицы A размером m на n с использованием частичного выбора ведущего элемента и перестановок строк (LAPACK-функция GETRF).
    • FactorizationPLUGeTrid — вычисляет LU-разложение общей (несимметричной) трехдиагональной матрицы A размером n на n с использованием частичного выбора ведущего элемента и перестановок строк (LAPACK-функция GTTRF).
    • FactorizationLDL — вычисляет разложение для вещественной симметричной или комплексной эрмитовой матрицы A с использованием диагонального выбора ведущего элемента по методу Банча-Кауфмана (LAPACK-функции SYTRF и HETRF).
    • FactorizationLDLSyTridPD — вычисляет разложение симметричной положительно определенной (для вещественных данных) или эрмитовой положительно определенной (для комплексных данных) трехдиагональной матрицы A (LAPACK-функция PTTRF).
    • FactorizationCholesky — вычисляет разложение для вещественной симметричной или комплексной эрмитовой положительно-определенной матрицы A (LAPACK-функция POTRF).
    • FactorizationCholeskySyPS — вычисляет разложение Холецкого с полным выбором ведущего элемента (complete pivoting) для вещественной симметричной (или комплексной эрмитовой) положительно полуопределенной матрицы A размером n на n (LAPACK-функция PSTRF).

  21. MQL5: Добавлена функция и метод Random для заполнения случайными значениями векторов и матриц. Случайные значения генерируются равномерно в заданном диапазоне.
    static vector vector::Random(
      const ulong   size,       // длина вектора
      const double  min=0.0,    // минимальное значение
      const double  max=1.0     // максимальное значение
       );
    
    static matrix matrix::Random(
      const ulong   rows,       // количество строк
      const ulong   cols        // количество столбцов
      const float   min=0.0,    // минимальное значение
      const float   max=1.0     // максимальное значение
       );
  22. MQL5: Добавлена поддержка дополнительных псевдонимов целочисленных типов. Это упростит портирование кода из других языков, таких как C и C++.

    Эти алиасы не вводят новые типы, а являются альтернативными именами уже существующих типов в MQL5. Их можно использовать во всех контекстах, где применимы базовые типы.

    • int8_t
    • uint8_t
    • int16_t
    • uint16_t
    • int32_t
    • uint32_t
    • int64_t
    • uint64_t

  23. MQL5: Исправлена ошибка, приводившая к падению MetaEditor при компиляции кода, в котором есть метод Array::Reserve. Метод Reserve не изменяет размер массива, а резервирует место для указанного количества элементов для предотвращения перевыделения памяти при добавлении новых элементов.
  24. MQL5: Исправлена работа метода Array::Push, добавляющего новые элементы в конец массива. Ошибка возникала для массивов, имеющих резерв в буфере.
  25. MQL5: Исправлены функции для работы с OpenCL.
  26. MetaTester: Ускорена оптимизация торговых стратегий.
  27. MetaTester: Исправлена ошибка, в некоторых случая приводившая к чрезмерному потреблению оперативной памяти агентами тестирования при выполнении заданий из MQL5 Cloud Network.

MetaTrader 5 Web Terminal

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


Обновление будет доступно через систему Live Update.

 

Добавление тёмной темы в контексте eye care -  это определенно Win-win подход. Теперь по вечерам можно в слабом освещении писать код, не боясь наступления быстрой усталости глаз.

Ждём новых бет и релизов с новыми функциями.  В частности, в случае использования тёмной темы в MetaEditor 5 - перенос её параметров на объекты окна "Strategy Tester Visualization". Так как иногда перед тестером тоже приходится много времени проводить.



 

Вот эта штука (скриншот выше) снова реагирует на показать/скрыть окно (со скриншота ниже), что вызывает ощутимую задержку. Как минимум, при использовании горячих клавиш.


Уже было такое с MetaEditor (тогда задержка гораздо серьезнее была).

 

Уже несколько билдов не ставятся галочки в чекбоксах.

Собственно поиск на них реагирует, но никогда не видно что отмечено.

 
MetaQuotes:
Помимо этого, во всех компонентах платформы появилась поддержка темной темы интерфейса для более комфортной работы в ночное время.

Огромное спасибо за это! Я в восторге от этого! Однако, есть замечания от знатока тёмных тем:

  1. Нужна настройка основного оттенка темы (подтянуть серый по цвету и насыщенности немного)
  2. Нужна настройка яркости шрифтов относительно основного цвета (сейчас белый текст сильно контрастен с фоном), хотя бы "темнее/светлее"
  3. Хотелось бы уменьшить контрастность линий оформления относительно фона, им не нужно быть такими яркими

Ещё в окнах настроек в терминале и редакторе одинаковая проблема: текстовые метки задвояются, у меня linux и wine 10.2:



Диалоговые окна "о программе" в тёмной теме (wine) тоже кривые (белый фон).

 

Ещё кое-где проблемы с текстом.

 
MetaQuotes:
Terminal: Добавлена поддержка темной цветовой схемы интерфейса для всех компонентов: торгового терминала, MetaEditor и визуального тестера. Темная тема позволит работать с платформой более комфортно в ночное время. Для переключения используйте меню «Вид»:

Попробовал тёмный режим вот что выявилось сразу:

  1. Не очень удачно подобраны цвета для пиктограмм - слишком тёмные
  2. Неактивные вкладки светятся белым текстом ярче, чем активная с тусклой надписью
  3. Ползунки окна, где пишется код, остаются белыми в Windows 7 (поддержка же не прекращена?)
  4. При сворачивании/разворачивании окна "Инструменты" постоянно попадаешь на крестик
  5. Перенос информации о навигации курсора в самый верх неудобен - банально там уже плохо вижу экран
  6. Панель инструментов приклеилась к левой области экрана и стала вертикальной в windows 10 - непривычно

В итоге, если не будет возможности у пользователя настраивать цветовые схемы, то я останусь в режиме "как было" - мне хватает нажать F12 и писать код на темном фоне.

MetaQuotes:
Совместная разработка на новом уровне
Вместе с переходом на Git мы открываем новый портал для управления проектами онлайн — MQL5 Algo Forge. Это не просто список ваших проектов, это целая социальная сеть для разработчиков, своего рода GitHub для алготрейдеров. Подписывайтесь на интересных авторов, создавайте команды и ведите совместные проекты удобно.

А это вообще востребовано? Есть примеры совместных проектов на MQL?

 
MetaQuotes:
  • MQL5: Исправлены функции для работы с OpenCL.
  • Можно чуть подробней, а то может была ошибка, я к ней адаптировался или обошёл иным способом, а теперь вследствии её исправления будут логические ошибки - хотелось бы знать, на что обратить внимание при ревизии своего кода.

     

    Неправильно работает функция ArrayInitialize():

    void OnStart(void) {
      
      PrintFormat("\n%s >", __FUNCTION__);
      PrintFormat("%u, %s", ALIGN_RIGHT, EnumToString(ALIGN_RIGHT));
      PrintFormat("%u, %s", ALIGN_LEFT, EnumToString(ALIGN_LEFT));
      PrintFormat("%u, %s", ALIGN_CENTER, EnumToString(ALIGN_CENTER));
      
      ENUM_ALIGN_MODE align[3];
      ArrayInitialize(align, ALIGN_LEFT);
      //align[0] = ALIGN_RIGHT;
      //align[1] = ALIGN_LEFT;
      //align[2] = ALIGN_CENTER;
      
      ArrayPrint(align);
      
      PrintFormat("align[0]: %s", EnumToString(align[0]));
      PrintFormat("align[1]: %s", EnumToString(align[1]));
      PrintFormat("align[2]: %s", EnumToString(align[2]));
    }

    Результат:

    OnStart >
    0, ALIGN_RIGHT
    1, ALIGN_LEFT
    2, ALIGN_CENTER
    0 0 0
    align[0]: ALIGN_RIGHT
    align[1]: ALIGN_RIGHT
    align[2]: ALIGN_RIGHT
    

     
    Igor Zakharev #:

    Добавление тёмной темы в контексте eye care -  это определенно Win-win подход. Теперь по вечерам можно в слабом освещении писать код, не боясь наступления быстрой усталости глаз.

    Ждём новых бет и релизов с новыми функциями.  В частности, в случае использования тёмной темы в MetaEditor 5 - перенос её параметров на объекты окна "Strategy Tester Visualization". Так как иногда перед тестером тоже приходится много времени проводить.



    Только что пришёл новый билд. Вот это то что нужно :) Мерси!


     
    Anatoli Kazharski #:

    Неправильно работает функция ArrayInitialize():

    Результат:

    void OnStart()
      {
       ENUM_ALIGN_MODE align[3];
       ResetLastError();
       ArrayInitialize(align, ALIGN_LEFT);
       Print("last error ", _LastError); // ERR_INVALID_TYPE
      }


    void OnStart()
      {
       int align[3];
       ResetLastError();
       ArrayInitialize(align, ALIGN_LEFT);
       PrintFormat("align[0]: %s", EnumToString((ENUM_ALIGN_MODE)align[0]));
       PrintFormat("align[1]: %s", EnumToString((ENUM_ALIGN_MODE)align[1]));
       PrintFormat("align[2]: %s", EnumToString((ENUM_ALIGN_MODE)align[2]));
      }


    (но лучше просто цикл for)