Added "Test" command to the context menu of MQL5 applications - enabling Strategy Tester with an MQL5 application selected for testing.
- Fixed trailing stop operation for pending orders.
- Fixed MQL5 Market product list update.
- Added the percentage value of the last deal's price change relative to its previous value into the trading symbol's price statistics.
- Fixed navigation through a chart in case of a specified fixation point.
- Fixed the terminal operation in corporate networks having proxy servers.
- Added automatic conversion of EURUSD* type Forex trading symbols. If a signals source has positions at EURUSD! symbol, while a subscriber trades on EURUSD (or vice versa), the terminal will automatically detect the similarity of the trading symbols changing their names when copying the signal.
- Added display of active orders and signal positions in the signal's description.
Added the dialog of consent to synchronize positions on a subscriber's account with signal's ones in case of a positive floating profit on a signal provider's account:
By default, synchronization is allowed only if the floating profit on the provider's account is not positive. This ensures that the signal subscriber can enter the market at a price that is not worse than the provider's one during synchronization of positions. Thus, the appropriate dialog window is shown before synchronization where traders can enable forced synchronization of positions with the signal, despite the positive floating profit.
Added the dialog of automatic closing of positions and orders on a subscriber's account before synchronizing with signal provider's positions and orders:
Before synchronization, subscribers should close positions and remove orders opened manually or based on another signal. If open positions or pending orders unrelated to the provider's signals are detected, the client terminal will offer to remove all pending orders and close all positions automatically at the current price. However, traders can perform all necessary actions manually.
- Added support of template functions and methods.
Templates can be compared with a macro (#define) representing an entire function instead of an expression. A template is inserted into the code in case the template function is called based on this call's
A separate function (with its own static variables) is added by the compiler for each of the existing sets of the template function call's parameters present in the code.
Example of the template function for calculation of the array's highest value:
template<typename T> .
T ArrayMax(const T &data,const T defval)
uint size =ArraySize(data);
Keep in mind that automatic reduction of parameters is not allowed when a template function is called. The parameter type should be clearly defined. For example, when calling ArrayMax function for char type array and CHAR_MIN as defval, the second parameter's type should be clearly defined as char:
Number of template parameters cannot exceed 8. Insertion of templates into the code is performed only by call parameters, evident template typification is not performed.
Example of evident typification:
- Enhanced integer properties received by CLGetInfoInteger function:
- CL_DEVICE_VENDOR_ID - OpenCL device vendor ID
- CL_DEVICE_MAX_COMPUTE_UNITS - number of OpenCL device computational units
- CL_DEVICE_MAX_CLOCK_FREQUENCY - frequency of OpenCL device computational units
- CL_DEVICE_GLOBAL_MEM_SIZE - size of the global memory of OpenCL device
- CL_DEVICE_LOCAL_MEM_SIZE - size of the local memory of OpenCL device
- Added CLGetInfoString returning the following OpenCL properties:
- CL_PLATFORM_PROFILE - OpenCL platform profile type
- CL_PLATFORM_VERSION - OpenCL platform version
- CL_PLATFORM_NAME - OpenCL platform name
- CL_PLATFORM_VENDOR - OpenCL platform vendor name
- CL_PLATFORM_EXTENSIONS - OpenCL platform possibilities (extensions)
- CL_DEVICE_NAME - OpenCL device name
- CL_DEVICE_VENDOR - OpenCL device vendor name
- CL_DRIVER_VERSION - OpenCL device driver version
- CL_DEVICE_PROFILE - OpenCL device profile type
- CL_DEVICE_VERSION - OpenCL device version
- CL_DEVICE_EXTENSIONS - OpenCL device possibilities (extensions)
- CL_DEVICE_OPENCL_C_VERSION - supported version of OpenCL compiler
- Added CLExecute overload function allowing users to specify dimensions of OpenCL local space of tasks.
- Fixed ArrayFill function operation.
- Removed warning when using an uninitialized variable in sizeof() function.
- Improved __FUNCSIG__ macro - added notification of the fact that parameters are arrays, as well as of their constancy.
- Standard Library. Fixed CCanvas::FillRectangle method.
- Standard Library. The classes for working with files are transformed using template methods.
- Standard Library. Added support of operator  in CArray* dynamic array classes.
- Standard Library. Enhanced CCheckGroup class methods - "checkbox group" control element.
- Standard Library. Added CIndicator::BarsCalculated method.
- Added the tester's compatibility with Wine.
- Added additional checks for disk errors during the tests.
- Fixed generation of week bars for trading symbols with a quote session on Sundays.
- Fixed generation of week and month bars - the bar time has sometimes been set incorrectly.
- Cloud agent having less than 100 megabytes of available disk space cannot execute the tasks.
- Removed log messages on charging commission during optimization.
- Fixed settings dialog behavior when testing an indicator.
- Fixed optimization chart display in case of a large number of passes.
- Added support of template functions and methods in MetaAssist.
Fixed errors reported in crash logs.
The live update is available through the LiveUpdate system.
The MetaTrader 5 Trading Terminal can be downloaded at https://download.mql5.com/cdn/web/metaquotes.software.corp/mt5/mt5setup.exe?utm_campaign=www.metatrader5.com