Terminal
- Исправлено отображение настроек маржи в спецификации торгового инструмента. Ранее при использовании плавающего плеча (например, в зависимости от объема позиций на счете) в некоторых случаях настройки маржи в спецификации контракта показывались неверно.
- Исправлена сортировка заявок в стакане, если по символу разрешена торговля с отрицательными ценами. Теперь корректно и в правильном порядке отображаются заявки с положительными, отрицательными и нулевыми ценами.
- В руководство по терминалу добавлен раздел "Как тестер загружает исторические данные". В нем мы собрали основные сведения, необходимые для понимания работы тестера стратегий с торговой историей. Тестер всегда загружает "буфер истории до старта", чтобы обеспечить стабильность расчётов:
Если данных меньше, тестер сдвигает фактическую дату старта на ближайшую доступную, где условия выполняются.
Из-за этих требований иногда возникает ситуация: тестирование начинается не с указанной даты, а с более поздней. В журнале тестера это сопровождается сообщением:
start time changed to 2024.03.15 00:00 to provide data at beginning
- Добавлен перевод терминала на ирландский язык.
- Обновлены переводы пользовательского интерфейса.
MQL5
- Добавлены 5 новых методов в OpenBLAS — это новый раздел Matrix Balance, расширяющий возможности работы с квадратными матрицами. Новый набор функций обеспечивает:
- Балансировку матриц для повышения точности вычислений собственных значений.
- Восстановление собственных векторов после преобразований.
- Редукцию к форме Хессенберга и Шур-разложение, включая генерацию ортогональных матриц.
Благодаря этим инструментам разработчики получают полный цикл преобразований ― от предварительной подготовки матрицы до точного и устойчивого вычисления ее спектра.
Под капотом используются проверенные алгоритмы LAPACK (GEBAL, GEBAK, GEHRD, ORGHR, HSEQR), гарантирующие высокую производительность и надежность:
- MatrixBalance — балансирует квадратную матрицу (вещественную или комплексную) путем перестановок и/или масштабирования строк и столбцов. Снижает 1-норму, повышая точность последующего расчета собственных значений/векторов (на базе LAPACK-функции GEBAL).
- EigenVectorsBackward — формирует собственные векторы (правые или левые) исходной матрицы после балансировки, выполняет обратную трансформацию (на основе GEBAK).
- ReduceToHessenbergBalanced — преобразует сбалансированную матрицу в верхнетреугольную форму Хессенберга посредством ортогонального преобразования (GEHRD).
- ReflectHessenbergBalancedToQ — генерирует ортогональную матрицу Q, являющуюся продуктом отражающих матриц, образующихся при редукции к форме Хессенберга (ORGHR).
- EigenHessenbergBalancedSchurQ —
выполняет Шур-разложение: вычисляет собственные значения матрицы
Хессенберга, а также матрицы T (верхнетреугольная Шур-форма) и Z
(матрица векторов), при необходимости обновляет Q (HSEQR).
- Добавлены два новых метода в раздел Eigen Values.
Обе функции позволяют эффективно получать собственные векторы после
Шур-разложения и дополняют полный набор инструментов линейной алгебры в
MQL5:
- EigenVectorsTriangularZ —
вычисляет собственные векторы действительной верхней квазитреугольной
или комплексной верхнетреугольной матрицы (Шур-форма). Использует
разложение A = Q · T · Qᴴ (TREVC). Отличается высокой точностью.
- EigenVectorsTriangularZBlocked — блочный вариант вычисления собственных векторов (TREVC3). Работает быстрее, чем EigenVectorsTriangularZ, но может быть менее точным.
- Внесено важное изменение при наследовании — правило method hiding.
Ранее, если в производном классе или структуре определялся метод с тем же именем, что и в базовом классе, происходила перегрузка: все варианты методов (и предка, и потомка) были доступны в наследнике. Теперь, методы с одинаковым именем в потомке скрывают методы предка (method hiding).
Если необходимо вызвать скрытый метод предка, следует явно указать область видимости при вызове:
class Base
{
public:
void Print(int x) { ::Print("Base int: ", x); }
void Print(double y){ ::Print("Base double: ", y); }
};
class Derived : public Base
{
public:
void Print(string s){ ::Print("Derived string: ", s); }
};
void OnStart()
{
Derived d;
d.Print("text");
d.Print(10);
d.Base::Print(10);
}
Некоторое время компилятор MQL5 будет выдавать предупреждение, если
скрытый метод предка лучше подходит по параметрам вызова, чем доступный
метод потомка. Пример для приведенного выше кода d.Print(10):
call resolves to 'void Derived::Print(string)' instead of 'void Base::Print(int)' due to new rules of method hiding
see declaration of function 'Derived::Print'
see declaration of function 'Base::Print'
implicit conversion from 'number' to 'string'
- Добавлен оператор using для восстановления перегрузок методов предка.
Чтобы управлять новым поведением, в MQL5 появился оператор using. Он позволяет «подтянуть» в область видимости класса или структуры все перегрузки метода из базового типа:
class Base
{
protected:
void Print(int x) { ::Print("Base int: ", x); }
void Print(double y){ ::Print("Base double: ", y); }
};
class Derived : public Base
{
public:
void Print(string s){ ::Print("Derived string: ", s); }
using Base::Print;
};
void OnStart()
{
Derived d;
d.Print("text");
d.Print(42);
d.Print(3.14);
}
Если убрать using Base::Print;, то вызовы d.Print(42) и
d.Print(3.14) будут недоступны — останется только метод
Derived::Print(string)
Дополнительно в приведенном примере можно увидеть, что методы
protected предка, стали доступны в потомке (protected сменился на
public)
Таким образом, разработчики получают более гибкий и предсказуемый
контроль над иерархиями классов и могут точно определять, какие
перегрузки методов предка должны оставаться доступными в наследнике.
MetaEditor
- Ускорены вычисления SHA-1 хэшей для Git-операций при работе с Algo Forge. Это дает прирост производительности более 40% при массовых операциях.
- Исправлена логика проверки модификаций файлов для
Git-операций. Если изменилось только время модификации, но содержимое
осталось прежним, файл больше не считается измененным. Это устраняет ложные детекты и предотвращает конфликты с удаленным репозиторием.
Algo Forge
Опубликована Справка по работе с MQL5 Algo Forge. Из нее вы узнаете все ключевые преимущества Git, без лишней сложности:
- надёжное хранение истории версий и работа с ветками
- быстрые эксперименты и безопасное слияние изменений,
- собственный репозиторий или форк чужого проекта в один клик,
- прозрачная работа в команде с фиксацией вклада каждого,
- каталог открытых проектов и возможность учиться у других.
Клонирование чужого проекта
На forge.mql5.io зайди в проект, который ты хочешь клонировать, и выполни команду Fork. Заполни имя создаваемого форка и описание и сохрани изменения:

Затем перейди в MetaEditor с тем же MQL-аккаунтом и выполни команду обновить (Refresh) в Навигаторе. В папке Shared projects появится твой клонированный проект. Теперь загрузи его с портала Algo Forge командой Git Clone.
Ты скачаешь не только все файлы проекта, но и всю историю коммитов и
все ветки этого проекта. То есть ты сможешь продолжить работу над
форком, имея всю историю клонированного проекта.

Web Terminal
- Исправлено отображение времени рабочей и котировочной сессии в спецификации символа.
- Исправлено отображение настроек маржи в спецификации символа.
- Изменено отображение сессий торговых инструментов в спецификации символа.
- Добавлена поддержка торгового счета типа Contest — эти счета отображаются синим цветом, Demo — зеленым.
- Исправлена точность расчетов маржи с плавающим плечом в некоторых случаях.
- Исправлена ошибка открытия нового счета — в некоторых случаях не работала кнопка "Next" для перехода к следующему шагу.
- Исправлена ошибка, когда нельзя было выставить лимитный ордер между ценами Bid и Ask в режиме биржевого исполнения.
- Исправлена ошибка показа цены исполнения ордера. После отсылки приказа в окне будет показан результат его исполнения — успешное совершение торговой операции или отказ с описанием причины, почему она не была исполнена. В некоторых случаях цена исполнения показывалась как "0".
- Исправлена ошибка, когда не отображалась кнопка быстрого закрытия позиции.

- Исправлен показ валют торгового счета в окне выбора из списка счетов.
Посмотрите предыдущие новости, пожалуйста: