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

  1. Terminál: Inaktív (amelyhez jelenleg nem kapcsolódunk) számla jelszóváltoztatása javítva
Jelszóváltoztatás inaktív számlán

Jelszóváltoztatás inaktív számlán

  1. Terminál: optimalizált használat és memória felszabadítás nagy mennyiségű historikus adat alkalmazásakor
  2. Terminál: javított és optimalizált működés nagy számú hírkategória esetén.
  3. Szignálok: javítva a leiratkozás a Navigátor helyzetérzékeny menüjéből
Leiratkozás szignálról

Leiratkozás szignálról

  1. 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
  1. MQL4: Javítva az ArrayCopy függvény memória reallokációja, amely néha MQL4 programok elszállását okozhatta
  2. 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
  3. Teszter: Javítva a tesztelés, amennyiben a kereskedési szerverrel megszakadt a kapcsolat
  4. MetaEditor: Type casting esetén függvény név meghatározása a MetaAssist-ban
  5. MetaEditor: Nagy fájlok megnyitása.
  6. 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.
  7. Javított hibák a fórumbejegyzések és hibanaplók alapján.

Az eredeti, angol nyelvű bejelentést itt találod meg.