MetaTrader 5 build 4260: General improvements

Fixed errors in subscribing to free products in the Subscriptions service

22 March 2024

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.