MetaTrader 4 build 1010: Расширение возможностей MQL4

Что нового в MetaTrader 4?

18 августа 2016

Terminal

  1. Исправлена ошибка, приводившая к невозможности выполнения MQL4-программ в терминалах при работе в 32-х разрядной версии Windows 10, build 1607.
  2. Исправлены ошибки, в некоторых случаях приводившие к некорректному отображению кнопок поиска и чата.
  3. Исправлена ошибка, в некоторых случаях приводившая к дублированию приветственных писем, получаемых в терминале при открытии демо-счетов.

MQL4

  1. Добавлены указатели 'void *', что позволит создавать абстрактные коллекции объектов. В переменную этого типа можно сохранить указатель на объект любого класса. Для обратного преобразования рекомендуется использовать оператор dynamic_cast<имя класса *>(указатель void *). Если приведение невозможно, результатом будет NULL.
    class CFoo { };
    class CBar { };
    //+------------------------------------------------------------------+
    //| Script program start function                                    |
    //+------------------------------------------------------------------+
    void OnStart()
      {
       void *vptr[2];
       vptr[0]=new CFoo();
       vptr[1]=new CBar();
    //---
       for(int i=0;i<ArraySize(vptr);i++)
         {
          if(dynamic_cast<CFoo *>(vptr[i])!=NULL)
             Print("CFoo * object at index ",i);
          if(dynamic_cast<CBar *>(vptr[i])!=NULL)
             Print("CBar * object at index ",i);
         }
       CFoo *fptr=vptr[1];  // выдаст ошибку приведения указателей, vptr[1] не является объектом CFoo
      }
    //+------------------------------------------------------------------+

  2. Добавлена поддержка оператора [ ] для строки, что позволит получать символ из строки по индексу. Если указанный индекс выходит за пределы строки, результатом будет 0.
    string text="Hello";
    ushort symb=text[0];  // вернет код символа 'H'

  3. Ускорена работа функций копирования исторических и тиковых данных CopyXXX.
  4. Исправлена ошибка массового удаления графических объектов по префиксу при помощи функции ObjectDeleteAll. Ранее после выполнения этой функции нарушался порядок отрисовки оставшихся объектов.
  5. Исправлена ошибка, в некоторых случаях приводившая к нарушению порядка отображения графических объектов при смене таймфрейма.

Hosting

  1. В синхронизации терминала с виртуальным сервером теперь не участвуют графики без экспертов, даже если на них запущены пользовательские индикаторы. Для миграции отдельно работающего пользовательского индикатора запустите на его графике "пустого" эксперта, не выполняющего никаких действий. Его можно легко сгенерировать через Мастер MQL4 в MetaEditor, выбрав пункт "Советник: шаблон". Это гарантирует, что миграция пользовательских индикаторов производится осознанно.
  2. Теперь можно синхронизировать эксперты и пользовательские индикаторы, содержащие в своем имени нелатинские символы (например, кириллицу или иероглифы).

Внесены исправления по крешлогам.