//+------------------------------------------------------------------+ //| 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 template (specialize TArray template by the int type) TArray<double> ExtDblArray; // instantiate TArray template (specialize TArray template by the double type) TArrayPtr<CFoo> ExtPtrArray; // instantiate TArrayPtr template (specialize TArrayPtr template 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(i=0;i<10;i++) str+=" "+(string)ExtIntArray[i]; Print(str); str="Dbl:"; for(i=0;i<10;i++) str+=" "+DoubleToString(ExtDblArray[i],1); Print(str); str="Ptr:"; for(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:
MetaTrader 4 Client Terminal build 880
To obtain the password, open the MetaTrader 4 mobile terminal on
your smartphone, go to the OTP section and enter the verification code
to receive the one-time password.
MetaTrader 4 Android |
MetaTrader 4 iPhone |
---|---|
2015.09.14 14:48:18.486 Data Folder: E:\ProgramFiles\MetaTrader 4 2015.09.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.09.14 14:48:18.486 MetaTrader 4 build 872 started (MetaQuotes Software Corp.)
The first web version of the trading platform has been released. All trading and analytical features of a desktop terminal can now be accessed from a web browser. Trading on the web platform is safe, while any transmitted information is securely encrypted. Trading account passwords are encrypted and stored only in the local storage of the browser.
Web trading is already available for testing in the new Trading
section of the MQL5.community site. The interface of the web platform
is similar to the desktop version. The following functions are available
now:
int ObjectsDeleteAll( int chart_id, // chart ID const string prefix, // prefix int sub_window=EMPTY, // chart subwindow ID int object_type=EMPTY // object type );This function removes all graphical objects of the specified type from the specified chart or its subwindow. A special feature is the ability to set a prefix in the names of removed objects. For example, you can remove only the objects having the names beginning from "myobj_".
The update is available through the LiveUpdate system.
int WebRequest( const string method, // HTTP method const string url, // url address const string headers, // Headers int timeout, // timeout const char &data[], // an array of the body of the HTTP message char &result[], // an array with the server response data string &result_headers // Headers of the server response );Error notifications have been modified. If an error occurs, the 'result' array will contain the description of the error.
ulong GetMicrosecondCount();
This function can be used to profile program execution and identify "bottlenecks".Fixed errors reported in crash logs.
The update is available through the LiveUpdate system.