MetaTrader 5 build 3260: Массовые операции, функции матриц и векторов и улучшения в чате

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

15 апреля 2022

Terminal

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

    В контекстном меню раздела торговли появился новый пункт — "Массовые операции". Список доступных команд формируется в нем интеллектуально, в зависимости от выбранной операции и типа вашего счета.



    В меню всегда доступны команды:
    • Закрытие всех позиций. Для хеджинговых счетов система в первую очередь пытается закрыть позиции встречными, и уже оставшиеся позиции закрывает по обычной процедуре.
    • Закрытие всех прибыльных и всех убыточных позиций
    • Удаление всех отложенных ордеров
    • Удаление всех отложенных ордеров отдельно по типам: Limit, Stop, Stop Limit

    Если выбрать позицию, в меню появляются дополнительные команды:

    • Закрытие всех позиций по тому же символу
    • Закрытие всех позиций в том же направлении (для хеджинговых счетов)
    • Закрытие встречных позиций по тому же символу (для хеджинговых счетов)
    • Разворот позиций (для неттинговых счетов)

    Если выбрать отложенный ордер, в меню появляются дополнительные команды:

    • Удаление всех отложенных ордеров по тому же символу
    • Удаление всех отложенных ордеров того же типа по тому же символу

    Для работы этих команд пользователь должен разрешить торговлю одним кликом в настройках платформы: Сервис \ Настройки \ Торговля.
  2. Расширены функции встроенных чатов:
    • Добавлена возможность отвечать на сообщение. Текст исходного сообщения будет включаться в ответ в виде цитаты.
    • Добавлена возможность создавать сообщения с разными типами содержимого: изображения с текстом, текст с вложениями и т.д.
    • Исправлено отображение разделителя прочитанных и непрочитанных сообщений.
    • Исправлены различные ошибки и повышена стабильность работы.



  3. Оптимизирована и значительно ускорена работа графической системы терминала. На отображение интерфейса будет тратиться меньше ресурсов.
  4. Исправлен расчет дневного изменения цены для фьючерсов. Если брокер транслирует клиринговую цену, то расчет будет осуществляться от нее.
    ((Last - Клиринговая цена)/Клиринговая цена)*100
    Полное описание расчета для всех видов инструментов доступно в документации.

  5. Исправлены ошибки при покупке MQL5-сервисов:
    • В некоторых случаях платежные системы могли выводить некорректные сообщения об ошибках при удачных операциях.
    • На промежуточных этапах аренды продукта в Маркете на странице могла отображаться некорректная цена.

  6. Исправлена работа кнопки "Запуск" на странице купленного/скачанного продукта в Маркете. Теперь она корректно запускает приложение на первом из открытых графиков.
  7. Исправлен учет некоторых типов сделок при формировании истории позиций.

MQL5

  1. Добавлены новые функции для работы с матрицами и векторами:
    • Median — возвращает медиану элементов матрицы или вектора
    • Quantile — возвращает q-й квантиль элементов матрицы/вектора или элементов вдоль указанной оси матрицы
    • Percentile — возвращает q-й перцентиль элементов матрицы/вектора или элементов вдоль указанной оси матрицы
    • Std — рассчитывает стандартное отклонение элементов матрицы или вектора
    • Var — рассчитывает дисперсию элементов матрицы или вектора
    • CorrCoef — рассчитывает коэффициент корреляции матрицы или вектора
    • Correlate — рассчитывает кросс-корреляцию двух векторов
    • Convolve — возвращает дискретную линейную свертку двух векторов
    • Cov — вычисляет ковариационную матрицу

  2. Идет работа по добавлению встроенных методов для числовых массивов. Это повысит удобство написания кода, сделает его более компактным, а также улучшит совместимость с другими языками.

    На данный момент доступно три метода:
    • ArgSort — сортирует массив по заданному измерению, по умолчанию — по последнему (axis=-1).
    • Range — возвращает число элементов в указанном измерении массива. Аналог ArrayRange.
    • Size — возвращает количество элементов массива. Аналог ArraySize.

    Пример:
    void OnStart()
      {
       int arr[4][5]=
         {
            {22, 34, 11, 20,  1},
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
            {10, 36,  2, 12,  5},
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
            {33, 37, 25, 13,  4},
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
            {14,  9, 26, 21, 59}
         };
       ulong indexes[4][5];
    //--- Отсортируем массив
       arr.ArgSort(indexes,-1,0);
       Print("indexes");  
       ArrayPrint(indexes);
      }
    
    // Результат в журнале:
    // indexes
    //     [,0][,1][,2][,3][,4]
    // [0,]   4   2   3   0   1
    // [1,]   2   4   0   3   1
    // [2,]   4   3   2   0   1
    // [3,]   1   0   3   2   4

  3. Идет работа по добавлению встроенных методов для строк.
    На данный момент доступны следующие методы:
    • BufferSize — возвращает размер буфера, распределенного для строки.
    • Compare — сравнивает между собой две строки и возвращает результат сравнения в виде целого числа.
    • Length — возвращает число символов в строке.
    • Find — ищет подстроку в строке.
    • Upper — переводит строку в верхний регистр.
    • Lower — переводит строку в нижний регистр.
    • Replace — производит замену подстроки.
    • Reserve — резервирует буфер для строки.

    Все методы работают аналогично строковым функциям.

    Пример:
    void OnStart()
      {
       string test="some string";
       PrintFormat("String length is %d",test.Length());
      }
    
    // Результат в журнале:
    // String length is 11
  4. Добавлено значение SYMBOL_SUBSCRIPTION_DELAY в перечисление ENUM_SYMBOL_INFO_INTEGER — размер задержки у котировок, передаваемых по символу.

    Используется только для инструментов, работающих по подписке, как правило при трансляции данных в бесплатном тестовом режиме.

    Свойство можно запрашивать только для символов, выбранных в Обзоре рынка. В ином случае вы получите ошибку ERR_MARKET_NOT_SELECTED (4302).

  5. Добавлено свойство ACCOUNT_HEDGE_ALLOWED в перечисление ENUM_ACCOUNT_INFO_INTEGER — разрешение на открытие встречных позиций и отложенных ордеров. Используется только для хеджинговых счетов, позволяя реализовать требования некоторых регуляторов, когда на счете запрещается иметь встречные позиции, но разрешается иметь несколько позиций по одному символу в одном направлении.

    Если эта опция отключена, на счетах запрещается одновременно иметь разнонаправленные позиции и ордера по одному и тому же инструменту. Например, если на счете имеется позиция Buy, то пользователь не может открыть позицию Sell или выставить отложенный ордер на продажу. При попытке сделать это пользователю будет выдаваться ошибка TRADE_RETCODE_HEDGE_PROHIBITED.

  6. Добавлены новые свойства в перечисление ENUM_SYMBOL_INFO_DOUBLE:
    • SYMBOL_SWAP_SUNDAY
    • SYMBOL_SWAP_MONDAY
    • SYMBOL_SWAP_TUESDAY
    • SYMBOL_SWAP_WEDNESDAY
    • SYMBOL_SWAP_THURSDAY
    • SYMBOL_SWAP_FRIDAY
    • SYMBOL_SWAP_SATURDAY

    Они позволяют получить коэффициент начисления свопов для каждого дня недели. 1 — одиночное начисление свопов, 3 — тройное, 0 — начисление отсутствует.

  7. Исправлена ошибка в работе функций CopyTicks и CopyTicksRange, приводившая к отдаче устаревших данных при переходе через полночь. Ошибка возникала в случаях, когда по инструменту не поступали тики.
  8. Исправления по крешлогам.