Новая версия платформы MetaTrader 5 build 3980: Улучшения и исправления

MetaQuotes  

В четверг 21 сентября 2023 года будет выпущена обновленная версия MetaTrader 5. В ней мы внесли ряд исправлений и улучшений в работу платформы.

Новая версия платформы MetaTrader 5 build 3980: Улучшения и исправления

MetaTrader 5 Client Terminal build 3980

  1. Terminal: Улучшен новый торговый отчет. Исправлено отображение итогового значения свопов, а также графика прибыли по символам.
  2. Terminal: Оптимизированы страницы пополнения и снятия средств со счета. Подробнее о новой интеграции платформы с платежными системами читайте в предыдущей новости о билде 3950.
  3. Terminal: Оптимизирован пересчет финансовых операций во всей платформе, включая тестер стратегий. Теперь показатели прибыли, маржи и многие другие параметры рассчитываются быстрее.
  4. Terminal: Обновлены переводы пользовательского интерфейса.
  5. MQL5: Добавлены методы Conjugate для типов complex, vector<complex> и matrix<complex>. Они выполняют сопряжение для комплексных чисел.
    //+------------------------------------------------------------------+
    //| Script program start function                                    |
    //+------------------------------------------------------------------+
    void OnStart()
      {
       complex a=1+1i;
       complex b=a.Conjugate();
       Print(a, "  ", b);
       /*
       (1,1)  (1,-1)
       */
    
       vectorc va= {0.1+0.1i, 0.2+0.2i, 0.3+0.3i};
       vectorc vb=va.Conjugate();
       Print(va, "  ", vb);
       /*
       [(0.1,0.1),(0.2,0.2),(0.3,0.3)]  [(0.1,-0.1),(0.2,-0.2),(0.3,-0.3)]
       */
    
       matrixc ma(2, 3);
       ma.Row(va, 0);
       ma.Row(vb, 1);
       matrixc mb=ma.Conjugate();
       Print(ma);
       Print(mb);
       /*
       [[(0.1,0.1),(0.2,0.2),(0.3,0.3)]
        [(0.1,-0.1),(0.2,-0.2),(0.3,-0.3)]]
    
       [[(0.1,-0.1),(0.2,-0.2),(0.3,-0.3)]
        [(0.1,0.1),(0.2,0.2),(0.3,0.3)]]
       */
       
       ma=mb.Transpose().Conjugate();
       Print(ma);
       /*
       [[(0.1,0.1),(0.1,-0.1)]
        [(0.2,0.2),(0.2,-0.2)]
        [(0.3,0.3),(0.3,-0.3)]]
       */
      }
  6. MQL5: Добавлена обработка выхода ONNX-модели типа Sequence of maps.

    Для моделей ONNX, которые в выходном слое отдают последовательности Map (ONNX_TYPE_SEQUENCE of ONNX_TYPE_MAP), в качестве выходного параметра следует передавать динамический или фиксированный массив структур. Первые два поля этой структуры должны соответствовать типам ключей и значений ONNX_TYPE_MAP и являться фиксированными или динамическими массивами.

    Рассмотрим модель iris.onnx, созданную следующим скриптом на Python:
    from sys import argv
    data_path=argv[0]
    last_index=data_path.rfind("\\")+1
    data_path=data_path[0:last_index]
    
    from sklearn.datasets import load_iris
    iris_dataset = load_iris()
    from sklearn.model_selection import train_test_split
    X_train, X_test, y_train, y_test = train_test_split(iris_dataset['data'], iris_dataset['target'], random_state=0)
    from sklearn.neighbors import KNeighborsClassifier
    knn = KNeighborsClassifier(n_neighbors=1)
    knn.fit(X_train, y_train)
    
    #  Convert into ONNX format
    from skl2onnx import convert_sklearn
    from skl2onnx.common.data_types import FloatTensorType
    initial_type = [('float_input', FloatTensorType([None, 4]))]
    onx = convert_sklearn(knn, initial_types=initial_type)
    path = data_path+"iris.onnx"
    with open(path, "wb") as f:
        f.write(onx.SerializeToString())
    Откройте созданный onnx-файл в MetaEditor:


    Просмотр ONNX-модели в MetaEditor


    В качестве выхода "output_probability" отдается последовательность из Map, ключ которой имеет тип INT64 (что соответствует типу long языка MQL5) и значение типа float. Для получения данных с этого выхода объявим следующую структуру:
    struct MyMap
      {
       long              key[];
       float             value[];
      };
    Здесь мы использовали динамические массивы с соответствующими типами. В данном случае можно использовать фиксированные массивы, поскольку для данной модели Map всегда содержит 3 пары ключ+значение.

    Поскольку возвращается последовательность из Map, в качестве параметра для приема данных с выхода output_probability следует передать массив таких структур — динамический или фиксированный, исходя из свойств конкретной модели. Например:
    //--- объявим массив для приема данных с выходного слоя output_probability
    MyMap output_probability[];
    
    ...
    
    //--- выполнение модели
    OnnxRun(model,ONNX_DEBUG_LOGS,float_input,output_label,output_probability);
  7. MetaEditor: Исправлено отображение типа выходных параметров в просмотрщике моделей ONNX.

MetaTrader 5 Web Terminal build 3980

  1. Добавлен раздел связи с брокером в основное меню.
  2. Добавлена обработка ошибки авторизации при помощи SSL-сертификата. Этот вид авторизации не поддерживается в веб-терминале, вместо него может быть включена авторизация при помощи одноразовых паролей.
  3. Исправлена ссылка на скачивание десктопной версии платформы в основном меню.
  4. Изменен диалог управления счетами. Если у брокера недоступно открытие демонстрационных или реальных счетов, соответствующий пункт меню скрывается.


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

fxsaber  

MetaQuotes:

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

Наверное, были какие-то тестовые советники, что показали ускорение. Возможно их предоставить?
Renat Fatkhullin  
fxsaber #:
Наверное, были какие-то тестовые советники, что показали ускорение. Возможно их предоставить?

Ускорили с помощью AVX расчет самой важной операции NormalizeDouble на 25%, которая используется массово во всех операциях пересчетов и генерации истории.

Поэтому ускорение размазано по всей системе, включая тестер.

Прямых сравнений не делали пока - очень заняты разработкой.

fxsaber  
Renat Fatkhullin #:

Ускорили с помощью AVX расчет самой важной операции NormalizeDouble на 25%, которая используется массово во всех операциях пересчетов и генерации истории.

Звучит очень хорошо, но и очень страшно: в случае, если старый NormalizeDouble будет иногда не совпадать с новым NormalizeDouble. Особенно, для x64Regular и AVX.

Renat Fatkhullin  
fxsaber #:

Звучит очень хорошо, но и очень страшно: в случае, если старый NormalizeDouble будет иногда не совпадать с новым NormalizeDouble. Особенно, для x64Regular и AVX.

Совпадает, не беспокойтесь.
WOW Machine  
Вылетает MT5 для MacOS когда открываю маркет
Renat Fatkhullin  
WOW Machine #:
Вылетает MT5 для MacOS когда открываю маркет

Приведите конфигурацию из стартового баннера в логах терминала, пожалуйста.

Andrei Iakovlev  
Renat Fatkhullin #:

Ускорили с помощью AVX расчет самой важной операции NormalizeDouble на 25%, которая используется массово во всех операциях пересчетов и генерации истории.

Поэтому ускорение размазано по всей системе, включая тестер.

Прямых сравнений не делали пока - очень заняты разработкой.

Скажите, пожалуйста, в МТ5 собираются добавлять новые типы периодов графиков, которые станут базовым функционалом? Посмотрите, какое разнообразие графиков предлагает Sierra Chart:

При этом можно устанавливать любое значение периода:

МТ5 со своим набором временных интервалов выглядит примитивной платформой в этом плане, оставшейся в 2000-х годах. МТ5 умеет ведь работать с тиками...

Dmitiry Ananiev  
С помощью кастомных символов можно сделать любой из перечисленных графиков. Так что про отсталость это больше к вам, чем к платформе. Учитесь программировать. 
Andrei Iakovlev  
Dmitiry Ananiev #:
С помощью кастомных символов можно сделать любой из перечисленных графиков. Так что про отсталость это больше к вам, чем к платформе. Учитесь программировать. 

Я знаю, что это можно. Я написал "станут базовым функционалом", т.е. новые типы графиков будут доступны по умолчанию, взял и выбрал новый период. Учитесь понимать то, что написано.

А комментарий про кастомные символы я ожидал увидеть.

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