2015. október 22-én a MetaQuotes kiadta a 900-as build verziót. A változások listáját olvashatjátok ebben a bejegyzésben.
Változások a 900-as build változatban
- Terminál: Inaktív (amelyhez jelenleg nem kapcsolódunk) számla jelszóváltoztatása javítva
- Terminál: optimalizált használat és memória felszabadítás nagy mennyiségű historikus adat alkalmazásakor
- Terminál: javított és optimalizált működés nagy számú hírkategória esetén.
- Szignálok: javítva a leiratkozás a Navigátor helyzetérzékeny menüjéből
- MQL4: C++-szerű paraméterezhető osztályok létrehozása osztály sablonok segítségével. Ez lehetővé teszi a még nagyobb absztrakciót és ugyanannak a kódnak a felhasználását különböző osztályokban ugyanazon módon. Példa a használatra:
//+------------------------------------------------------------------+ //| 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 } |
Végeredmény:
TemplTest EURUSD,M1: Ptr: 30 31 32 33 34 35 36 37 38 39 TemplTest EURUSD,M1: Dbl: 20.0 21.0 22.0 23.0 24.0 25.0 26.0 27.0 28.0 29.0 TemplTest EURUSD,M1: Int: 10 11 12 13 14 15 16 17 18 19
- MQL4: Javítva az ArrayCopy függvény memória reallokációja, amely néha MQL4 programok elszállását okozhatta
- Teszter: Javítva a hiba, mely indikátorok tesztelése során a globálisan deklarált változók nullázódását okozta
- Teszter: Javítva a tesztelés, amennyiben a kereskedési szerverrel megszakadt a kapcsolat
- MetaEditor: Type casting esetén függvény név meghatározása a MetaAssist-ban
- MetaEditor: Nagy fájlok megnyitása.
- MetaEditor: F gyorsbillentyű hozzáadva a keresés funkció gyors elérése érdekében a Code Base fülről; további tippek a státuszsorban a kóddal való munkához: tabulálás növelése/csökkentése, navigáció, kisbetű/nagybetű, stb.
- Javított hibák a fórumbejegyzések és hibanaplók alapján.
Az eredeti, angol nyelvű bejelentést itt találod meg.
Hagyj üzenetet