Новая версия платформы MetaTrader 5 build 5260: улучшения в Algo Forge, расширение OpenBLAS и новые правила наследования в MQL5

 

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

В этой версии мы продолжили расширение библиотеки линейной алгебры OpenBLAS в MQL5, добавив новый раздел функций. Благодаря этим инструментам разработчики получают полный цикл преобразований ― от предварительной подготовки матрицы до точного и устойчивого вычисления ее спектра.

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

Новая версия платформы MetaTrader 5 build 5260: улучшения в Algo Forge, расширение OpenBLAS и новые правила наследования в MQL5


Также мы улучшили работу с файлами в проектах Algo Forge — ускорили расчеты хешей и исправили ложные показы измений в файлах.

На самом портале алготрейдинга мы опубликовали справку по работе с MQL5 Algo Forge. В ней доступной форме показаны все возможности и преимущества Git-системы для алготрейдеров: поиск и мониторинг проектов, подписки на интересные публикации, групповая работа и клонирование репозиториев.


MetaTrader 5 Client Terminal

  1. Terminal: Исправлено отображение настроек маржи в спецификации торгового инструмента. Ранее при использовании плавающего плеча (например, в зависимости от объема позиций на счете) в некоторых случаях настройки маржи в спецификации контракта показывались неверно.
  2. Terminal: Исправлена сортировка заявок в стакане, если по символу разрешена торговля с отрицательными ценами. Теперь корректно и в правильном порядке отображаются заявки с положительными, отрицательными и нулевыми ценами. 
  3. Terminal: В руководство по терминалу добавлен раздел Как тестер загружает исторические данные. В нем мы собрали основные сведения, необходимые для понимания работы тестера стратегий с торговой историей. Тестер всегда загружает "буфер истории до старта", чтобы обеспечить стабильность расчётов:
    • D1 и ниже — от начала предыдущего года. Это обеспечивает запаса в минимум 1 год истории.  Например, если дата начала тестирования 01.03.2023, то тестер скачает данные из терминала историю, начиная с 01.01.2022. То есть 14 месяцев до даты с начала тестирования.
    • W1 — 100 недельных баров (~2 года).
    • MN1 —  100 месячных баров (~8 лет).

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

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

    start time changed to 2024.03.15 00:00 to provide data at beginning
  4. 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).


  5. MQL5: Добавлены два новых метода в раздел Eigen Values. Обе функции позволяют эффективно получать собственные векторы после Шур-разложения и дополняют полный набор инструментов линейной алгебры в MQL5:

    • EigenVectorsTriangularZ — вычисляет собственные векторы действительной верхней квазитреугольной или комплексной верхнетреугольной матрицы (Шур-форма). Использует разложение A = Q · T · Qᴴ (TREVC). Отличается высокой точностью.
    • EigenVectorsTriangularZBlocked — блочный вариант вычисления собственных векторов (TREVC3). Работает быстрее, чем EigenVectorsTriangularZ, но может быть менее точным.


  6. MQL5: Внесено важное изменение при наследовании — правило 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");    // вызов Derived::Print(string)
       d.Print(10);        // ВНИМАНИЕ! вызов Derived::Print(string), т.к. Base::Print скрыт (недоступен)
       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'

  7. MQL5: Добавлен оператор 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;  // возвращаем перегрузки Print из Base
      };
    
    void OnStart()
      {
       Derived d;
       d.Print("text");   // Derived::Print(string)
       d.Print(42);       // Base::Print(int)
       d.Print(3.14);     // Base::Print(double)
      }
    Если убрать using Base::Print;, то вызовы d.Print(42) и d.Print(3.14) будут недоступны — останется только метод Derived::Print(string)

    Дополнительно в приведенном примере можно увидеть, что методы protected предка, стали доступны в потомке (protected сменился на public)

    Таким образом, разработчики получают более гибкий и предсказуемый контроль над иерархиями классов и могут точно определять, какие перегрузки методов предка должны оставаться доступными в наследнике.

  8. MetaEditor: Ускорены вычисления SHA-1 хэшей для Git-операций при работе с Algo Forge. Это дает прирост производительности более 40% при массовых операциях.
  9. MetaEditor: Исправлена логика проверки модификаций файлов для Git-операций. Если изменилось только время модификации, но содержимое осталось прежним, файл больше не считается измененным. Это устраняет ложные детекты и предотвращает конфликты с удаленным репозиторием.
  10. Algo Forge: Опубликована Справка по работе с MQL5 Algo Forge. Из нее вы узнаете все ключевые преимущества Git, без лишней сложности:
    • надёжное хранение истории версий и работа с ветками
    • быстрые эксперименты и безопасное слияние изменений,
    • собственный репозиторий или форк чужого проекта в один клик,
    • прозрачная работа в команде с фиксацией вклада каждого,
    • каталог открытых проектов и возможность учиться у других.


    Клонирование чужого проекта
    На forge.mql5.io зайди в проект, который ты хочешь клонировать, и выполни команду Fork. Заполни имя создаваемого форка и описание и сохрани изменения:

    Клонирование проекта

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

    Команда Git Clone для получения проекта из Algo Forge

  11. Добавлен перевод терминала на ирландский язык.
  12. Обновлены переводы пользовательского интерфейса.


Web Terminal

  1. Исправлено отображение времени рабочей и котировочной сессии в спецификации символа.
  2. Исправлено отображение настроек маржи в спецификации символа.
  3. Изменено отображение сессий торговых инструментов в спецификации символа.
  4. Добавлена поддержка  торгового счета типа Contest — эти счета отображаются синим цветом, Demo — зеленым.
  5. Исправлена точность расчетов маржи с плавающим плечом в некоторых случаях. 
  6. Исправлена ошибка открытия нового счета — в некоторых случаях не работала кнопка "Next" для перехода к следующему шагу.
  7. Исправлена ошибка, когда нельзя было выставить лимитный ордер между ценами Bid и Ask в режиме биржевого исполнения.
  8. Исправлена ошибка показа цены исполнения ордера. После отсылки приказа в окне будет показан результат его исполнения — успешное совершение торговой операции или отказ с описанием причины, почему она не была исполнена. В некоторых случаях цена исполнения показывалась как "0".
  9. Исправлена ошибка,  когда не отображалась кнопка быстрого закрытия позиции.

    Кнопка закрытия позиции

  10. Исправлен показ валют торгового счета в окне выбора из списка счетов.


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

MQL5 Algo Forge - Ultimate Git Platform for Developers | Build your Software
MQL5 Algo Forge - Ultimate Git Platform for Developers | Build your Software
  • MQL5 Algo Forge - trader's community
  • forge.mql5.io
MQL5 Algo Trading community features uniques services for users of MetaTrader 5 and MetaTrader 4 trading platforms
 

Прошу исправить поведение ChartPeriod()

-

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам

Vitaly Muzichenko, 2025.09.04 15:34

Есть индикатор, создаю по нему MTF обращаясь через iCustom()

==

Как узнать в индикаторе, когда к нему идёт обращение с MTF, что он установлен на таймфрейме M1

Вроде раньше работала функция ChartPeriod()

но сейчас возвращает также таймфрейм, который запрашивает MTF

==

==

Проверил, в МТ4 работает без проблем,

насколько помню, это также работало и в МТ5, но сейчас не работает

МТ4  

Print(ChartPeriod(),"=",Period());  
МТ5  

-

Тоже самое касается ChartSymbol()

Print(ChartSymbol(),"=",Symbol());

Индикатор вызывался с графика NZDJPY  

МТ4 

МТ5 

[Удален]  

Форум по трейдингу, автоматизированным торговым системам и тестированию торговых стратегий

Новая сборка платформы MetaTrader 5 5260: улучшения в Algo Forge, расширенная поддержка OpenBLAS и новые правила наследования в MQL5

Фернандо Каррейру , 2025.09.04 16:46

«Форкинг» и «клонирование» — это два совершенно разных понятия. Описанная процедура — это «форкинг», а не «клонирование».

«Форк» больше не имеет доступа к обновлениям из исходного репозитория, тогда как «клон» продолжает иметь доступ ко всем текущим изменениям и обновлениям.

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

Forum on trading, automated trading systems and testing trading strategies

New MetaTrader 5 Platform Build 5260: Enhancements in Algo Forge, extended OpenBLAS support, and new inheritance rules in MQL5

Fernando Carreiro, 2025.09.04 16:46

"Forking" and "Cloning" are two completely different concepts. The described procedure is "Forking" and not "Cloning".

A "fork" no longer has access to updates from the original repository, while a "clone" continues to have access to any current changes and updates.

Please provide a mechanism for both and please don't mix the two up.

 

Сортировка векторов и матриц по прежнему не работает.

void OnStart()
{  vector v = {0, 1};
   matrix m = {{0, 1}, {2, 3}};
   v.Sort();
   m.Sort(0);
}

//'Sort' is not a member of 'vector' type
//'Sort' is not a member of 'matrix' type
 

- Окно котировок (F10) - не сохраняет размер окна и место установки;

пожалуйста!!! - добавьте в свойства (F10) размер столбцов и цвет для спреда;

- Отчеты (Alt+E) - не сохраняет размер окна и место установки;

- Обзор рынка (Ctrl+M) - не сохраняет размер столбцов (галочка "Авторазмер" снята);

- закладка "Вид -> Стакан цен -> глюк ??? ";

- пожалуйста!!! - сделайте панель "Стандартная" раздельной - на: "Стандартная" и "Графики" как в MT4,

"Стандартная" - для управления счетом, "Графики" - для управления графиками. Интерфейс платформы будет гибче и удобней в управлении!!!

как пример:
Файлы:
1.jpg  215 kb
 
...и кстати - для комментариев нет значка "Добавить картинку" (Alt+I)
 
Aeon_Ray #:
...и кстати - для комментариев нет значка "Добавить картинку" (Alt+I)

У вас рейтинг ноль - 

Когда будет больше - сможете добавлять.

А пока - добавляйте картинку как аттачмент (также, как вы в этом посте добавили ).

Новая версия платформы MetaTrader 5 build 5260: улучшения в Algo Forge, расширение OpenBLAS и новые правила наследования в MQL5
Новая версия платформы MetaTrader 5 build 5260: улучшения в Algo Forge, расширение OpenBLAS и новые правила наследования в MQL5
  • 2025.09.04
  • www.mql5.com
В пятницу 5 сентября 2025 года будет выпущена обновленная версия платформы MetaTrader 5...
 

b5260, просьба сделать ревизию Include\Trade\*.mqh. В частности, добавить это.

double CDealInfo::TakeProfit( void ) const { return(::HistoryDealGetDouble(this.m_ticket, DEAL_TP)); }
double CDealInfo::StopLoss( void ) const { return(::HistoryDealGetDouble(this.m_ticket, DEAL_SL)); }

Четыре года уже этим свойствам, никак не отражены в СБ.

Строка для поиска: Uluchshenie 135.
Новая версия платформы MetaTrader 5 build 3081: Улучшения в MQL5-сервисах и обновленный дизайн - В терминале появится обновленная версия платформы MetaTrader 5 build 2940. Улучшена система автоматического продления подписки на Сигналы. Исправлена
Новая версия платформы MetaTrader 5 build 3081: Улучшения в MQL5-сервисах и обновленный дизайн - В терминале появится обновленная версия платформы MetaTrader 5 build 2940. Улучшена система автоматического продления подписки на Сигналы. Исправлена
  • 2021.09.24
  • www.mql5.com
Terminal Добавлен показ издержек при совершении сделок в торговой истории. В некоторых случаях настройки вновь создаваемых символов могли переписывать настройки уже имеющихся. Ранее этот показатель отображался только в истории
 
b5260, ошибка компиляции.
struct A
{
  int Tmp;
  
  void operator =( int ) {}
  void operator []( int ) {}
};

struct B : public A
{
  using A::operator=;
  using A::operator[];
  
  void operator =( string ) {}
  void operator []( string ) {}  
};

void OnStart()
{
  B b;
  
  b = 0; // OK
  b[0];  // function must have a body
}
Строка для поискаOshibka 146.
 
fxsaber #:
b5260, ошибка компиляции. Строка для поискаOshibka 146.

Полагаю, что operator[] должен возвращать какое-либо значение, т.е. не быть void.

 

Не отжимает кнопку сдвига вправо после активации сдвига влево.