New MetaTrader 5 Platform Build 5200: Extended OpenBLAS support and enhanced control in MQL5

 

On Friday, August 1, 2025, an updated version of the MetaTrader 5 platform will be released.

In this version, we have significantly expanded support for the OpenBLAS linear algebra library in MQL5, adding nearly thirty new functions. These enhancements provide more capabilities for developing Expert Advisors that use machine learning.

In addition, MQL5 now features stronger controls to ensure the quality of developed programs. New compiler checks and constraints help prevent potential errors in application behavior.

New MetaTrader 5 Platform Build 5200: Extended OpenBLAS support and enhanced control in MQL5

The desktop platform also introduces automatic interface switching based on your operating system settings – eliminating the need to adjust it manually.


MetaTrader 5 Client Terminal

  1. Terminal: Added the ability to automatically apply the light or dark theme based on your Windows settings. To enable this, select the new option: View \ Color Themes \ System. Each time the platform launches, it will detect your system theme and adjust accordingly.


    Added the ability to automatically apply the light or dark theme based on your Windows settings


  2. Terminal: Fixed display issues with toolbars detached from the main window.
  3. Terminal: Fixed the portfolio liquidation value calculation in the Assets section. In some cases, positions for certain instruments were not accounted for.
  4. Terminal: Fixed the display of negative prices in the Depth of Market. These are now sorted correctly.
  5. Terminal: Fixed price history import to custom symbols. For instruments located in the root folder, the corresponding commands could previously be unavailable.
  6. MQL5: Added new OpenBLAS methods:

    Matrix Reductions

    • ReduceToHessenberg — reduces a real or complex general n-by-n matrix A to upper Hessenberg form B by an orthogonal similarity transformation: Q**T * A * Q = H. LAPACK function GEHRD.
    • ReflectHessenbergToQ — generates orthogonal matrix Q which is defined as the product of n-1 elementary reflectors of order n, as returned by ReduceToHessenberg: Q = H(1) H(2) . . . H(n-1). LAPACK function ORGHR.

    Eigenvalues and Eigenvectors

    • EigenHessenbergSchurQ — computes the eigenvalues of a Hessenberg matrix H and the matrices T and Z from the Schur decomposition H = Z T Z**T, where T is an upper quasi-triangular matrix (the Schur form), and Z is the orthogonal matrix of Schur vectors. LAPACK function HSEQR.

    Linear Equations

    • SylvesterEquationTriangular — solves Sylvester equation for real quasi-triangular or complex triangular matrices: op(A)*X + X*op(B) = scale*C or op(A)*X - X*op(B) = scale*C where op(A) = A or A**T or A**H, and A and B are both upper triangular. LAPACK function TRSYL.
    • SylvesterEquationTriangularBlocked — solves Sylvester equation for real quasi-triangular or complex triangular matrices: op(A)*X + X*op(B) = scale*C or op(A)*X - X*op(B) = scale*C where op(A) = A or A**T or A**H, and A and B are both upper triangular. LAPACK function TRSYL3. This is the block (BLAS level 3) version of TRSYL. Faster up to 5 times but not so accurate.

    Factored Calculations

    • SylvesterEquationSchur — solves Sylvester equation for real quasi-triangular or complex triangular matrices: A*X + X*B = C where A and B are both upper triangular. A is m-by-m and B is n-by-n; the right hand side C and the solution X are m-by-n. LAPACK function TRSYL.
    • SylvesterEquationSchurBlocked — solves Sylvester equation for real quasi-triangular or complex triangular matrices: A*X + X*B = C where A and B are both upper triangular. A is m-by-m and B is n-by-n; the right hand side C and the solution X are m-by-n. LAPACK function TRSYL3. This is the block (BLAS level 3) version of TRSYL. Faster up to 5 times but not so accurate.

    Matrix Norm Calculations

    • MatrixNorm — returns the value of the 1-norm, infinity-norm, Frobenius norm, or the largest absolute value of any element of a general rectangular matrix. LAPACK function LANGE.
    • MatrixNormGeTrid — returns the value of the 1-norm, infinity-norm, Frobenius norm, or the largest absolute value of any element of a general tridiagonal matrix. LAPACK function LANGT.
    • MatrixNormHessenberg — returns the value of the 1-norm, infinity-norm, Frobenius norm, or the largest absolute value of any element of an upper Hessenberg matrix. LAPACK function LANHS.
    • MatrixNormSy — returns the value of the 1-norm, infinity-norm, Frobenius norm, or the largest absolute value of any element of a real symmetric or complex Hermitian matrix. LAPACK functions LANSY, LANHE.
    • MatrixNormComplexSy — returns the value of the 1-norm, infinity-norm, Frobenius norm, or the largest absolute value of any element of a complex symmetric (not Hermitian) matrix. LAPACK function LANSY.
    • MatrixNormSyTrid — returns the value of the 1-norm, infinity-norm, Frobenius norm, or the largest absolute value of any element of a real symmetric or complex Hermitian tridiagonal matrix. LAPACK functions LANST, LANHT.
    • MatrixNormTriangular — returns the value of the 1-norm, infinity-norm, Frobenius norm, or the largest absolute value of any element of a trapezoidal m-by-n or triangular matrix. LAPACK function LANTR.

    Matrix Classification

    • IsSymmetric — checks if a square matrix is symmetric.
    • IsHermitian — checks if a square complex matrix is Hermitian.
    • IsUpperTriangular — checks if a square matrix is upper triangular.
    • IsLowerTriangular — checks if a square matrix is lower triangular.
    • IsTrapezoidal — checks if a rectangular (not square) m-by-n matrix is upper or lower trapezoidal.
    • IsUpperHessenberg — checks if a square matrix is upper Hessenberg matrix.
    • IsLowerHessenberg — checks if a square matrix is lower Hessenberg matrix.
    • IsTridiagonal — checks if a square matrix is tridiagonal.
    • IsUpperBidiagonal — checks if a square matrix is upper bidiagonal.
    • IsLowerBidiagonal — checks if a square matrix is lower bidiagonal.
    • IsDiagonal — checks if a square matrix is diagonal.
    • IsScalar — checks if a square matrix is scalar matrix.

  7. MQL5: Added the Conjugate method for complex matrices and vectors. This method changes the sign of the imaginary part of a complex number and returns the modified matrix or vector.
  8. MQL5: Strengthened method hiding rules. When a derived class contains a method with the same name as one in the base class, the derived class version is now called by default. To explicitly call the base class method, a qualifier is now required:
    struct A
      {
       int y;
      
       string func(double x)
         {
          return(__FUNCSIG__);
         }
      };
      
    struct B : public A
      {
       string func(int x)   // the method hides A::func
         {
          return(__FUNCSIG__);
         }
      };
      
    void OnStart(void)
      {
       B b;
       b.func(M_PI);          // according to new rules, it is a call to B::func
       b.A::func(M_PI);       // call the hidden method A::func
      }
    This change simplifies code readability and eliminates ambiguity that was previously only accompanied by a compiler warning.

    Previously, compilation would issue a warning:
    deprecated behavior, hidden method calling will be disabled in a future MQL compiler version
    This change has now taken effect.

    For a number of builds, a warning will still appear in the log if a more suitable hidden method is available based on the parameters:
    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)'
  9. MQL5: Duplicate names within the same scope are now prohibited. For example, it was previously possible to declare an input parameter and a function with the same name within a single file. Such duplication is no longer allowed:
    input int somename=42;
    
    int somename(int x)
      {
       return(42);
      }
  10. MQL5: Added strict type checking for default values in enumerations. For function parameters accepting an enum, not only the value but also the exact type must now match:
    int somename(ENUM_TIMEFRAMES TF=PERIOD_CURRENT);
    
    int somename(ENUM_TIMEFRAMES TF=0)   // error, type mismatch for the default parameter value, despite having the same value
      {
       return(42);
      }
  11. MQL5: Identical identifiers are now prohibited across different enumerations. An identifier declared in one enumeration can no longer be reused in another within the same scope:
    enum A
      {
       Value
      };
      
    enum B
      {
       Value  // error, name 'Value' is already used in enumeration A
      };
      
    void OnStart(void)
      {
       enum C
         {
          Value // OK, 'Value' is not used within the OnStart scope
         };
      }
    Matching names can be used in different scopes.

  12. MQL5: Introduced stricter requirements for template initializer functions. When creating matrices/vectors using initializer functions, the following features are now disabled:

    • Automatic type deduction in template functions
    • Default parameter values

    All template parameters and arguments must now be specified explicitly: 
    template<typename T>
    void Initializer(matrix<T>& mat,int method=0);
    
    matrix<double> A(10,10,Initializer,42);          // error, Initializer must be explicitly typed
    matrix<double> A(10,10,Initializer<double>);     // error, missing 'method' parameter (default values no longer supported)
    matrix<double> A(10,10,Initializer<double>,42);  // OK
  13. MQL5: Improved ONNX support. Added implicit conversion of signed types when passing ulong arrays to functions, simplifying MQL5 integration with ONNX models.
    OnnxSetInputShape( … , ulong_array );
    OnnxSetOutputShape( … , ulong_array );
  14. MQL5: Fixed display of types in compiler warnings related to implicit string conversions.
  15. MQL5: Updated Python integration package. To install the update, run the command:
    pip install --upgrade MetaTrader5
  16. MetaEditor: Fixed the "Revert to Revision" command used with MQL5 Storage. Conflict evaluation between versions that may occur during a revert operation is now performed before the operation begins. If reverting is not possible, the operation is canceled.
  17. Tester: Fixed the OrderCalcMargin function for accounts with the Exchange calculation mode.
  18. Tester: Fixed switching between charts during visual testing of multicurrency Expert Advisors.
  19. Updated user interface translations.

MetaTrader 5 Web Terminal

  1. Fixed email verification during demo and preliminary account registration. In some cases, the input field for the confirmation code was not displayed.
  2. Fixed account connection issues when using the browser on Huawei devices.
  3. Fixed connection to accounts when using one-time passwords. In some cases, the input field for the OTP was missing on the first login attempt.


The update will be available through the Live Update system.

 

Forum on trading, automated trading systems and testing trading strategies

MT5 Build 5200 removes local Strategy Tester agents? (screenshots included)

Kevin James Van Driesten, 2025.08.02 18:42

Hello, 


I updated MT5 yesterday to the latest release, build 5200. Now the Strategy tester shows only 16 cores, while in all earlier build versions, it always showed 32 cores. 32 cores is what I should have, based on my CPU. 

Only the efficiency (E-cores) seem to be available now, at least from what's shown in Windows task manger. 

Screenshots are included. 

First, this shows the local tester cores available in the older builds:

MT5 old build version tester cores

Local tester cores in newest build:

MT5 newest build tester cores

Comparing CPU usage: Older Build:

MT5 old build tester agent CPU usage

Note how the performance (upper row) cores are being used much more in the older build version.

Newest Build: 

MT5 newest build tester agent CPU usage

Note how the performance (upper row) cores are not being used much in the newest build version.


Why was this changed?

Is there any way to rollback the build version to use the performance cores again? This update drastically increases testing and optimization times. 

Any help is appreciated, thank you. 

 
Alain Verleyen #:

build 5120 agent manager (from my non-updated 3rd installation of mt5) seems to be capturing all my local logical+physical cores. How can I make sure my build 5200 instances of Mt5 use the 5120 build of the agent manager?

 
Alain Verleyen #:

I got that working now, thanks
 
Kevin James Van Driesten #:
I got that working now, thanks

Hi Kevin how did you fix it?

 

Good day to all,

For me the toolbar issue on docked windows has not been fixed by the update. Did anyone had it fixed or found a workaround? Thanks!

 
How I could know if the MT5 updated or not on my PC 
Because I have issue with connection for 3 days now and don't know how to fix it and this might be the reason as the attached picture 

Does anyone know about it ? 
Files:
 
MOHAMMED ALKHALIFAH #:
How I could know if the MT5 updated or not on my PC 
Because I have issue with connection for 3 days now and don't know how to fix it and this might be the reason as the attached picture 

Does anyone know about it ? 

This red sign means that you don't have a connection with your broker's server, or that your account credentials are not correct.

You can check the build of your MT5 terminal, in MT5 >> Help >> About.

 
MOHAMMED ALKHALIFAH #:
How I could know if the MT5 updated or not on my PC 
Because I have issue with connection for 3 days now and don't know how to fix it and this might be the reason as the attached picture 

Does anyone know about it ? 

You can check the build number of you MT5 platform by clicking on Help>>About. 

 
After updating MT5 to build 5200, in the strategy tester – settings – leverage, the value keeps resetting from 1:30 to 1:300 (default MT5 settings) every time I open the settings. It's really frustrating and inconvenient.