MetaEditor
- Мы полностью обновили хранилище исходных кодов MQL5 Storage. Теперь в качестве системы контроля версий в нем используется не Subversion, а Git. Он является стандартом для разработчиков по всему миру, обеспечивая надежность и гибкость в управлении кодом.
- Гибкое ветвление и слияние — создавайте отдельные ветки для новых функций или экспериментов, а затем легко объединяйте их в основную версию проекта.
- Ускоренная работа с репозиторием — в отличие от Subversion, Git хранит все данные локально, что делает операции (коммиты, переключение между версиями, сравнение изменений) гораздо быстрее.
- Работа в оффлайн-режиме — теперь вам не нужно постоянное подключение к серверу: вы можете коммитить изменения локально, а затем отправлять их в онлайн-репозиторий, когда будет удобно.
- Продвинутая система отслеживания изменений — Git позволяет легко просматривать историю изменений, отслеживать, кто и когда внес правки, а также откатываться к предыдущим версиям без лишних сложностей.
- Лучшее слияние изменений — продвинутая система сравнения и объединения кода позволяет минимизировать конфликты и легко управлять совместной разработкой.
Совместная разработка на новом уровне
Вместе с переходом на Git мы открываем новый портал для управления проектами онлайн — MQL5 Algo Forge. Это не просто список ваших проектов, это целая социальная сеть для разработчиков, своего рода GitHub для алготрейдеров. Подписывайтесь на интересных авторов, создавайте команды и ведите совместные проекты удобно.

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

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

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

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

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

- Оптимизировано потребление памяти, теперь для работы терминала используется меньше ресурсов компьютера.
- Оптимизировано отображение торговой истории счета. Теперь платформа может корректно выводить миллионы записей.
- Добавлена команда «По умолчанию» в меню «Окно». Она возвращает все элементы интерфейса — графики, Навигатор, Тестер стратегий и т.д. — в исходное положение.
- Исправлена ошибка, в некоторых случаях приводившая к зависанию диалога изменения позиции.
- Исправлен расчет стоимости открытых позиций при отрицательных ценах.
- Исправлен расчет гарантийного обеспечения в спецификации торгового инструмента при отрицательных ценах.
- Исправлен расчет текущих значений и отображение графиков MFE и MAE в торговом отчете.
- Исправлено масштабирование осцилляторов в подоконах графиков. Теперь вертикальная шкала для них отображается корректно.
- Исправлено скрытие и показ стаканов и досок опционов при переключении полноэкранного режима.
- Добавлен показ тикета позиции в торговой истории счета. Для включения колонки используйте контекстное меню.
- Исправлен расчет ликвидационной стоимости на вкладке «Активы» для фьючерсов и опционов.
- Исправлено копирование данных созданного счета в буфер обмена. На последнем этапе регистрации демонстрационного или предварительного счета пользователю выводятся данные счета: логин, пароли и т.д. Их можно скопировать в буфер обмена, чтобы сохранить в отдельном файле. Теперь соответствующая команда работает корректно на macOS.
- Исправлено отображение раздела журнала VPS. В некоторых случаях на странице показывалась ошибка.
- Исправлена поддержка мониторов HiDPI при работе в Linux.
- Обновлены переводы пользовательского интерфейса.
MQL5
- Добавлен оператор матричного умножения @. Он работает по правилам линейной алгебры и позволяет умножать матрицы и векторы, а также выполнять скалярное произведение векторов.
Матричное умножение (матрица × матрица)
matrix A(2, 3);
matrix B(3, 2);
matrix C = A @ B;
Матричное умножение (матрица × вектор)
matrix M(2, 3);
vector V(3);
vector R = M @ V;
Матричное умножение (вектор × матрица)
matrix M(2, 3);
vector V(1, 2);
vector R = V @ M;
Скалярное произведение (вектор × вектор)
vector V1(1, 3), V2(1, 3);
double r = V1 @ V2;
- Добавлен параметр ddof в методы Std, Var и Cov. Он определяет число степеней свободы, которые вычитаются из делителя при вычислении стандартного отклонения. Для Std и Var параметр по умолчанию равен 0, для Cov — 1.
Как влияет ddof:
- По умолчанию ddof=0, и стандартное отклонение вычисляется для всей совокупности (population standard deviation).
- Если ddof=1, то используется выборочное стандартное отклонение (sample standard deviation), что корректирует оценку для конечной выборки (используется в статистике при работе с подмножеством данных).
- Добавлены новые методы 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).
- Добавлена функция и метод 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
);
- Добавлена поддержка дополнительных псевдонимов целочисленных типов. Это упростит портирование кода из других языков, таких как C и C++.
Эти алиасы не вводят новые типы, а являются альтернативными именами уже существующих типов в MQL5. Их можно использовать во всех контекстах, где применимы базовые типы.
- int8_t
- uint8_t
- int16_t
- uint16_t
- int32_t
- uint32_t
- int64_t
- uint64_t
- Добавлены функции для определения цветовой схемы терминала:
Для определения факта смены цветовой схемы используйте обработчик OnChartEvent. При смене схемы дважды вызывается событие CHARTEVENT_CHART_CHANGE.
- Исправлена ошибка, приводившая к падению MetaEditor при компиляции кода, в котором есть метод Array::Reserve. Метод Reserve не изменяет размер массива, а резервирует место для указанного количества элементов для предотвращения перевыделения памяти при добавлении новых элементов.
- Исправлена работа метода Array::Push, добавляющего новые элементы в конец массива. Ошибка возникала для массивов, имеющих резерв в буфере.
- Исправлены функции для работы с OpenCL.
MetaTester
- Ускорена оптимизация торговых стратегий.
- Исправлена ошибка, в некоторых случая приводившая к чрезмерному потреблению оперативной памяти агентами тестирования при выполнении заданий из MQL5 Cloud Network.
Web Terminal
- Исправлена опция сохранения пароля в диалоге подключения к счету.
- Исправлена работа кнопок для перемещения графика. В некоторых случаях при их использовании график мог исчезать.
- Исправлена проверка поля «Отчество» в форме запроса реальных счетов. Теперь оно не является обязательным для заполнения.
- Исправлено открытие демо-счетов. В некоторых случаях при открытии счета происходило некорректное перенаправление на сайт брокера.
- Исправлено отображение кнопок открытия демонстрационных и реальных счетов. Теперь кнопки скрываются, если соответствующая функция отключена брокером.
- Исправлена работа поля «Депозит» в форме открытия демо-счетов.
- Исправлено отображение поля «Торговля» в спецификации контракта.
- Исправлено поле поиска символов в окне «Обзор рынка». Теперь в нем отображается кнопка «X» для выхода из режима поиска.
- Исправлена подсказка для поля, в котором вводится код подтверждения Email, в форме открытия счета.
Обновление будет доступно через систему Live Update.
Посмотрите предыдущие новости, пожалуйста: