MetaTrader 5 build 2615: Fundamental analysis and complex criteria in the Strategy Tester

What's new in MetaTrader 5

17 September 2020


  1. Expanded fundamental analysis facilities.
    Added new trading instrument properties, which enable a more accurate categorization of symbols:
    • Sector — the sector of the economy which the asset belongs to, such as energy, finance, healthcare and others.
    • Industry — the industry type which the asset belongs to, such as sportswear, accessories, car manufacturing, restaurant business and others.
    • Country — the country of the company whose shares are traded on the stock exchange.
    Based on these properties, a separate system has been implemented in Market Watch, enabling efficient operations with symbols. Select a category from the menu, and all available instruments will be added to a list for in-depth analysis:

    Relevant properties have been added to contract specifications:

    Furthermore, fundamental data on trading symbols can now be opened directly from the platform. Links to the largest aggregators have been added to the Market Watch context menu:

    The availability of extended data is controlled by the broker. However, we have ensured the default availability of the advanced information for the maximum number of instruments. As soon as brokers update their servers to the new version, the appropriate country, sector and industry data will appear in your platforms.
  2. Improved Signals and Market showcases. Rental and subscription buttons have been added to the left-side panel:

    Further improvements concern the section design. This includes brighter button colors, larger MQL5 login buttons and other improvements.

  3. Fixed potential profit/loss calculation for Stop Loss and Take Profit chart levels.

  4. Fixed errors in the calculation of synthetic instruments. The errors could occasionally cause the platform to freeze at startup.
  5. Fixed display of built-in Fractals indicator values in the Data Window.
  6. All icons in the platform toolbars have been updated to support HiDPI monitors.
  7. Fixed position volume adjustment for copied trading signals. The adjustment operation could sometimes fail due to incorrectly applied stop levels, which caused the "invalid stops" error.
  8. Optimized price history rebuilding after relevant changes on the server.
  9. Fixed display of trade level tooltips on charts. In some cases, tooltips were shown on charts even if the display of trade levels was disabled.
  10. Fixed option "Show on Charts \ Auto Update" in the context menu of orders an d positions under the "Toolbox\ Trade" section. Now, if this option is unchecked, trading history display will be disabled for all open charts.


  1. Added MathClassify function. It determines the type of a real number and returns a result as a value from the new ENUM_FP_CLASS enumeration.
    ENUM_FP_CLASS  MathClassify(
       double  value      // real number
    The enumeration contains the following values:
    • FP_SUBNORMAL — a subnormal number which is closer to zero than the smallest representable normal number DBL_MIN — 2.2250738585072014e-308.
    • FP_NORMAL — a normal number in the range between 2.2250738585072014e-308 and 1.7976931348623158e+308.
    • FP_ZERO — a positive or a negative zero.
    • FP_INFINITE — a number which cannot be represented by the appropriate type, positive or negative infinity.
    • FP_NAN is not a number.

    Use the following code to check the real number validity:
       Print("value is not a valid number");
  2. Added symbol properties which can be obtained using SymbolInfoString functions:
    • SYMBOL_COUNTRY — the country of the company whose shares are traded on the stock exchange.
    • SYMBOL_SECTOR_NAME — the sector of the economy which the asset belongs to, such as energy, finance, healthcare and others.
    • SYMBOL_INDUSTRY_NAME — the industry which the asset belongs to, such as sportswear, accessories, car manufacturing, restaurant business and others.

    The properties are returned as a string.

    The sector and the industry which the instrument belongs to can be obtained as an enumeration value. This can be done by requesting the following properties using the SymbolInfoInteger function:
    The ENUM_SYMBOL_SECTOR and ENUM_SYMBOL_INDUSTRY enumerations have been added for working with these properties.

  3. A new memory management mechanism has been implemented in MQL5 programs. It enables up to 3 times faster memory allocation and avoids potential memory access errors.
  4. Optimized and accelerated operations with the account tick history via History* functions.
  5. Fixed WebRequest call from the OnDeinit entry point. In earlier versions, the function call could not be implemented in the case of an Expert Advisor stop.
  6. Fixed WebRequest function calls from services. Previously, a function call could fail after service restart.
  7. Added check for double type support on a device when using OpenCL. The float type cannot be used in financial calculations due to excessive rounding. Therefore, the platform explicitly requires double-support for calculations. If the double type is not supported, an appropriate message will be written to the platform log: device '<name>' does not support type 'double'. Previously, a common error message was shown in such cases.
  8. Fixed application of templates to a chart through the ChartApplyTemplate function.
  9. Fixed ChartSetInteger function call with the CHART_BRING_TO_TOP parameter.
  10. A new Conjugate method has been added to the built-in Alglib library. This method enables conjugate number calculation for complex numbers. The library is located at MQL5\Include\Math\Alglib.
  11. Completely revised code profiler. The new profiler operates with a higher accuracy and at a higher speed.
    • The analysis is now based on the code which is optimized similarly to the compilation of a program's release version. This enables a more accurate determination of code execution speed, as exactly the same code will be used during program execution.
    • The new profiler uses the "Sampling" profiling method. This lightweight and accurate method collects application performance statistics by collecting call stack data and by calculating performance at regular intervals.
    • Unlike the previous versions, the new profiler does not make any changes to the analyzed code. The previously used Instrumentation method added certain constructs to the code, which were used to measure the function speed. This could affect the final code speed.

    The development of the profiler will continue. Further improvements will become available in upcoming platform releases.


  1. Optimized operations with MQL5 Cloud Network. Fixed loading of Expert Advisors on agents.
  2. Added new optimization criterion "Complex Criterion max". This is an integral and complex measure of a test pass quality. It measures multiple parameters:
    • Number of Deals
    • Drawdown
    • Recovery Factor
    • Expected Payoff
    • Sharpe Ratio

    The highest value of one parameter (for example the profit) is not always the best option in terms of the complex analysis. The complex criterion gradually selects the best passes: firstly, by the number of deals, then by the Expected Payoff, Recovery Factor, and so on. The new option allows reception of the best optimization passes according to all parameters. Furthermore, you can select the optimal pass based on the desired parameter, such as the highest profit.

    Select the new criterion in the strategy tester settings and start optimization.

    The "Complex Criterion max" value will be displayed in a separate "Result" tab in optimization results. Passes can be sorted by this column. The new criterion supports color-coded lighting to visually highlight the best passes. Values below 20 are highlighted in red, and values above 80 are shown in dark green.

  3. Fixed calculation of custom commissions in the Strategy Tester.


  1. We have initiated the global revision of smart code management functions (IntelliSense).
    • Hints now show the full function signature in addition to its name.
    • The font for the hints is now set in accordance with MetaEditor settings.
    Further improvements will become available in upcoming platform releases.
Updated documentation.