MetaTrader 5 build 1570: улучшение витрины Маркета и расширение шаблонных функций в MQL5

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

24 марта 2017

Terminal

  1. Обновлена витрина магазина приложений MetaTrader Market. Выбирать торговых роботов и технические индикаторы стало удобнее. Мы обновили дизайн и добавили подборки продуктов:

    • На главной странице теперь показываются популярные эксперты, индикаторы, новинки Маркета, а также топ бесплатных приложений.
    • В разделах экспертов, индикаторов и утилит появились подкатегории: сеточные и хеджирующие роботы, трендовые и мультивалютные индикаторы, многое другое.


  2. Исправлено обновление клиентского терминала и работа встроенных покупок в Маркете, Сигналах и Виртуальном хостинге при использовании учетной записи Windows с ограниченными правами.
  3. Исправлена ошибка, в некоторых случаях приводившая к нарушению сортировки истории позиций.
  4. Оптимизировано и исправлено отображение вкладки "Активы".

MQL5

  1. Добавлена поддержка перегрузки шаблонных функций по параметрам. Например, есть шаблонная функция, которая записывает в первый параметр значение второго параметра с помощью явного приведения типов. В языке MQL5 запрещено приведение типа string к типу bool, но мы можем сделать это сами. Создадим перегрузку шаблонной функции:
    //+------------------------------------------------------------------+
    //| Шаблонная функция                                                |
    //+------------------------------------------------------------------+
    template<typename T1,typename T2>
    string Assign(T1 &var1,T2 var2)
      {
       var1=(T1)var2;
       return(__FUNCSIG__);
      }
    //+------------------------------------------------------------------+
    //| Специальная перегрузка для случая bool+string                    |
    //+------------------------------------------------------------------+
    string Assign(bool &var1,string var2)
      {
       var1=(StringCompare(var2,"true",false) || StringToInteger(var2)!=0);
       return(__FUNCSIG__);
      }
    //+------------------------------------------------------------------+
    //| Script program start function                                    |
    //+------------------------------------------------------------------+
    void OnStart()
      {
       int i;
       bool b;
       Print(Assign(i,"test"));
       Print(Assign(b,"test"));
      }
    В результате выполнения кода мы увидим, что для пары int+string была использована шаблонная функция Assign(), а при втором вызове для пары bool+string уже использовалась перегруженная версия.
    string Assign<int,string>(int&,string)
    string Assign(bool&,string)

  2. Добавлена возможность явной специализации шаблонных функций. Для этого перед списком параметров вызова необходимо указать параметры типизации:
    template<typename T>
    T Func() { return (T)0; }
      
      
    void OnInit()
      {
       Func<double>();   // явная специализация шаблонной функции
      }
    Таким образом, специализация происходит не через параметры вызова, а прямым указанием типов.

  3. Оптимизировано отображение пользовательских индикаторов с типом рисования DRAW_ZIGZAG.
  4. В перечисление типов сделок ENUM_DEAL_TYPE добавлены новые значения:

    • DEAL_DIVIDEND — сделка начисления дивиденда.
    • DEAL_DIVIDEND_FRANKED — сделка начисления франкированного дивиденда (не облагается налогом, налог за клиента оплачивает компания).
    • DEAL_TAX — сделка удержания налога.

  5. Исправлено отображение пользовательских индикаторов с типом рисования DRAW_FILLING. При совпадении координат верхней и нижней линии теперь рисуется тонкая линия.
  6. Исправлено вычисление координат объекта "Графическая метка" (Bitmap Label) при выставлении параметра CHART_SHOW в состояние false. Этот параметр устанавливается функцией ChartSetInteger и позволяет скрыть все элементы ценового графика для создания собственного интерфейса программы.
  7. Исправлена ошибка перекодировки 24-битных изображений при помещении их в ресурсы MQL5-приложения.
  8. Исправлена ошибка вывода на печать структур функцией ArrayPrint.
  9. Обновлены стандартные библиотеки MQL5.

MetaEditor

  1. Добавлен перевод пользовательского интерфейса на малайский язык.

Signals

  1. Исправлено открытие страницы сигнала в терминале при переходе с сайта MQL5.community в случае отсутствия подключения торговым счетом.

Tester

  1. Исправлены ошибки при работе функции CopyTicks в тестере стратегий.
  2. Исправлена сортировка сделок типа "Снятие" (Withdrawal) при формировании отчета тестирования.
  3. Исправлена модификация отложенных ордеров.

Hosting

  1. Исправлено отображение мастера виртуального хостинга на экранах сверхвысокого разрешения (4К).

Обновлена документация.