//+------------------------------------------------------------------+ //| 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" //+------------------------------------------------------------------+ //| Объявляем шаблонный класс | //+------------------------------------------------------------------+ 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]); } }; //+------------------------------------------------------------------+ //| Шаблонный класс массива указателей, в деструкторе он удаляет | //| объекты, указатели на которые хранились в нем. | //| | //| Обратите внимание на наследование от шаблонного класса TArray | //+------------------------------------------------------------------+ 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]; } }; //+------------------------------------------------------------------+ //| Объявим класс, указатели на его объекты будем хранить в массиве | //+------------------------------------------------------------------+ class CFoo { int m_x; public: CFoo(int x):m_x(x) { } int X(void) const { return(m_x); } }; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ TArray<int> ExtIntArray; // инстанцируем шаблон TArray (специализируем шаблон TArray типом int) TArray<double> ExtDblArray; // инстанцируем шаблон TArray (специализируем шаблон TArray типом double) TArrayPtr<CFoo> ExtPtrArray; // инстанцируем шаблон TArrayPtr (специализируем шаблон TArrayPtr типом CFoo) //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { //--- наполняем массивы данными 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); } //--- выведем содержимое массивов 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); //--- созданные через new объекты CFoo удалять не нужно, они удалятся в деструкторе объекта TArrayPtr<CFoo> }Результат выполнения:
Исправления по крешлогам.
MetaTrader 4 Client Terminal build 880
Для получения этого пароля откройте в своем смартфоне мобильный терминал
MetaTrader 4, пройдите в раздел OTP и введите проверочный код для получения
одноразового пароля.
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.)
Обновление будет доступно через систему LiveUpdate.
Представлена первая версия новой платформы для торговли через веб-интерфейс. С ней вы получите все торговые и аналитические возможности десктопного терминала, просто используя браузер. Работа с веб-платформой безопасна, так как вся передаваемая информация надежно шифруется. Пароли к торговым счетам сохраняются в локальное хранилище браузера в зашифрованном виде.
Для того чтобы попробовать новые возможности, достаточно авторизоваться в
MQL5.community и зайти в новый раздел "Торговля".
Интерфейс веб-платформы аналогичен десктопной версии. На данный момент доступны
основные функции:
int ObjectsDeleteAll( int chart_id, // номер графика const string prefix, // префикс int sub_window=EMPTY, // номер подокна графика int object_type=EMPTY // тип объекта );Данная функция удаляет все графические объекты указанного типа из указанного графика или его подокна. Особенностью является возможность указания префикса в имени удаляемых объектов. Например, можно удалить только те объекты, чье имя начинается с символов "myobj_".
Исправления по крешлогам.
Обновление доступно через систему LiveUpdate.
int WebRequest( const string method, // метод HTTP const string url, // url-адрес const string headers, // заголовки int timeout, // таймаут const char &data[], // массив тела HTTP-сообщения char &result[], // массив с данными ответа сервера string &result_headers // заголовки ответа сервера );Также модифицированы уведомления об ошибках. В случае ошибки использования функции массив result будет содержать описание ошибки.
ulong GetMicrosecondCount();
Данная функция может быть использована для дополнительной профилировки исполнения программы и выявления "узких мест".Исправления по крешлогам.
Обновление доступно через систему LiveUpdate.