Terminal
- Добавлена возможность автоматически применять светлую или темную тему интерфейса в зависимости от настроек Windows. Для этого включите новую опцию «Вид \ Цветовые схемы \ Системная». При каждом запуске платформа будет проверять, какой интерфейс вы используете в системе, и адаптироваться соответствующим образом.

- Исправлено отображение панелей инструментов, открепленных от основного окна.
- Исправлен расчет ликвидационной стоимости портфеля в разделе «Активы». Позиции по некоторым инструментам могли не учитываться.
- Исправлено отображение отрицательных цен в стакане цен. Теперь они сортируются корректно.
- Исправлен импорт ценовой истории в пользовательские торговые инструменты. Для инструментов, находящихся в корневой папке, соответствующие команды могли быть недоступны.
- Обновлены переводы пользовательского интерфейса.
MQL5
- Добавлены новые методы OpenBLAS:
Приведение матриц
- ReduceToHessenberg — преобразует вещественную или комплексную общую матрицу A размером n на n к матрице B верхней формы Хессенберга с помощью ортогонального преобразования подобия: Q**T * A * Q = H. LAPACK-функция GEHRD.
- ReflectHessenbergToQ — генерирует ортогональную матрицу Q, которая определяется как произведение n-1 элементарных рефлекторов порядка n, возвращаемых функцией ReduceToHessenberg: Q = H(1) H(2) . . . H(n-1). LAPACK-функция ORGHR.
Вычисление собственных значений и собственных векторов
- EigenHessenbergSchurQ — вычисляет собственные значения матрицы Хессенберга H и матриц T и Z из разложения Шура: H = Z T Z**T. Здесь T — верхняя квазитреугольная матрица (форма Шура), а Z — ортогональная матрица векторов Шура. LAPACK-функция HSEQR.
Решение систем линейных уравнений
- SylvesterEquationTriangular — решает уравнение Сильвестра для вещественных квазитреугольных или комплексных треугольных матриц: op(A)*X + X*op(B) = scale*C или op(A)*X - X*op(B) = scale*C, где op(A) = A или A**T или A**H, а A и B — верхнетреугольные. LAPACK-функция TRSYL.
- SylvesterEquationTriangularBlocked — решает уравнение Сильвестра для вещественных квазитреугольных или комплексных треугольных матриц: op(A)*X + X*op(B) = scale*C или op(A)*X - X*op(B) = scale*C, где op(A) = A, A**T или A**H, а A и B — верхнетреугольные матрицы. LAPACK-функция TRSYL3. Это блочная (BLAS уровня 3) версия TRSYL. Быстрее до 5 раз, но менее точная.
Факторизованные расчеты
- SylvesterEquationSchur — решает уравнение Сильвестра для вещественных квазитреугольных или комплексных треугольных матриц: A*X + X*B = C, где A и B — верхнетреугольные матрицы. A имеет размер m на m, а B — n на n; правая часть C и решение X имеют размер m на n. LAPACK-функция TRSYL.
- SylvesterEquationSchurBlocked — решает уравнение Сильвестра для вещественных квазитреугольных или комплексных треугольных матриц: A*X + X*B = C, где A и B — верхнетреугольные матрицы. A имеет размер m на m, а B — n на n; правая часть C и решение X имеют размер m на n. LAPACK-функция TRSYL3. Это блочная (BLAS уровня 3) версия TRSYL. Быстрее до 5 раз, но менее точная.
Расчет норм матриц для разных структур
- MatrixNorm — возвращает значение 1-нормы, бесконечной нормы, нормы Фробениуса или наибольшего абсолютного значения любого элемента прямоугольной матрицы общего вида. LAPACK-функция LANGE.
- MatrixNormGeTrid — возвращает значение 1-нормы, бесконечной нормы, нормы Фробениуса или наибольшего абсолютного значения любого элемента общей трехдиагональной матрицы. LAPACK-функция LANGT.
- MatrixNormHessenberg — возвращает значение 1-нормы, бесконечной нормы, нормы Фробениуса или наибольшего абсолютного значения любого элемента верхней матрицы Хессенберга. LAPACK-функция LANHS.
- MatrixNormSy — возвращает значение 1-нормы, бесконечной нормы, нормы Фробениуса или наибольшего абсолютного значения любого элемента действительной симметричной или комплексной эрмитовой матрицы. LAPACK-функции LANSY и LANHE.
- MatrixNormComplexSy — возвращает значение 1-нормы, бесконечной нормы, нормы Фробениуса или наибольшего абсолютного значения любого элемента комплексной симметричной (не эрмитовой) матрицы. LAPACK-функция LANSY.
- MatrixNormSyTrid — возвращает значение 1-нормы, бесконечной нормы, нормы Фробениуса или наибольшего абсолютного значения любого элемента действительной симметричной или комплексной эрмитовой трехдиагональной матрицы. LAPACK-функции LANST и LANHT.
- MatrixNormTriangular — возвращает значение 1-нормы, бесконечной нормы, нормы Фробениуса или наибольшего абсолютного значения любого элемента трапециевидной матрицы размером m на n или треугольной матрицы. LAPACK-функция LANTR.
Анализ структурных свойств матриц
- IsSymmetric — проверяет, является ли квадратная матрица симметричной.
- IsHermitian — проверяет, является ли квадратная комплексная матрица эрмитовой.
- IsUpperTriangular — проверяет, является ли квадратная матрица верхнетреугольной.
- IsLowerTriangular — проверяет, является ли квадратная матрица нижнетреугольной.
- IsTrapezoidal — проверяет, является ли прямоугольная (не квадратная) матрица размером m на n верхней или нижней трапециевидной.
- IsUpperHessenberg — проверяет, является ли квадратная матрица верхней матрицей Хессенберга.
- IsLowerHessenberg — проверяет, является ли квадратная матрица нижней матрицей Хессенберга.
- IsTridiagonal — проверяет, является ли квадратная матрица трехдиагональной.
- IsUpperBidiagonal — проверяет, является ли квадратная матрица верхней бидиагональной.
- IsLowerBidiagonal — проверяет, является ли квадратная матрица нижней бидиагональной.
- IsDiagonal — проверяет, является ли квадратная матрица диагональной.
- IsScalar — проверяет, является ли квадратная матрица скалярной.
- Добавлен метод Conjugate для комплексных матриц и векторов. Он изменяет знак мнимой части комплексного числа и возвращает измененную матрицу или вектор.
- Усилены правила скрытия методов. При наличии в производном классе метода с тем же именем, что и в базовом, теперь по умолчанию вызывается версия из производного класса. Чтобы обратиться к базовому методу, теперь требуется квалификатор:
struct A { int y; string func(double x) { return(__FUNCSIG__); } }; struct B : public A { string func(int x) // метод скрывает A::func { return(__FUNCSIG__); } }; void OnStart(void) { B b; b.func(M_PI); // по новым правилам это вызов B::func b.A::func(M_PI); // вызов скрытого метода A::func }
Это упрощает чтение кода и устраняет неоднозначность, ранее сопровождавшуюся лишь предупреждением компилятора.
Ранее при компиляции было предупреждение:deprecated behavior, hidden method calling will be disabled in a future MQL compiler versionТеперь это изменение вступило в силу.
Некоторое количество билдов в журнал будет выводиться предупреждение, если по параметрам доступен более подходящий скрытый метод.
call resolves to 'string B::func(int)' instead of 'string A::func(double)' due to new rules of method hiding
see declaration of function 'B::func'
see declaration of function 'A::func'
truncation of constant value from 'double(3.141592653589793)' to 'int(3)' - Запрещено дублирование имен в одной области видимости. Например, ранее вы могли объявлять параметр input и функцию с одинаковым именем в одном файле. Теперь такое дублирование недопустимо:
input int somename=42; int somename(int x) { return(42); }
- Добавлена строгая проверка типов значений по умолчанию в перечислениях. Для параметров-функций, принимающих enum, теперь проверяется не только значение, но и точное соответствие типа:
int somename(ENUM_TIMEFRAMES TF=PERIOD_CURRENT); int somename(ENUM_TIMEFRAMES TF=0) // ошибка, несоответствие типа параметра по умолчанию, несмотря на их одинаковые значения { return(42); }
- Запрещены одинаковые идентификаторы в разных перечислениях. Идентификатор внутри одного перечисления теперь не может повторяться в другом в одной области видимости:
enum A { Value }; enum B { Value // ошибка, имя Value уже используется в перечислении A }; void OnStart(void) { enum C { Value // ошибки нет, в области видимости OnStart имя Value не используется }; }
В разных областях видимости можно использовать одинаковые имена. - Включены жесткие требования к шаблонным функциям-инициализаторам. При создании матриц/векторов через функции-инициализаторы отключены:
- Автотипизация шаблонных функций
- Значения параметров по умолчанию
Теперь необходимо явно указывать параметры шаблона и все аргументы:template<typename T> void Initializer(matrix<T>& mat,int method=0); matrix<double> A(10,10,Initializer,42); // ошибка, функция Initializer должна быть типизирована явно matrix<double> A(10,10,Initializer<double>); // ошибка, отсутствует параметр 'method' для вызова функции Initializer (значения по умолчанию больше не поддерживаются) matrix<double> A(10,10,Initializer<double>,42); // ошибки нет
- Улучшена поддержка ONNX. Добавлена неявная конверсия знакового типа при передаче массивов ulong в функциях, что облегчает интеграцию MQL5 с моделями ONNX.
OnnxSetInputShape( … , ulong_array );
OnnxSetOutputShape( … , ulong_array ); - Исправлено отображение типов в предупреждениях о неявном преобразовании строк.
- Обновлен пакет интеграции с Python. Для установки обновления выполните команду:
pip install --upgrade MetaTrader5
MetaEditor
- MetaEditor: Исправлена работа команды «Откатиться к ревизии», используемой для MQL5 Storage. Теперь оценка конфликтов между версиями, которые могут возникнуть при откате, производится до операции. Если откат невозможен, операция отменяется.
- Обновлены переводы пользовательского интерфейса.
Tester
- Tester: Исправлена работа функции OrderCalcMargin для счетов с биржевой моделью расчетов.
- Tester: Исправлено переключение между графиками при визуальном тестировании мультивалютных экспертов.
Web Terminal
- Исправлена верификация email при открытии демонстрационных и предварительных счетов. В некоторых случаях поле для ввода кода подтверждения не показывалось.
- Исправлено подключение к счету при работе в браузере Huawei.
- Исправлено подключение к счетам при использовании одноразовых паролей. В некоторых случаях при первом подключении к счету поле для ввода одноразового пароля могло отсутствовать.













































