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

 

В пятницу 15 апреля 2022 года будет выпущена обновленная версия платформы MetaTrader 5.

В новой версии мы добавили множество команд для массового закрытия позиции и снятия отложенных ордеров. Теперь в случае необходимости эти действия можно выполнить всего в пару кликов мыши.

Также мы расширили возможности языка MQL5. В нем появились новые функции для матриц и векторов, а также встроенные методы для массивов и строк.

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

Помимо этого, мы улучшили встроенные чаты. Теперь в них можно цитировать сообщения собеседника, создавать комбинированные сообщения из текста, картинок и вложений.

Еще это обновление включает множество исправлений и улучшений в процессе покупки MQL5-сервисов, а также оптимизацию графической системы терминала.

Еще это обновление включает множество исправлений и улучшений в процессе покупки MQL5-сервисов, а также оптимизацию графической системы терминала.

Подробнее об этих и других изменениях в новой версии платформы MetaTrader 5 читайте ниже.


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

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


    Массовое закрытие позиций и удаление ордеров


    В меню всегда доступны команды:

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

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

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

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

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

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

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


    Функция ответа в чате


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

  5. Terminal: Исправлены ошибки при покупке MQL5-сервисов:

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

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

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

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

    На данный момент доступно три метода:

    • 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

  10. MQL5: Идет работа по добавлению встроенных методов для строк.

    На данный момент доступны следующие методы:

    • 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
    • MQL5: Добавлено значение SYMBOL_SUBSCRIPTION_DELAY в перечисление ENUM_SYMBOL_INFO_INTEGER — размер задержки у котировок, передаваемых по символу.

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

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

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

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

    • MQL5: Добавлены новые свойства в перечисление 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 — начисление отсутствует.

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

    Обновление будет доступно через систему Live Update.

     

    Скажите пожалуйста, вот это исправлено?

    Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

    Ошибки, баги, вопросы

    Alexey Viktorov, 2022.03.29 20:50

    А что за ошибки сыплет МТ5

    2022.03.29 21:47:46.036 Terminal        MetaTrader 5 x64 build 3231 started for MetaQuotes Software Corp.
    2022.03.29 21:47:46.037 Terminal        Windows 7 Service Pack 1 build 7601, 4 x AMD FX-4170 Quad-Core, 9 / 11 Gb memory, 5 / 465 Gb disk, admin, GMT+3
    2022.03.29 21:47:46.037 Terminal        D:\MetaTrader 5\Hadge MT5
    2022.03.29 21:47:47.668 Network '1307275': authorized on AMPGlobalEU-Demo through Main Access Server NEW (ping: 159.98 ms, build 3091)
    2022.03.29 21:47:47.668 Network '1307275': previous successful authorization performed from 94.25.169.90 on 2022.03.29 18:47:15
    2022.03.29 21:47:47.887 Network '1307275': terminal synchronized with AMP Global Ltd.: 5 positions, 0 orders, 335 symbols, 0 spreads
    2022.03.29 21:47:47.887 Network '1307275': trading has been enabled - netting mode
    2022.03.29 21:47:56.443 GDI Cache       object creation error [0]
    2022.03.29 21:47:56.554 GDI Cache       object creation error [0]
    2022.03.29 21:47:56.587 GDI Cache       object creation error [0]
    2022.03.29 21:47:56.753 GDI Cache       object creation error [0]
    2022.03.29 21:47:56.800 GDI Cache       object creation error [0]
    

     
    Предложение по OnTimer. Сейчас при первом запуске индикатора, отрисовка происходит через время, указанное в EventSetTimer. Хотелось бы, что бы отрисовка шла сразу.
     
    Rorschach #:
    Предложение по OnTimer. Сейчас при первом запуске индикатора, отрисовка происходит через время, указанное в EventSetTimer. Хотелось бы, что бы отрисовка шла сразу.

    при необходимости решаемо на прикладном уровне, поэтому в системе этой "фиче" делать нечего. 

    bool firstDraw;

    int OnInit() {

       /// some initialization here

       firstDraw=false;

       return INIT_SUCCESSFUL;

    }

    void MyRedraw() {

       firstDraw=true;

       // draw my chart

    }

    void OnTimer() {

       MyRedraw(); // always redraw by timer

    }

    void OnChartEvent(...) {

      if (!firstDraw) MyRedraw();  // redraw on first event

    }

    void OnTick() {

      if (!firstDraw) MyRedraw();  // redraw on first event

    }

    иначе сильно преждевременный вызов OnTimer поломает многое. 

     
    Rorschach #:
    Предложение по OnTimer. Сейчас при первом запуске индикатора, отрисовка происходит через время, указанное в EventSetTimer. Хотелось бы, что бы отрисовка шла сразу.
    int OnInit() {
       // some initialization here
    
       OnTimer();
       return INIT_SUCCEEDED;
    }
    
    void OnTimer() {
       // CODE
    }
     
    Vitaly Muzichenko #:

    в OnInit не всегда правильно вызывать отрисовку. 

    Даже это вообще неправильно :-) У тебя половины данных ещё нет. Они прилетят только когда OnInit вернёт INIT_SUCCEEDED (кстати всегда бесит эта константа - он длинная, звучит на уровне "суицидед", и почему не просто и понятно INIT_OK ??)

    Поэтому непосредственный вызов OnTimer из OnInit для отрисовки не корректен

     
    Maxim Kuznetsov #:

    в OnInit не всегда правильно вызывать отрисовку. 

    Даже это вообще неправильно :-) У тебя половины данных ещё нет. Они прилетят только когда OnInit вернёт INIT_SUCCEEDED (кстати всегда бесит эта константа - он длинная, звучит на уровне "суицидед", и почему не просто и понятно INIT_OK ??)

    Поэтому непосредственный вызов OnTimer из OnInit для отрисовки не корректен

    Корректное и рабочее решение

     
    Vitaly Muzichenko #:

    Способ красивый, но в ините индикаторные буферы не доступны.

     

    MetaQuotes:

    MQL5: Добавлены новые функции для работы с матрицами и векторами:

    • CorrCoef  — рассчитывает коэффициент корреляции матрицы или вектора
    • Correlate — рассчитывает кросс-корреляцию двух векторов

    Какой используется расчёт корреляции?
    Спирмен или Пирсон ?

     
    Roman #:

    Какой используется расчёт корреляции?
    Спирмен или Пирсон ?

    Пирсон

     

    Синий индикатор строиться от красного. В свойствах наследовать шкалу отключено. Но синий индикатор обрезается сверху, будто наследовать шкалу включено.

    Причина обращения: