What's new in MetaTrader 5

The history of updates of the desktop, mobile and web platforms

12 June 2025

MetaTrader 5 Platform update build 5120: Improvements and fixes

Terminal

  1. Fixed graphical interface display issues when running on Linux and macOS.
  2. Improved the platform update mechanism. The MQL5 Standard Library will no longer be entirely overwritten during updates – only the files that have actually changed will be replaced.
  3. Added automatic reset of full-screen view mode on application restart. The full interface will now be displayed at each launch.

MQL5

  1. Enabled passing of arrays with signed/unsigned typecasting in the following functions:

    • ArraySwap
    • WebRequest
    • CryptEncode
    • CryptDecode
    • StringToCharArray
    • CharArrayToString
    • StringToShortArray
    • ShortArrayToString
    • StructToCharArray
    • CharArrayToStruct

  2. Fixed retrieval of key states for MQL programs on the active chart using the TerminalInfoInteger function.
  3. Fixed ArrayInitialize function operation for enum arrays.

MetaEditor

  1. Updated available models for AI Assistant. All GPT-4.1 and 04-mini models are now supported.
  2. Enabled strict file status verification in MQL5 Storage. File hashes are now checked to prevent false indications. Previously, files without actual local changes compared to the repository version could be incorrectly marked with a red icon.
  3. Updated translations of the user interface.

6 June 2025

New MetaTrader 5 Platform Build 5100: Transition to Git and MQL5 Algo Forge developer hub, dark theme and interface improvements

MetaQuotes Language Editor

  • We have completely revised MQL5 Storage, replacing Subversion with Git as the version control system. Git is the global standard for developers, offering enhanced reliability and flexibility in code management.

    • Flexible branching and merging – create separate branches for new features or experiments and easily merge them into the main project version.
    • Faster repository operations – unlike Subversion, Git stores all data locally, making commits, version switching, and change comparisons significantly faster.
    • Offline work capability – no need for a constant server connection: commit changes locally and push them to an online repository whenever convenient.
    • Advanced change tracking – easily review version history, track modifications with timestamps and authors, and revert to previous versions without complications.
    • Superior merge functionality – advanced comparison and merge tools help minimize conflicts and streamline collaborative development.

    A new level of collaborative development
    With the transition to Git, we are introducing MQL5 Algo Forge, a new online portal for project management. More than just a project list, it is a full-fledged social network for developers – essentially, GitHub for algorithmic traders. Follow interesting developers, create teams, and collaborate on projects effortlessly.




    View project details: structure, files, commits, branches, and more. Track individual contributions, create documentation, and share projects online.




    Monitor all code changes: detect new, modified, and deleted lines. If issues arise, assign tasks to developers directly within the project.




    To enhance Git usability, we have redesigned the Navigator and the active code editing window. We have also introduced a dedicated Git menu on the MetaEditor toolbar:




    Comprehensive Git documentation will be available soon.

Terminal

  1. Added support for a dark color scheme for all components, including the trading terminal, MetaEditor, and the visual tester. The dark theme offers a more comfortable development experience at night. Use the View menu to switch:




    While adapting the interface to support different themes, we have introduced numerous improvements to the display of dialogs, menus, panels, and buttons for a more comfortable user experience. In MetaEditor, cursor position information and the text input mode indicator (INS/OVR) are now displayed in the upper-right corner. The bottom status bar has been removed to save the workspace.

  2. Added 12-month VPS rental option. By purchasing long-term hosting upfront, you save one-third of the total cost.




  3. Optimized memory usage. The terminal now consumes fewer system resources, resulting in improved performance.
  4. Optimized display of account trading history. The platform can now display millions of records correctly.
  5. Added "Reset to default" command to the Window menu. It resets all interface elements, including charts, Navigator, Strategy Tester, and others, to their original positions.
  6. Fixed error causing position modification dialog to freeze under certain conditions.
  7. Fixed value calculation for open positions with negative prices.
  8. Fixed margin rate calculations in trading symbol specifications with negative prices.
  9. Fixed calculation of current MFE and MAE values and display of their graphs in trading reports.
  10. Fixed scaling of oscillators in chart subwindows. The vertical scale for oscillators is now displayed correctly.
  11. Fixed visibility of order books and option boards when switching the full-screen mode.
  12. Added position ticket display in account trading history. Use the context menu to enable the relevant column.
  13. Fixed liquidation value calculation on the Exposure tab for futures and options.
  14. Fixed issue with copying newly created account data to the clipboard. During the final step of demo or preliminary account registration, the user is provided with account details: login, passwords, etc. These can be copied to the clipboard to save in a separate file. The corresponding command now functions correctly on macOS.
  15. Fixed display of the VPS log section. The page could display an error under certain conditions.
  16. Fixed HiDPI monitor support on Linux.
  17. Updated translations of the user interface.

MQL5

  1. Added matrix multiplication operator @. It follows linear algebra rules and allows the multiplication of matrices and vectors, as well as scalar (dot) products of vectors.

    Matrix multiplication (matrix × matrix)
    matrix A(2, 3);
    matrix B(3, 2);
    matrix C = A @ B; // Result: Matrix C of size [2,2]
    Matrix multiplication (matrix × vector)
    matrix M(2, 3);
    vector V(3);
    vector R = M @ V; // Result: Vector R of 2 elements
    Matrix multiplication (vector x matrix)
    matrix M(2, 3);
    vector V(1, 2);
    vector R = V @ M; // Result: Vector R of 3 elements
    Scalar multiplication (vector × vector)
    vector V1(1, 3), V2(1, 3);
    double r = V1 @ V2; // Result: Scalar
  2. Added 'ddof' parameter in methods Std, Var, and Cov. This parameter defines the number of degrees of freedom subtracted from the denominator when calculating the standard deviation. For Std and Var, the default parameter is 0, for Cov it is 1.

    How ddof affects calculation:

    • By default, ddof=0, meaning the population standard deviation is calculated.
    • If ddof=1, the function computes the sample standard deviation, which adjusts for finite sample sizes, commonly used in statistics when analyzing a subset of data.

  3. Added new OpenBLAS methods:

    Eigenvalues and Eigenvectors

    • EigenTridiagonalDC – computes eigenvalues and eigenvectors of a symmetric tridiagonal matrix using the divide-and-conquer algorithm (LAPACK function STEVD).
    • EigenTridiagonalQR – computes eigenvalues and eigenvectors of a symmetric tridiagonal matrix using the QR algorithm (LAPACK function STEV).
    • EigenTridiagonalRobust – computes eigenvalues and eigenvectors of a symmetric tridiagonal matrix using the MRRR (Multiple Relatively Robust Representations) algorithm (LAPACK function STEVR).
    • EigenTridiagonalBisect – computes eigenvalues and eigenvectors of a symmetric tridiagonal matrix using the bisection algorithm (LAPACK function STEVX).
    • ReduceToBidiagonal – reduces a general real or complex m-by-n matrix A to upper or lower bidiagonal form B by an orthogonal transformation: Q**T * A * P = B. If m≥n, B is an upper bidiagonal matrix; otherwise, B is lower bidiagonal. (LAPACK function GEBRD).
    • ReflectBidiagonalToQP – generates orthogonal matrices Q and P**T (or P**H for complex types) determined by ReduceToBidiagonal method when reducing a real or complex matrix A to bidiagonal form: A = Q * B * P**T. Q and P**T are defined as products of elementary reflectors H(i) or G(i) respectively. (LAPACK functions ORGBR, UNGBR).
    • ReduceSymmetricToTridiagonal – reduces a real symmetric or complex Hermitian matrix A to tridiagonal form B by an orthogonal similarity transformation: Q**T * A * Q = B. (LAPACK functions SYTRD, HETRD).
    • ReflectTridiagonalToQ – generates orthogonal matrix Q  which is defined as the product of n-1 elementary reflectors of order n, as returned by ReduceSymmetricToTridiagonal.

    • LinearEquationsSolution – computes the solution to the system of linear equations with a square coefficient matrix A and multiple right-hand sides.
    • LinearEquationsSolutionTriangular – computes the solution to the system of linear equations with a square triangular coefficient matrix A and multiple right-hand sides.
    • LinearEquationsSolutionSy – computes the solution to the system of linear equations with a symmetric or Hermitian conjugated matrix A and multiple right-hand sides.
    • LinearEquationsSolutionComplexSy – computes the solution to the system of linear equations with a complex symmetric matrix A and multiple right-hand sides.
    • LinearEquationsSolutionGeTrid – computes the solution to the system of linear equations with a symmetric or Hermitian conjugated positive-definite matrix A and multiple right-hand sides.
    • LinearEquationsSolutionSyPD – computes the solution to the system of linear equations with a general (nonsymmetric) tridiagonal coefficient matrix A and multiple right-hand sides.
    • LinearEquationsSolutionSyTridPD – computes the solution to the system of linear equations with a symmetric tridiagonal positive-definite coefficient matrix A and multiple right-hand sides.
    • FactorizationQR – computes the QR factorization of a general m-by-n matrix: A = Q * R (LAPACK function GEQRF).
    • FactorizationQRNonNeg – computes the QR factorization of a general m-by-n matrix: A = Q * R, where R is an upper triangular matrix with nonnegative diagonal entries (LAPACK function GEQRFP).
    • FactorizationQRPivot – computes the QR factorization of a general m-by-n matrix with column pivoting: A * P = Q * R (LAPACK function GEQP3).
    • FactorizationLQ – computes the LQ factorization of a general m-by-n matrix: A = L * Q (LAPACK function GELQF).
    • FactorizationQL – computes the QL factorization of a general m-by-n matrix: A = Q * L (LAPACK function GEQLF).
    • FactorizationRQ – computes the RQ factorization of a general m-by-n matrix: A = R * Q (LAPACK function GERQF).
    • FactorizationPLU – computes an LU factorization of a general M-by-N matrix A using partial pivoting with row interchanges (LAPACK function GETRF).
    • FactorizationPLUGeTrid – computes an LU factorization of a general (non-symmetric) tridiagonal N-by-N matrix A using elimination with partial pivoting and row interchanges (LAPACK function GTTRF).
    • FactorizationLDL – computes the factorization of a real symmetric or complex Hermitian matrix A using the Bunch-Kaufman diagonal pivoting method (LAPACK functions SYTRF and HETRF).
    • FactorizationLDLSyTridPD – computes the factorization of a symmetric positive-definite or, for complex data, Hermitian positive-definite tridiagonal matrix A (LAPACK function PTTRF).
    • FactorizationCholesky – computes the factorization of a real symmetric or complex Hermitian positive-definite matrix A (LAPACK function POTRF).
    • FactorizationCholeskySyPS – computes the Cholesky factorization with complete pivoting of a real symmetric (complex Hermitian) positive semidefinite n-by-n matrix (LAPACK function PSTRF).

  4. Added Random function and method for filling vectors and matrices with random values. Random values are generated uniformly within the specified range.
    static vector vector::Random(
      const ulong   size,       // vector length
      const double  min=0.0,    // min value
      const double  max=1.0     // max value
       );
    
    static matrix matrix::Random(
      const ulong   rows,       // number of rows
      const ulong   cols        // number of columns
      const float   min=0.0,    // min value
      const float   max=1.0     // max value
       );
  5. Added support for additional aliases for integer types. This will simplify code porting from other languages such as C and C++.

    These aliases do not introduce new types but provide alternative names for existing types in MQL5. They can be used in all contexts where the base types are applicable.

    • int8_t
    • uint8_t
    • int16_t
    • uint16_t
    • int32_t
    • uint32_t
    • int64_t
    • uint64_t

  6. Added new functions for detecting the terminal color scheme:


    To detect a color scheme change, use the OnChartEvent handler. When the theme changes, the CHARTEVENT_CHART_CHANGE event is triggered twice.

  7. Fixed a bug that caused MetaEditor to crash when compiling code containing the Array::Reserve method. The 'Reserve' method does not change the array size, but reserves space for the specified number of elements to prevent memory reallocation when adding new elements.
  8. Fixed the behavior of the Array::Push method, which adds new elements to the end of an array. The issue occurred in arrays with preallocated buffer space.
  9. Resolved issues in functions for working with OpenCL.

MetaTester

  1. Accelerated the optimization of trading strategies.
  2. Fixed a bug that, in certain cases, led to excessive memory usage by tester agents when executing tasks from the MQL5 Cloud Network.

Web Terminal

  1. Fixed the password-saving option in the account connection dialog.
  2. Fixed chart movement buttons. In some cases, using these buttons caused the chart to disappear.
  3. Corrected validation for the "Middle Name" field in the real account registration form. It is now optional.
  4. Fixed opening of demo accounts. In certain cases, users were incorrectly redirected to the broker's website.
  5. Fixed the visibility of buttons for opening demo and real accounts. These buttons are now hidden if the respective function is disabled by the broker.
  6. Fixed the "Deposit" field behavior in the demo account opening form.
  7. Fixed the display of the "Trading" field in the contract specification.
  8. Fixed the symbol search field in the "Market Watch" window. The "X" button now correctly appears for exiting search mode.
  9. Fixed the display of a tooltip for the email confirmation code field in the account opening form.


The update will be available through the Live Update system.

21 February 2025

MetaTrader 4 build 1440 MetaTrader 4 build 1440 includes important security improvements, error fixes, and platform stability enhancements.

13 December 2024

MetaTrader 5 platform build 4755: General improvements

This update fixes an error in the calculation of triple swaps in the strategy tester, which occurred under certain combinations of testing conditions. Additionally, a number of minor enhancements and fixes have been implemented to further improve the platform stability.

6 December 2024

MetaTrader 5 Platform Build 4730: Extended OpenBLAS support and general performance optimization

Terminal

  1. Terminal: Changed calculations for the position, order and deal values. The value is now displayed in the account deposit currency rather than the base currency of the trading symbol:

    The value of positions, orders and trades is now displayed in the account deposit currency

  2. Terminal: Added field for entering date of birth when opening demo accounts.

    Added field for entering date of birth when opening demo accounts


  3. Terminal: Fixed scaling of indicators displayed in the chart subwindow. For some oscillators, the minimum and maximum scale values could previously be selected incorrectly.
  4. Terminal: Optimized and accelerated unpacking of tick data and price history, which will increase the chart loading speed.
  5. Terminal: Fixed text color editing in the internal email compose window.
  6. Terminal: Updated user interface translations.

MQL5

  1. Added new OpenBLAS methods:

    • EigenSolver2 – compute generalized eigenvalues and eigenvectors for a pair of ordinary square matrices (lapack function GGEV).
    • EigenSolverX – compute eigenvalues and eigenvectors of a regular square matrix in Expert mode, i.e. with the ability to influence the computation algorithm and the ability to obtain accompanying computation data (lapack function GEEVX).
    • EigenSolver2X – compute eigenvalues and eigenvectors for a pair of regular square matrices in Expert mode, i.e. with the ability to influence the computation algorithm and the ability to obtain accompanying computation data (lapack function GGEVX).
    • EigenSolverShur – compute eigenvalues, the upper triangular matrix in Schur form, and the matrix of Schur vectors (lapack function GEES).
    • EigenSolver2Shur – compute eigenvalues, generalized eigenvectors, generalized Schur forms, and left and right Schur vectors for a pair of regular square matrices (lapack function GGES).
    • EigenSolver2Blocked – compute generalized eigenvalues and eigenvectors for a pair of regular square matrices using a block algorithm (lapack function GGEV3).
    • EigenSolver2ShurBlocked – for a pair of regular square matrices, compute eigenvalues, generalized eigenvectors, generalized Schur forms, and left and right Schur vectors using a block algorithm (lapack function GGES3).
    • EigenSymmetricRobust – compute eigenvalues and eigenvectors of a symmetric or Hermitian (complex conjugate) matrix using the Multiple Relatively Robust Representations, MRRR algorithm (lapack functions SYEVR, HEEVR).
    • EigenSymmetricBisect – compute eigenvalues and eigenvectors of a symmetric or Hermitian (complex conjugate) matrix using the bisection algorithm (lapack functions SYEVX, HEEVX).

  2. Added new methods for complex matrices:

    • TransposeConjugate – create a conjugate-transposed matrix.
      matrix<complex<T>> matrix<complex<T>>::TransposeConjugate(void) const;
      The method returns a new conjugate-transposed matrix in which the elements of the original matrix are transposed and converted to their complex conjugates.

      If an error occurs, an empty matrix is returned. Use the GetLastError function to get the error code.

    • CompareEqual – absolute comparison of two matrices.
      int matrix<T>::CompareEqual(const matrix<T>& mat) const
      The return values are:

      • -1 – if the element of matrix A is less than the corresponding element of matrix B.
      • 0 – if all elements of matrices A and B are identical.
      • 1 – if the element of matrix A is greater than the corresponding element of matrix B.

      The method can also return errors if the input data is invalid. To get the error code, use the GetLastError function.

  3. Added Python support up to version 3.13 for the corresponding integration package. To update the package, run the following command:

    pip install --upgrade MetaTrader5

  4. Fixed skipping of the first Timer event. An error occurred if a timer was started within the OnTimer handler.

MetaEditor

  • Fixed calculation of values for input variables in the debugger mode. In some cases, the message "unknown identifier" was displayed instead of the value.

Tester

  • Fixed search for required cross rates for currency conversion when testing applications using exchange instruments.

Web Terminal

  1. Added support for the Request execution type for large-volume orders.
  2. Added support for an extended description of the reason for requests rejected by a broker.
  3. Fixed account opening form. Information is now requested according to the broker settings.
  4. Fixed country detection during the registration of demo accounts.
  5. Fixed alignment in the dialog displaying the one-click trading warning.

11 October 2024

MetaTrader 5 build 4620: MQL5 bug fixes and new OpenBLAS methods

Terminal

  1. Fixed an error that caused an incomplete tick history to be returned under certain conditions.
  2. Fixed autocompletion when selecting symbols in languages other than English. When you type a symbol name in the search field, the system automatically suggests relevant options based on the entered characters. The search function now works correctly and case-insensitively across all locales.

MQL5

  1. Descriptions of new OpenBLAS methods have been added to MQL5 Documentation. Currently, 15 new methods for matrices and vectors are available, with more to be added soon.
    OpenBLAS is an efficient open-source solution for high-performance computing, especially when working with big datasets.

    Function

    Action

    SingularValueDecompositionDC

    Singular Value Decomposition, divide-and-conquer algorithm; considered the fastest among other SVD algorithms (lapack function GESDD).

    SingularValueDecompositionQR

    Singular Value Decomposition, QR algorithm; considered a classical SVD algorithm (lapack function GESVD).

    SingularValueDecompositionQRPivot

    Singular Value Decomposition, QR with pivoting algorithm (lapack function GESVDQ).

    SingularValueDecompositionBisect

    Singular Value Decomposition, bisection algorithm (lapack function GESVDX).

    SingularValueDecompositionJacobiHigh

    Singular Value Decomposition, Jacobi high-level algorithm (lapack function GEJSV).

    SingularValueDecompositionJacobiLow

    Singular Value Decomposition, Jacobi low-level algorithm (lapack function GESVJ). The method computes small singular values and their singular vectors with much greater accuracy than other SVD routines in certain cases.

    SingularValueDecompositionBidiagDC

    Singular Value Decomposition, divide-and-conquer algorithm for bidiagonal matrices (lapack function BDSVDX).

    SingularValueDecompositionBidiagBisect

    Singular Value Decomposition, bisection algorithm for bidiagonal matrices (lapack function BDSVDX).

    EigenSolver

    Compute eigenvalues and eigenvectors of a regular square matrix using the classical algorithm (lapack function GEEV).

    EigenSymmetricDC

    Compute eigenvalues and eigenvectors of a symmetric or Hermitian (complex conjugate) matrix using the divide-and-conquer algorithm (lapack functions SYEVD, HEEVD).

    SingularSpectrumAnalysisSpectrum

    A method function for calculating the relative contributions of spectral components based on their eigenvalues

    SingularSpectrumAnalysisForecast

    A method function for calculating reconstructed and predicted data using spectral components of the input time series.

    SingularSpectrumAnalysisReconstructComponents

    A method function for calculating reconstructed components of the input time series and their contributions.

    SingularSpectrumAnalysisReconstructSeries

    A method function for calculating the reconstructed time series using the first component_count components.

  2. Fixed errors when running older versions of executable MQL5 program files (.ex5) that use matrix::CopyRates methods. These errors did not occur in files compiled under new versions.
  3. Fixed type-checking for orders allowed in union.

MetaTester

  • Fixed crashes that could occur under certain conditions during the deinitialization of custom indicators.

4 October 2024

MetaTrader 5 Platform build 4585: Performance improvements

Terminal

  • Fixed crashes that could occur under certain conditions while stopping profiling of MQL5 programs.

MetaEditor

MetaTester

  • Fixed crashes that occurred under certain conditions when re-running single pass tests.

27 September 2024

MetaTrader 5 build 4570: Enhancements to the Web version and OpenBLAS integration in MQL5

Terminal

  1. Restricted access to MQL5 trading and history functions if the account is subscribed to a signal.

    When a signal subscription is detected on the account (regardless of whether copying is enabled in the current terminal), any MQL5 trading function calls are prohibited, including receiving open orders and positions, receiving history, and performing trading operations. A corresponding warning is logged in the journal:
    'XXX': signal subscription detected, trading and history access functions in MQL5 and Python disabled
    The restrictions also apply to Python trading functions: positions_total, positions_get, orders_total, orders_get, history_orders_total, history_orders_get, history_deals_total, history_deals_get, order_check, and order_send.

    If a signal subscription is canceled on the account or you connect to another account without a signal subscription, the restriction is lifted, and the following message is logged:
    'XXX': no signal subscription detected, trading and history access functions in MQL5 and Python enabled
    If the restriction is active on the account, MQL5 functions will return the following response codes:

    • OrderSend and OrderSendAsync return RET_REQUEST_AT_DISABLED_CLIENT
    • OrdersTotal and PositionsTotal return 0
    • PositionGetSymbol, PositionSelect, PositionSelectByTicket, and PositionGetTicket return ERR_MQLAPI_TRADE_POSITION_NOT_FOUND
    • OrderGetTicket and OrderSelect returns ERR_MQLAPI_TRADE_POSITION_NOT_FOUND
    • HistorySelect returns ERR_MQLAPI_TRADE_DEAL_NOT_FOUND

  2. Fixed, optimized and accelerated tick history request and export to CSV\HTML files.
  3. Added Microsoft Edge WebView2 support for displaying HTML content in the trading platform on macOS. Compared to the outdated MSHTML, the new component significantly expands content displaying capabilities by providing access to modern technologies. The transition to WebView2 improves the appearance of Market, Signals, VPS, and other sections, increasing their performance and creating more responsive interfaces.

  4. Fixed context menu in the internal mail sending window.
  5. Fixed filtering in the trading instrument selection dialog. It is no longer necessary to first input instrument names to hide expired instruments.
  6. Fixed calculation of margin requirements in the contract specification window. The error occurred for Exchange Stocks and Bonds instruments.
  7. Improved bulk position closing function for FIFO accounts. Incompatible operation types are no longer displayed for such accounts, including closing of all profitable/losing positions, same-directed positions and opposite positions.
  8. Fixed issue where users could not place opposite pending orders on accounts where position closing follows the FIFO rule.
  9. Fixed calculation of liquidation value for accounts with positions on Exchange Futures instruments.
  10. Fixed floating profit calculations for positions on Exchange Bonds and Exchange MOEX Bonds instruments.
  11. Disabled automatic demo account creation when the platform is launched without previously added accounts.
  12. Improved name and email validation when registering accounts.
  13. Fixed margin calculation for hedged positions. The error could occur in certain cases when using floating margin on the account (calculated based on the volume/value of current positions).
  14. Fixed updating the "Next" button state in the demo account opening dialog. After entering the phone or email confirmation code, the button could remain inactive under certain conditions.
  15. Updated user interface translations.

MQL5

  1. Added native integration with the OpenBLAS matrix computation library.

    OpenBLAS is a high-performance open-source linear algebra library that implements BLAS (Basic Linear Algebra Subprograms) and some LAPACK functions. OpenBLAS is designed to improve computational performance, particularly in matrix and vector operations, which are often used in scientific and engineering tasks such as machine learning, numerical methods, and simulations.

    Key features of OpenBLAS:

    • Multithreading support: OpenBLAS can efficiently use multiple processor cores for parallel computations, significantly accelerating operations on multiprocessor systems.
    • Optimization for processor architectures: OpenBLAS includes optimized builds for various processors such as Intel, AMD, ARM and others. The library automatically detects processor characteristics (supported instruction sets like AVX/AVX2/AVX512) and selects the most suitable function implementations.
    • Extensive BLAS operation support: OpenBLAS implements core BLAS functions, including vector operations (e.g., vector addition and dot product), matrix operations (multiplication), and vector-matrix operations.
    • LAPACK compatibility: The library supports LAPACK (Linear Algebra PACKage) functions for more complex linear algebra operations, such as solving systems of linear equations, calculating matrix eigenvalues, and others.
    • High performance: Compared to other BLAS libraries, OpenBLAS often demonstrates better results due to hand-crafted optimizations for specific processor architectures.

    OpenBLAS is widely used in applications involving numerical computations:

    • Training neural networks and other machine learning tasks.
    • Scientific computing (e.g. modeling of physical processes).
    • Processing and analyzing large amounts of data.

    The following methods are currently available in MQL5:

    Singular value decomposition:

    • SingularValueDecompositionDC – divide-and-conquer algorithm; considered the fastest among other SVD algorithms (lapack function GESDD).
    • SingularValueDecompositionQR – QR algorithm; considered a classical SVD algorithm (lapack function GESVD).
    • SingularValueDecompositionQRPivot – QR with pivoting algorithm (lapack function GESVDQ).
    • SingularValueDecompositionBisect – bisection algorithm (lapack function GESVDX).
    • SingularValueDecompositionJacobiHigh – Jacobi high level algorithm (lapack function GEJSV).
    • SingularValueDecompositionJacobiLow – Jacobi low level algorithm (lapack function GESVJ). The method computes small singular values and their singular vectors with much greater accuracy than other SVD routines in certain cases.
    • SingularValueDecompositionBidiagDC – divide-and-conquer algorithm for bidiagonal matrices (lapack function BDSVDX).
    • SingularValueDecompositionBidiagBisect – bisection algorithm for bidiagonal matrices (lapack function BDSVDX).

    Eigen methods:

    • EigenSolver – compute eigenvalues and eigenvectors of a regular square matrix using the classical algorithm (lapack function GEEV).
    • EigenSymmetricDC – compute eigenvalues and eigenvectors of a symmetric or Hermitian (complex conjugate) matrix using the divide-and-conquer algorithm (lapack functions SYEVD, HEEVD).

    Detailed documentation will be provided soon.

  2. Added the SYMBOL_SWAP_MODE_CURRENCY_PROFIT value in the ENUM_SYMBOL_SWAP_MODE enumeration. If the SymbolInfoInteger function returns this value, swaps on the account are charged in the profit calculation currency.
  3. Expanded ONNX Runtime support. Added new types of machine learning operations, allowing you to run more advanced neural models.
  4. We continue transition to a more efficient MQL5 compiler, which is already used for some functions. The transition will allow for further optimizations and faster program execution.
  5. Added new data types to support the OpenBLAS library:

    • complexf – complex number represented by float data
    • vectorcf – vector containing elements of type complexf
    • matrixcf – matrix containing elements of type complexf

  6. Improved WebRequest operations when working with websites that violate URL formatting rules, contain redirect errors or have long lists of alternative DNS names.
  7. Fixed simultaneous assignment of matrix or vector types to multiple variables.

MetaEditor

  1. Updated available models for the AI Assistant. The more advanced GPT-4o mini now replaces GPT-3.5 Turbo. Also added the 01-mini model.
  2. Fixed debugger error due to which variable values could fail to update in the watch window.
  3. Updated user interface translations.

MetaTester

  1. Fixed saving of margin coefficients in custom symbol settings.
  2. Fixed memory leaks that could occur between testing passes under certain conditions.

Web Terminal

  1. Added Crosshair mode for viewing precise values and measuring distances on charts.

    Enable the mode by clicking the relevant button on the left panel. Move the crosshair over any point on the chart to see the date and price on the respective axes. To measure distance, click on any point on the chart and drag the cursor to another point while holding the mouse button.




    You can also use shortcuts: press the middle mouse button to enable crosshair and use Esc or right-click to disable it.

  2. Added a simple line chart constructed on bar closing prices:




  3. In the mobile view, added ability to display additional columns in the Market Watch section. To configure, switch to the table mode and click "...":




  4. Added hotkeys:

    • Home – scroll to the beginning of the chart (earliest date)
    • End – scroll to the end of the chart (latest date)
    • Page Up – scroll the chart one screen back
    • Page Down – scroll the chart one screen forward

  5. Enhanced data security for account connection storage.
  6. Improved chart scrolling, dragging, and scaling functionality.
  7. Accelerated initial loading of the web platform on the page.
  8. Optimized loading of bars.
  9. Fixed floating profit calculations for positions on Exchange Bonds and Exchange MOEX Bonds instruments.
  10. Fixed volume input on the one-click trading panel on charts.
  11. Fixed error in updating the order volumes in the Depth of Market. Values could have been delayed in updating under certain conditions.
  12. Fixed minimum allowable trading volume check when placing orders.
  13. Fixed margin calculation for hedged positions. The error could occur in certain cases when using floating margin on the account (calculated based on the volume/value of current positions).
  14. Fixed error where the Buy and Sell buttons on the one-click trading panel could become inactive until the volume was changed.


21 June 2024

MetaTrader 5 Platform build 4410: Performance improvements MetaTrader 5 Platform build 4410: Performance improvements

We have released MetaTrader 5 build 4410, featuring several important improvements. The cloud-based Strategy Tester has been updated to eliminate possible terminal shutdown for some users upon launching the testing process. The Web Terminal is now more stable, with fixes for browser compatibility checks and demo account opening procedures.

Terminal

  • Fixed terminal crash, which could occur upon testing start under certain conditions.

MQL5

Web Terminal

  1. Fixed validation of browser compatibility with the web terminal. In some cases, users might have erroneously received a message indicating that their browser was not supported.
  2. Fixed opening of demo accounts.
  3. Minor fixes and improvements.
The update will be available through the Live Update system.

MetaTrader 5 for Android

  1. Completely redesigned interface for the tablet versions. It now features a modern design, already proven on the iOS and web versions of the platform. The main sections are now located at the bottom of the screen, and chart operation commands appear are available on the right.




  2. Added context menu to the position history section, allowing quick access to the trading dialog or chart of the corresponding symbol.
  3. Hidden command switching to the trading dialog for non-tradable symbols.
  4. Fixed operation with the MetaQuotes-Demo server.
Update your mobile apps through Google Play, Huawei AppGallery or by downloading the APK file.


7 June 2024

MetaTrader 5 Platform build 4380: Performance improvements

Terminal

  1. Fixed errors which could cause incorrect operation of the Live Update system under certain conditions.
  2. Added new Alt+X hotkey to open a list of experts.
  3. Fixed errors reported in crash logs.

MetaTester

  1. Fixed errors in setting certain properties of the Bitmap graphic object.
  2. The connection of testing agents to the MQL5 Cloud Network is now prohibited when operating in virtual environments and when the processor does not support the AVX instruction set.

Web Terminal

  1. Fixed error in the operation of the one click trading panel on the chart.
  2. Fixed warning dialog that opens when you enable the one click trading panel on the chart.

31 May 2024

MetaTrader 5 Build 4350: More analytical objects in the Web platform and Welcome page in MetaEditor

MetaEditor

  1. Added Welcome page to assist users in starting their journey with algorithmic trading and application development.



    Materials for beginners
    The "Introduction" section presents educational materials available on MQL5.com: language documentation, books, articles, developer forums and code base library. It also introduces services where you can apply and monetize your knowledge: the applications market, freelance and trading signals.

    In the documentation and books sections, you can find a more detailed description of the available learning materials.

    Useful features for developers
    The "What's New" section offers a collection of essential information to keep developers up-to-date:


    Additionally, you will find here a list of recently opened files for quick access.



    For users actively selling their applications in the Market, the "My Sales" report offers an invaluable tool for assessing their performance. It provides access to:

    • Comprehensive sales and download statistics over time.
    • Sales geography, offering insights into regions where your products have the highest popularity. This can suggest ideas for further project expansion, such as localization into specific languages or targeted advertising campaigns in particular regions.
    • Data on top-selling products based on sales volume and revenue generated. The graph can be filtered based on license type: full or rental for a certain duration. Additionally, you can see here a graph with product price changes. All of this will help you understand your customers.
    • Detailed download and sales statistics for each product.


  2. Improved built-in search. The top search bar is now used exclusively for searching text within the current document or in local files. For a global search through educational materials and codes, use a separate section in the Toolbox.


  3. Added support for GPT-4o, the latest ChatGPT model, in AI Assistant. It can be used to automatically complete code and get hints. You can select the new model in the MetaEditor settings.


  4. Updated user interface translations.

Terminal

  1. Increased precision in displaying the calculation price in the trading instrument specification.
  2. Added the hotkey Alt+X to open the list of Expert Advisors.
  3. Fixed MFE and MAE calculations in the trading report.
  4. Fixed saving and restoring of economic calendar filtering settings by country and currency.
  5. Fixed application of templates to charts. Now, if the display of trading history is enabled for the chart, the corresponding objects will not disappear after applying a template.
  6. Fixed errors in the options board. The addition of symbols to the board could cause the platform to freeze under certain conditions.
  7. Fixed error in the position editing dialog. In some cases, incorrect levels could be entered instead of the current Stop Loss and Take Profit values.
  8. Updated user interface translations.

MQL5

  1. Optimized and accelerated the ArrayResize function. The function can be executed up to 40% faster under certain conditions.
  2. Updated support for ONNX.
  3. Fixed MessageBox function calls in service applications. Regardless of the button pressed by the user in the dialog, the function returned a null value.
  4. Fixed error that, in some cases, caused incomplete initialization of MQL5 programs.
  5. Fixed error parsing some macros. The error occurred when using a large number of constants.


MetaTrader 5 Web Terminal

  1. Extended list of available analytical objects. Now, you can utilize the ruler to measure time and prices, draw shapes (rectangle, ellipse, triangle, and circle), and add labels to your charts. All objects can be found in the left panel:


  2. Added ability to rename objects.
  3. Improved integration with the economic calendar. Optimized and accelerated data requests.
  4. Accelerated chart operations.
  5. Accelerated application start and connection to a trading account.
  6. Fixed setting that controls the display of trading operations on the chart.
  7. Fixed display of margin requirements in contract specifications.
  8. Fixed display of account statuses in the history section. Issues could occur on devices with narrow screens.
  9. Fixed display of the Depth of Market changes.

22 March 2024

MetaTrader 5 build 4260: General improvements

Terminal

  1. Fixed errors in subscribing to free products in the Subscriptions service. The relevant button might not be displayed in the dialog under certain conditions.
  2. Updated translations of the user interface.

MQL5

  1. Expanded support for keyboard events:

    • Added CHARTEVENT_KEYUP event for the OnChartEvent handler. It allows the tracking of events related to key releases.
    • Added processing of Dead keys. These are the keys that modify the appearance of the character generated by the key struck immediately after. For example, in the Greek layout, a stressed vowel ά, έ, ύ, etc., can be generated by first pressing ";" and then the vowel. The pressing of such keys can be tracked using the TranslateKey function.
    • Improved TranslateKey and TerminalInfoInteger functions. Now, when receiving CHARTEVENT_KEYUP or CHARTEVENT_KEYDOWN events in OnChartEvent, you can obtain the complete keyboard state at the time the event occurred. For example, if the user pressed the Z key, you will be able to determine whether the Ctrl or Shift key was pressed at that moment. For other events, the functions will continue to operate as before, returning the keyboard state at the current moment.

  2. Updated the Alglib library. Following the update, the following methods in the CMatrixDouble and CMatrixComplex classes have been modified:
    vector<double/complex> operator[](const int i) const;
    vector<double/complex> operator[](const ulong i) const;
    They have been replaced by a single method with a constant return value:
    const vector<double/complex> operator[](const ulong i) const;
    This modification will assist in capturing incorrect use of the result in place as in the new Alglib version, the code mat[row][col]=x operates differently from the old version. Previously, this indicated writing to a matrix. Now, the value is written to a temporary object vector<double/complex>, which is immediately destroyed after recording.

    Adding const to the return value enables the use of mat[row][col]=x. Because mat[row] now returns a constant vector, attempting to overwrite its element with mat[row][col] will result in a compilation error.

  3. Fixed error that could cause the incorrect operation of ChartGet* functions under certain conditions.

MetaEditor

  1. Added search through the contents of the book Neural Networks for Algorithmic Trading in MQL5. The new option appears in the same section as the previously published book MQL5 Programming for Traders.


Tester

  1. Fixed optimization when using a large number of remote agents. In some cases, the error could cause excessive CPU usage.


MetaTrader 5 Web Terminal

  1. Fixed setting of limit orders for instruments with the exchange execution mode. Now, when the price of the order being placed changes relative to the current price (becomes higher or lower), the order type will not switch from Buy Limit to Sell Limit and vice versa, as it does for instruments of other types. Thus, users can place Buy Limit orders above the market and Sell Limit orders below the market, ensuring that the transaction price is guaranteed to be limited.
  2. Fixed the display of selected symbol counters in the Market Watch.

7 March 2024

MetaTrader 5 build 4230: More built-in applications and expanded ONNX support

Terminal

  1. Added 28 new Expert Advisors and 12 new indicators to the standard platform package. The applications are available in the Expert Advisors\Free Robots and Indicators\Free Indicators sections in the Navigator. Each program is available as source code with detailed comments to assist you in learning the MQL5 language.

    The robots implement trading strategies based on technical indicators and candlestick patterns, such as 3 Black Crows – 3 White Soldiers, Bullish Engulfing – Bearish Engulfing, Bullish Harami – Bearish Harami and others. New indicators are implementations of popular channels: Camarilla, DeMark, Donchian, Fibonacci and Keltner, among others.

    Added 28 new Expert Advisors and 12 new indicators in the standard platform package.


  2. Preparations are underway for the launch of Nasdaq market data subscriptions. Right from the platform, traders will be able to access real-time quotes and deep price histories for hundreds of financial instruments from one of the largest exchanges. Subscriptions will be available to any user having a demo account on the MetaQuotes-Demo server and an MQL5.community account.

    Nasdaq Market Data Subscription


    To get started, you only need to purchase a subscription and add the relevant symbols to your Market Watch. You can use these symbols as regular instruments: open charts, analyze them using objects and indicators, and run Expert Advisors in the strategy tester. Access to all information is implemented as for ordinary financial instruments with which you work with a broker.

  3. Improved margin section in the instrument specification. The section now features margin rates and calculated values for each instrument.


    Improved margin section in the instrument specification


    Fixed errors in margin display for certain types of symbols.

  4. Added link to the MQL5 Telegram channel in the Help menu. Interesting content for developers is regularly shared in the channel, including reviews of new programming articles and free robots and indicators from the Code Base. Subscribe to the channel and ensure you don't miss out on important information.

    Added link to the MQL5 Telegram channel in the Help menu.


  5. Added support for the ShutdownTerminal parameter in the [StartUp] section of custom configuration files. Use this parameter to launch the platform to execute one-off tasks using scripts. For example, you have a script that takes a screenshot of the chart. You can create a configuration file that launches this script along with the platform. If you add ShutdownTerminal set to 'Yes' to this file, the platform will automatically shut down immediately after the script completes.
  6. Enhanced protection of network protocols and Market products.
  7. Disabled support for the Signals service for demo accounts. To access enhanced statistics on your training accounts, use the new trading report. It features a plethora of metrics characterizing your strategy profitability and risks, including growth, balance and equity graphs, diagrams of trade distribution by direction and instruments, and much more.
  8. Fixed display of broker agreement links in the Help menu.
  9. Improved selection of the best server when renting VPSs.
  10. Fixed refreshing of the subscriptions page when switching between sections in the Navigator.
  11. Fixed updating of the list of agreements when opening a preliminary account.
  12. Updated translations of the user interface.

MQL5

  1. Added MQL_STARTED_FROM_CONFIG property in the ENUM_MQL_INFO_INTEGER enumeration. Returns true if the script/Expert Advisor was launched from the StartUp section of the configuration file. This means that the script/Expert Advisor had been specified in the configuration file with which the terminal was launched.
  2. We continue expanding support for ONNX models.

    Machine learning tasks do not always require greater computational accuracy. To speed up calculations, some models use lower-precision data types such as Float16 and even Float8. To allow users to input the relevant data into models, the following functions have been added to MQL5:
    bool ArrayToFP16(ushort &dst_array[],const float &src_array[],ENUM_FLOAT16_FORMAT fmt);
    bool ArrayToFP16(ushort &dst_array[],const double &src_array[],ENUM_FLOAT16_FORMAT fmt);
    bool ArrayToFP8(uchar &dst_array[],const float &src_array[],ENUM_FLOAT8_FORMAT fmt);
    bool ArrayToFP8(uchar &dst_array[],const double &src_array[],ENUM_FLOAT8_FORMAT fmt);
    
    bool ArrayFromFP16(float &dst_array[],const ushort &src_array[],ENUM_FLOAT16_FORMAT fmt);
    bool ArrayFromFP16(double &dst_array[],const ushort &src_array[],ENUM_FLOAT16_FORMAT fmt);
    bool ArrayFromFP8(float &dst_array[],const uchar &src_array[],ENUM_FLOAT8_FORMAT fmt);
    bool ArrayFromFP8(double &dst_array[],const uchar &src_array[],ENUM_FLOAT8_FORMAT fmt);
    Since real number formats for 16 and 8 bits may differ, the "fmt" parameter in the conversion functions must indicate which number format needs to be processed. For 16-bit versions, the new enumeration NUM_FLOAT16_FORMAT is used, which currently has the following values:

    • FLOAT_FP16 – standard 16-bit format also referred to as half.
    • FLOAT_BFP16 – special brain float point format.

    For 8-bit versions, the new ENUM_FLOAT8_FORMAT enumeration is used, which currently has the following values:

    • FLOAT_FP8_E4M3FN – 8-bit floating point number, 4 bits for the exponent and 3 bits for the mantissa. Typically used as coefficients.
    • FLOAT_FP8_E4M3FNUZ — 8-bit floating point number, 4 bits for the exponent and 3 bits for the mantissa. Supports NaN, does not support negative zero and Inf. Typically used as coefficients.
    • FLOAT_FP8_E5M2FN – 8-bit floating point number, 5 bits for the exponent and 2 bits for the mantissa. Supports NaN and Inf. Typically used for gradients.
    • FLOAT_FP8_E5M2FNUZ — 8-bit floating point number, 5 bits for the exponent and 2 bits for the mantissa. Supports NaN, does not support negative zero and Inf. Also used for gradients.

  3. Added new matrix and vector methods used in machine learning:

    • PrecisionRecall computes values to construct a precision-recall curve. Similarly to ClassificationScore, this method is applied to a vector of true values.
    • ReceiverOperatingCharacteristic — computes values to construct the Receiver Operating Characteristic (ROC) curve. Similarly to ClassificationScore, this method is applied to a vector of true values.

  4. ONNX Runtime updated to version 1.17. For release details, please see GitHub.
  5. Python integration package updated to version 5.0.4200, added support for Python 3.12. Update your package using the command "pip install --upgrade MetaTrader5" to get the latest changes.
  6. Added DEAL_REASON_CORPORATE_ACTION property in the ENUM_DEAL_REASON enumeration. It indicates a deal executed as a result of a corporate action: merging or renaming a security, transferring a client to another account, etc.
  7. Added support for comparing complex vectors and matrices for the Compare method. The comparison involves estimating the distance between complex numbers. The distance is calculated as sqrt(pow(r1-r2, 2) + pow(i1-i2, 2) and is a real number that can already be compared with epsilon.
  8. Fixed conversion of color type variables to text in RGB format.
  9. Fixed returning of the result of obtaining eigenvectors in the Eig method in the case of a complex eigenvalue. Added method overload for complex evaluation.
  10. Fixed OrderCalcMargin function operation for certain cases.

MetaEditor

  1. Added link to the recently released book "MQL5 Programming for Traders" in the Help\MQL5.community menu. The book has also been added to the search system, and thus you can find the necessary information directly from MetaEditor:

    Added search for the book "MQL5 Programming for Traders"



  2. Built-in search improvements:

    • The search results section in the Toolbox window has been divided into two tabs: "Search" for online search results (documentation, articles, book, etc.) and "Search in files" for local results.
    • A separate search string has been added to the results section. You can use it instead of the search bar in the main MetaEditor toolbar.

  3. Added support for AVX, AVX2 and AVX512 modes when compiling commands from the command line. To compile, add one of the following keys to your command: /avx, /avx2 or /avx512.
  4. SQLite engine for database operations updated to version 3.45.
  5. Disabled support for Internet Explorer. Now only Microsoft Edge WebView2 is used to display HTML pages. Compared to the outdated MSHTML, the new component significantly expands content displaying capabilities by providing access to the latest technologies. The use of WebView2 improves the appearance of some MetaEditor sections, increases performance, and creates a more responsive interface.
  6. Fixed freezing that occurred in rare cases on function autocompletion.

Tester

  1. Fixed calculations of triple swaps if the test start day falls on the triple-swap day.

MetaTrader 5 Web Terminal

Improved display of margin requirements in contract specifications. Now, in addition to ratios and initial parameters for calculations, specifications display the final margin values. If the margin amount depends on the position volume, the corresponding levels will be shown in the dialog.


Improved display of margin requirements in contract specifications


The margin is calculated based on the instrument price at the time the specification window opens and is not updated in real time. Therefore, the values should be considered indicative. To recalculate values based on current prices, reopen the instrument specification.

29 February 2024

Introducing the book "Neural Networks for algorithmic trading in MQL5"

We are happy to announce the release of a new book entitled Neural Networks for algorithmic trading in MQL5. From this book, you will learn how to use artificial intelligence in trading robots for the MetaTrader 5 platform. The author, Dmitry Gizlyk, is a hands-on neural network professional; he has written more than a dozen of articles on this topic. Now, with the support of MetaQuotes, all his valuable knowledge is conveniently collected in one book. The book gradually introduces the reader to neural network basics and their application in algorithmic trading. You will learn to create your own AI application, train it and extend its functionality.

Introducing the book "Neural Networks for algorithmic trading in MQL5"


The book is freely available online, under the NeuroBook section of the MQL5 Algo Trading community website. It consists of seven parts:

  • Chapter 1 introduces you to the world of artificial intelligence, laying the foundation with essential neural network building blocks, such as activation functions and weight initialization methods.
  • Chapter 2 explores MetaTrader 5 capabilities in detail, describing how to utilize the platform tools to create powerful algorithmic trading strategies.
  • Chapter 3 guides you through the step-by-step development of your first neural network model in MQL5, covering everything from data preparation to model implementation and testing.
  • Chapter 4 delves deep into understanding fundamental neural layer types, including convolutional and recurrent neural networks, their practical implementation, and comprehensive testing.
  • Chapter 5 introduces attention mechanisms like Self-Attention and Multi-Head Self-Attention, presenting advanced data analysis methodologies.
  • Chapter 6 explains architectural solutions to improve model convergence, such as Batch Normalization and Dropout.
  • Chapter 7 concludes the book and offers methods for testing trading strategies using the developed neural network models under real trading conditions through MetaTrader 5.

The book is intended for advanced users who already know how to write programs in MQL5 and Python. If you are beginning your algorithmic trading journey, we recommend starting with the book "MQL5 programming for traders" and with the language documentation.


18 January 2024

MetaTrader 5 Platform build 4150: Trading report export and new machine learning methods in MQL5

Terminal

  1. Added export of trading reports to HTML and PDF files. With this option, you can easily share your trading achievements with colleagues and investors. New export commands are available in the File menu and in the report menu.

    Export trading report to HTML and PDF files


  2. Added ability to save the current state of the Market Watch window to a CSV file. To do this, select Export in the context menu. The file will save the metrics that are selected at the time of export. To save more data, enable additional columns through the context menu.


    Exporting Market Watch state


  3. Improved display of margin requirements in contract specifications. Now, instead of ratios and initial parameters for calculations, specifications display the final margin values. If the margin amount depends on the position volume, the corresponding levels will be shown in the dialog.


    Improved display of margin requirements in contract specifications


    The margin is calculated based on the instrument price at the time the specification window opens and is not updated in real-time. Therefore, the values should be considered indicative. To recalculate values based on current prices, reopen the instrument specification.

  4. Disabled support for the Signals service for demo accounts. To access enhanced statistics on your training accounts, use the new trading report. It features a plethora of metrics characterizing your strategy profitability and risks, including growth, balance and equity graphs, diagrams of trade distribution by direction and instruments, and much more.
  5. Fixed display of the potential profit/loss value when editing Take Profit and Stop Loss for Stop Limit orders.
  6. Fixes and improvements related to the operation of the Payment system.
  7. Fixed duplicate checks when loading a set of symbols in the Market Watch from a *.set file.
  8. Fixed web installer for Parallels. Now, when using this virtualization system on macOS with M1/M2/M3, the platform will be installed correctly.
  9. Updated user interface translations.
  10. Fixed errors reported in crash logs.

MQL5

  1. Added new methods for operations with matrices and vectors, which are utilized in Machine Learning.

    • ConfusionMatrix — computes the error matrix. The method is applied to a vector of predicted values.
    • ConfusionMatrixMultilabel — computes the error matrix for each label. The method is applied to a vector of predicted values.
    • ClassificationMetric — computes the classification metric to evaluate the quality of the predicted data compared to the true data. The method is applied to a vector of predicted values.
    • ClassificationScore — computes the classification metric to evaluate the quality of the predicted data compared to the true data.
     
  2. Fixed data saving to a text file in the UTF-8 format using the FileWrite function.
  3. Disabled and deprecated Signal* functions. They will now return empty signal sets.

MetaEditor

  1. Increased sampling rate for profiling. The profiler now captures application states 10,000 times per second, enabling more accurate measurement of function execution rates.
  2. Updated available models in the automatic coding AI assistant. Added ChatGPT-4 Turbo model, removed outdated implementations.
  3. Fixed errors when replacing words in a selected text fragment.

Tester

  1. Fixed forward testing freezing, which could occur in generic optimization mode.
  2. Optimized and accelerated operations with the trading history from MQL5 programs.
  3. Fixed profit calculations for Close By operations. An error could occur for trading instruments not matching the main testing symbol.

Web Terminal

  1. Fixed update of trading symbol properties upon the relevant property changes on the broker's side.
  2. Fixed display of candlestick bodies on the chart. The chart could fail to display small bodies.
  3. Fixed operation of the Country field in the account opening form.

15 December 2023

Presenting the book "MQL5 Programming for Traders"

We have released the most comprehensive guide to MQL5 programming, authored by experienced algorithmic trader Stanislav Korotky with MetaQuotes' support.

The book is intended for programmers of all levels. Beginners will learn the fundamentals as the book introduces key development tools and basic programming concepts. With this material, you can create, compile, and run your first application in the MetaTrader 5 trading platform. Users with experience in other programming languages can immediately advance to the applied part related to creating trading robots and analytical applications in MQL5.

Presenting the book "MQL5 Programming for Traders"

The book is freely available online, under the "Book" section of the MQL5.community website. It consists of seven parts:

  1. Introduction to MQL5 and development environment – an overview of the basic principles of MQL5 programming and the MQL5 development environment, including MetaEditor's editing and compiling features.
  2. Fundamentals of MQL5 programming – the basic concepts, including data types, instructions, operators, expressions, variables, code blocks, and program structures applied for procedural-style MQL5 program development.
  3. Object-oriented programming – distinctive features that set MQL5 apart despite its similarities with other languages supporting the OOP paradigm, especially with C++.
  4. Common functions – frequently used built-in functions that are applicable in any program.
  5. Creating application programs – an in-depth look at the architectural nuances of MQL5 programs and their specialization by types of trading-related tasks, such as technical analysis using indicators, chart management, and use of graphical objects, among others.
  6. Trading automation – how to analyze the trading environment and automate trading using robots.
  7. Advanced language tools – a set of specialized APIs aimed at facilitating MQL5 integration with related technologies, including databases, data exchange, OpenCL, and Python.

The book provides numerous source code examples. Following the explanation, you can implement your own applications in the built-in editor and instantly view program execution results in the platform. The source codes are available in the public project \MQL5\Shared Projects\MQL5Book and in the Code Base.

Start learning MQL5 right now and discover the world of professional algorithmic trading. The knowledge gained will help you bring your ideas to life. You can also apply them in a commercial environment by developing and selling applications through the Market and taking on programming orders in the Freelance.


9 November 2023

Download MetaTrader 5 for macOS and Linux

We have prepared special trading platform installers quite some time ago. The installer for macOS is a full-fledged wizard with which the app is installed seamlessly, just like a native one. For Linux, we provide a script that can be downloaded and launched with a single command.

The installers perform all the required steps: they identify the user's system, download and install the latest Wine version, configure it, and then install MetaTrader inside it. All steps are completed in the automated mode, and you can start using the platform immediately after installation.

The installer links are available on the https://www.metatrader5.com website and in the trading platform's Help menu:



For macOS: Check your Wine version

We have recently completely updated the macOS installer, incorporating numerous improvements. If you are already using MetaTrader on macOS, please check the current Wine version, which is displayed in the terminal log upon startup:

LP 0 15:56:29.402 Terminal MetaTrader 5 x64 build 4050 started for MetaQuotes Software Corp.
PF 0 15:56:29.403 Terminal Windows 10 build 18362 on Wine 8.0.1 Darwin 23.0.0, 12 x Intel Core i7-8750H  @ 2.20GHz, AVX2, 11 / 15 Gb memory, 65 / 233 Gb disk, admin, GMT+2

If your Wine version is below 8.0.1, we strongly recommend removing the old platform along with the Wine prefix in which it is installed. You can delete the platform as usual by moving it from the "Applications" section to the bin. The Wine prefix can be deleted using Finder. Select the Go > Go to Folder menu and enter the directory name: ~/Library/Application Support/. Go to this directory and delete the following folders based on the installed MetaTrader version:

~/Library/Application Support/Metatrader 5
~/Library/Application Support/net.metaquotes.wine.metatrader5
~/Library/Application Support/Metatrader 4
~/Library/Application Support/net.metaquotes.wine.metatrader4

After that, reinstall the terminal using our installers.

  • During the process, you will be prompted to install additional Wine packages (Mono, Gecko). Please agree to this as they are necessary for proper functioning.
  • The minimum macOS versions are Big Sur for MetaTrader 4 and Mojave for MetaTrader 5.


You no longer need to search for manual installation instructions or use third-party solutions. You can install the platform in a couple of clicks and instantly start trading:

8 November 2023

MetaTrader 5 for iPhone/iPad: Bulk operations, 21 timeframes, and trading notifications

We continuously enhance the MetaTrader 5 mobile app for iOS by adding valuable trading and analytical features. In the past six months, we have introduced bulk trading operations, extra timeframes, trading notifications, and more. Here is a detailed overview of all these innovations.

  1. Bulk position closing and order deletion. The app now supports bulk operations for positions and orders. For example, you can close all open positions with just a couple of taps upon important news releases and thus promptly lock in profits. You can also quickly cancel all pending orders to prevent them from being triggered due to sharp price movements.

    To access bulk operations, tap the three dots in the positions or orders section or open the context menu for a specific operation.


    Bulk position closing and order deletion


  2. Trading notifications. Turn on notifications to always stay informed about trading operations on your account. The information is delivered in push notifications from the broker's server and thus you can receive it even when the app is not running. Depending on the settings provided by the broker with whom the selected account is opened, notifications may include information about orders, deals, deposits, and withdrawals. Notifications are enabled separately for each account; the setting is saved on the server.


    Trading Notifications


  3. Profit/loss for stop levels. When moving the Take Profit and Stop Loss levels, you will immediately see the potential profit/loss you will incur if the level triggers. The values are displayed in points and monetary terms.


    Profit/loss for stop levels


  4. Trading panel improvements. New settings enable the positioning of the trading panel above or below the chart. We have also increased the distance between the volume change options and the Buy and Sell buttons to avoid accidental order sending.


     Trading panel improvements


  5. Support for 21 timeframes. We have added 12 additional minute and hour timeframes to offer more options for price analysis. To add your preferred periods to the quick access panel, go to the timeframe menu above the chart and select them with a long press.


    The number of timeframes has increased to 21


  6. Advanced customization of trading levels. You can now individually enable/disable the display of position levels, pending orders, and Stop Loss/Take Profit levels.


    Advanced customization of trading levels


  7. Screen lock. You can set a PIN code or use Face ID/Touch ID to prevent other users from accessing the app. If someone gains access to your iPhone or iPad, your trading account will remain secure. To activate this feature, turn on 'Screen Lock' in the Settings/About window and set a four-digit PIN. If the app remains hidden for over a minute, you will need to enter the PIN or unlock the app using Face ID/Touch ID.


    Screen lock


  8. Chat improvements. Several new features have been introduced in the built-in messenger which enables communication between MQL5.community members:

    • Ability to block a user in a personal chat and view a list of blocked users.
    • Display of user data when tapping on the user avatar.
    • Ability to report a message in chat by long-pressing it.
    • An additional menu for new chats created by users who are not on your friends list. If you receive such a chat, you can immediately add the user to friends or block and report them.
    • Display of the number of unread messages on the section icon in the app settings.


    Chat improvements


  9. Links to brokers' regulatory documents. You can now access all the necessary legal information from your broker directly in the account properties section of your mobile app. The availability of links depends on your broker.
  10. Numerous improvements and fixes. Over the past six months, dozens of improvements have been introduced to guarantee stable and swift app performance.


Install the latest app version and unlock extended trading capabilities:

MetaTrader 5 in App Store MetaTrader 5 in App Store

6 November 2023

MetaTrader 5 for Android: New trading and analytics features

Over the past six months, a vast array of new features has been introduced to the MetaTrader 5 mobile app for Android. These include fast on-chart trading features, additional timeframes, visual representation of trading history, and more. A detailed overview of these updates is provided below.

  1. One-click trading from the chart. A deal can now be performed by simply opening a special panel and pressing Buy or Sell. This means you can seize opportunities instantly without wasting precious time switching between tabs.


    One-click trading from the chart


    The results of quick operations are displayed immediately in pop-up notifications on the chart. If you find the notifications unnecessary, you can disable them in the app settings. Also, using the settings, you can place the trading panel above or below the chart.

  2. Placing pending orders from the chart. You can now place pending orders visually by dragging them to the desired levels on the chart. Tap the button on the top panel, select the order type, set the price, and tap the arrow to confirm the parameters. This method is considerably faster than configuring parameters through a trading dialog. You can immediately set Stop Loss and Take Profit for the order. Likewise, you can modify any existing order by simply tapping on its level and setting new parameters.


    Placing pending orders from a chart


  3. Managing positions and orders from the chart. Select a position or order level on the chart, and a control panel will appear at the chart bottom. From this panel, you can close positions and delete orders, as well as add and remove their Stop Loss and Take Profit levels. When moving stop levels, you will immediately see the potential profit/loss in points and monetary terms.


    Closing positions and removing pending orders from the chart


  4. Trading history on the chart. Now, you can visually evaluate your market entries and exits. If you enable the history display in the app settings, all trades will be represented as arrows on the chart. The trade direction is indicated by color: blue for Buy and red for Sell. Entry and exit trades are connected by dotted lines. Additionally, you can choose to display open positions and active pending orders in the chart settings.


    Trading history on the chart


  5. Bulk position closing and order deletion. The app now supports bulk operations for positions and orders. For example, you can close all open positions with just a couple of taps upon important news releases and thus promptly lock in profits. You can also quickly cancel all pending orders to prevent them from being triggered due to sharp price movements.

    To access bulk operations, tap the three dots in the positions or orders section or open the context menu for a specific operation.


    Bulk position closing and order deletion


  6. Adaptive trading volume editing. The buttons for modifying volumes in the trading dialog now automatically adjust to the current volume value. The larger the volume, the more units are added or subtracted with each button tap.


    Adaptive trading volume editing


  7. Support for 21 timeframes. We have added 12 additional minute and hour timeframes to offer more options for price analysis. To add your preferred periods to the quick access panel, go to the timeframe menu above the chart and configure them.


    The number of timeframes has increased to 21


  8. Copying analytical objects on the chart. The new option enables faster chart markup. Open the object menu with a long press and select "Copy":


    Copying analytical objects on the chart


  9. Improved right chart border adjustment. To change the chart border shift, simply scroll the chart to the last price until a vertical separator appears. Next, drag the triangle at the bottom chart scale:


    Improved right chart border adjustment


  10. Account connection via a QR code. You can now transfer your account from the desktop platform or from another device by scanning a QR code. The account will be connected instantly without the need to enter a login and password. To access the QR code, tap the corresponding icon in the account properties.


    Account connection via a QR code


  11. Updated color schemes. The entire interface has been redesigned with special attention to color selection, ensuring a comfortable working environment. The app now supports a dark theme that activates automatically when you enable the dark theme on your device. Additionally, we have added settings for customizing the colors of all lines on the chart.


    Updated color schemes


  12. Links to brokers' regulatory documents. You can now access all the necessary legal information from your broker directly in the account properties section of your mobile app. The availability of links depends on your broker.
  13. Adjustments for Arabic and Persian languages. We have implemented various enhancements to ensure the app interface is correctly displayed in languages using right-to-left scripts.
  14. Numerous improvements and fixes. Over the past six months, hundreds of improvements have been introduced to guarantee stable and swift app performance.


Install the latest app version and unlock extended trading capabilities:

MetaTrader 5 on Google Play MetaTrader 5 in Huawei App Gallery APK file
Google Play Huawei App Gallery APK file

20 October 2023

MetaTrader 5 build 4040: Improvements and fixes

Terminal

  1. New trading report improvements. Fixed display of the first value on the growth graph and drawdown calculations.



  2. When opening accounts, traders receive several messages through the internal email system. They provide credentials and useful information about the platform capabilities and built-in services. We have updated and enhanced these emails, translated them into 50 languages, and completely updated the design.
  3. Optimized account deposit and withdrawal pages.
  4. Fixed volume change error when placing a new order. With some combinations of trading instrument settings, the field was not available for editing.
  5. Fixed display of broker agreement links in the demo account opening dialog.
  6. Updated user interface translations.

MQL5

  1. Fixed an error that could cause the MQL5 program to crash at startup under certain conditions.

MetaTrader 5 Web Terminal

  1. Fixed display of Stop Loss and Take Profit values in trading history.
  2. Enhanced logging. New log messages display information on successful and failed connections.
  3. Fixed context menu operation in the Market Watch.
  4. Fixed display of notifications about operation results when trading from the Depth of Market.
  5. Fixed error which caused the indicator subwindow to be removed from the chart when calling the trading dialog.
  6. Fixed on-chart dragging of trading levels displayed on top of analytical objects.
12345678910