A new update for the MetaTrader 5 platform has been released today. Although, the build's date is stated as July 7, it has actually become available from the MetaQuotes server today in the early morning. The new build's number is 1625. It is not available from the trading servers of the brokers, instead you should download it from the official demo server. The update focuses on the creation of the custom trading symbols but introduces a lot of other important changes: You can now create your own trading instruments by combining the existing symbols available at your broker. Times and sales feature of the Market Depth display can now be filtered by volume to skip low-volume data points. Market Depth can now be attached to a chart, so that you see the respective Market Depth data each time you switch to that chart. Speed profiling is now available for the price history in MQL5 Editor. Added support for union - a special data type that allows several variables of different data types to be stored in the same place in the memory. Added default implicit copy operator for classes and structures that allows easy copying of objects and structures via '=' symbol without coding your own copy methods. Optimized execution of Copy*() functions in expert advisors. TimeToStruct() now returns boolean (true or false) value to check its execution success. FileWriteStruct() and FileReadStruct() can no longer be used with structures containing strings, dynamic arrays, object, and pointers. Added new return codes when sending trading requests: TRADE_RETCODE_REJECT_CANCEL, TRADE_RETCODE_LONG_ONLY, TRADE_RETCODE_SHORT_ONLY, TRADE_RETCODE_CLOSE_ONLY. When calling SymbolInfoInteger() function with SYMBOL_ORDER_MODE parameter, it will now tell you whether SYMBOL_ORDER_CLOSEBY is set - whether the symbol's positions can be closed by an opposite position. SymbolInfoInteger() can now be used to find out whether the symbol is custom-made (SYMBOL_CUSTOM). Added POSITION_REASON property to PositionGetInteger() call, DEAL_REASON to HistoryDealGetInteger(), and ORDER_REASON to OrderGetInteger() and HistoryOrderGetInteger() calls to find out the reason for the trades made. Optimized access to real ticks history and also orders and deals history. Added a list of breakpoints for the program currently being debugged. Fixed some other bugs and errors. MetaQuotes' release announcement is available here: https://www.mql5.com/en/forum/206432 If you find a bug or some undocumented feature in the new build, please post about it here.