- Added portrait mode for iPad. Now, you can browse through long lists of trading operations, as well as read your mail and financial news more conveniently.
- Added native support for iPad Pro.
- Added Korean language.

MetaEditor: Added a link to the tutorial video "How to Create a Trading Robot in the MQL5 Wizard" to the MQL5 Wizard. Watch this three-minute video and develop a trading robot without writing a single line of code.

The new version of the MetaTrader 5 Android is already available for download on Google Play.

What's new:
Update your application and try its new features!


2015.10.14 14:48:18.486 Data Folder: C:\Program Files\MetaTrader 5 2015.10.14 14:48:18.486 Windows 7 Professional (x64 based PC), IE 11.00, UAC, 8 x Intel Core i7 920 @ 2.67GHz, RAM: 8116 / 12277 Mb, HDD: 534262 / 753865 Mb, GMT+03:00 2015.10.14 14:48:18.486 MetaTrader 5 build 1190 started (MetaQuotes Software Corp.)
struct MqlTick { datetime time; // Time of a price last update double bid; // Current Bid price double ask; // Current Ask price double last; // Current Last price ulong volume; // Volume for the current Last price long time_msc; // Time of a price last update in milliseconds uint flags; // Tick flags };The parameters of each tick are filled in regardless of whether there are changes compared to the previous tick. Thus, it is possible to find out a correct price for any moment in the past without the need to search for previous values at the tick history. For example, even if only a Bid price changes during a tick arrival, the structure still contains other parameters as well, including the previous Ask price, volume, etc. You can analyze the tick flags to find out what data have been changed exactly:
//+------------------------------------------------------------------+ //| TemplTest.mq5 | //| Copyright 2015, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2015, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| Declare a template class | //+------------------------------------------------------------------+ template<typename T> class TArray { protected: T m_data[]; public: bool Append(T item) { int new_size=ArraySize(m_data)+1; int reserve =(new_size/2+15)&~15; //--- if(ArrayResize(m_data,new_size,reserve)!=new_size) return(false); //--- m_data[new_size-1]=item; return(true); } T operator[](int index) { static T invalid_index; //--- if(index<0 || index>=ArraySize(m_data)) return(invalid_index); //--- return(m_data[index]); } }; //+------------------------------------------------------------------+ //| Template class of a pointer array. In the destructor, it deletes | //| the objects, the pointers to which were stored in the array. | //| | //| Please note the inheritance from the TArray template class | //+------------------------------------------------------------------+ template<typename T> class TArrayPtr : public TArray<T *> { public: void ~TArrayPtr() { for(int n=0,count=ArraySize(m_data);n<count;n++) if(CheckPointer(m_data[n])==POINTER_DYNAMIC) delete m_data[n]; } }; //+--------------------------------------------------------------------------+ //| Declare the class. Pointers to its objects will be stored in the array | //+--------------------------------------------------------------------------+ class CFoo { int m_x; public: CFoo(int x):m_x(x) { } int X(void) const { return(m_x); } }; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ TArray<int> ExtIntArray; // instantiate TArray (specialize TArray by the int type) TArray<double> ExtDblArray; // instantiate TArray (specialize TArray by the double type) TArrayPtr<CFoo> ExtPtrArray; // instantiate TArrayPtr (specialize TArrayPtr by the CFoo type) //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { //--- fill arrays with data for(int i=0;i<10;i++) { int integer=i+10; ExtIntArray.Append(integer); double dbl=i+20.0; ExtDblArray.Append(dbl); CFoo *ptr=new CFoo(i+30); ExtPtrArray.Append(ptr); } //--- output the array contents string str="Int:"; for(int i=0;i<10;i++) str+=" "+(string)ExtIntArray[i]; Print(str); str="Dbl:"; for(int i=0;i<10;i++) str+=" "+DoubleToString(ExtDblArray[i],1); Print(str); str="Ptr:"; for(int i=0;i<10;i++) str+=" "+(string)ExtPtrArray[i].X(); Print(str); //--- CFoo objects created via new should not be deleted, since they are deleted in the TArrayPtr<CFoo> object destructor }Execution result:
int ObjectsDeleteAll( long chart_id, // chart ID const string prefix, // object name prefix int sub_window=-1, // window index int object_type=-1 // object type for deletion );
Updated documentation.
Working with analytical objects has become even more convenient in
the new version of MetaTrader 5 iOS iOS for iPhone and iPad. Now objects
only appear on the chart of the current symbol and selected timeframes.

Additionally, the new version of the mobile app has better compatibility with iOS 9.
The updated MetaTrader 5 for iOS is now available on the App Store. Working with financial news has become even easier: select news categories to follow and add news items that you like to Favorites.
Another important new option added is trading from a chart
with a single touch (similar to one-click trading). Turn your device
into a horizontal position and open a quick trade panel.

Furthermore, we have added an option for closing positions of Collateral instruments, which allows converting the corresponding assets into the deposit currency.
Update your app to receive the new features in your MetaTrader 5 iOS.








The
Assets are added to the client's Equity and increase Free Margin, thus
increasing the volumes of allowable trade operations on the account.
Thus, it is now possible to open accounts with various margin types.





ulong GetMicrosecondCount();This function can be used to profile program execution and identify "bottlenecks".Fixed errors reported in crash logs.
Updated documentation.
The update is available through the LiveUpdate system.

Tester: Some improvements and bug fixes have been made in the operation of the Strategy Tester. Time spent on intermediate preparatory operations and network latency has been significantly reduced. Testing and optimization are now faster in all operating modes: working with local testing agents, with a farm of agents in the local network and using MQL5 Cloud Network.


Updated documentation.
The update is available through the LiveUpdate system.New update of the MetaTrader 5 platform has been released. It contains the following changes:



Thus, you always can change the number of charts and the list of symbols, the set of launched programs and their input parameters, the terminal settings and Signal subscription.
When performing migration, all data is recorded in the client terminal's log.






MetaTrader 5 Android build 1052
The new version of MetaTrader 5 for Android is now available in Google Play. It features some fixes and improved stability. Analytical objects and messaging system are to be added soon.
The application can be downloaded here: https://download.terminal.free/cdn/mobile/mt5/android?hl=en&utm_source=www.metaquotes.net&hl=en
The update is available through the LiveUpdate system.

Tester agents now can work only in the 64-bit systems. This decision is driven by the need to follow the development of the IT industry. Switching to the new technologies increases computing performance and enables further development of MQL5 Cloud Network.

Changes in the platform components:
int WebRequest (string method, string url,string headers,int timeout, const char &data[], int data_size,char &result[], string &result_headers)This function allows you to explicitly form the contents of an HTTP request header providing more flexible mechanism for interacting with various Web services.
Fixed errors reported in crash logs.
Updated documentation.
The update will be available through the LiveUpdate system.


int CopyTicks( const string symbol_name, // Symbol name MqlTick &ticks_array[], // the array where ticks will be placed uint flags=COPY_TICKS_ALL, // the flag that defines the type of received ticks ulong from=0, // the date starting from which ticks will be received, specified in milliseconds since 01.01.1970 uint count=0 // the number of latest ticks that should be received );Ticks can be requested by the date if the 'from' value is specified, or based on their number using the 'count' value. If none of the parameters are specified, all available ticks are received, but not more than 2000. Ticks can also be requested based on their type using the 'flags' parameter. Available values:
Fixed errors reported in crash logs.
Documentation has been updated.
The update is available through the LiveUpdate system.