Новая версия платформы MetaTrader 5 build 4620: исправления ошибок в MQL5 и новые методы OpenBLAS

 

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

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

Новая версия платформы MetaTrader 5 build 4620: исправления ошибок в MQL5 и новые методы OpenBLAS



MetaTrader 5 Client Terminal 

  1. Terminal: Исправлена ошибка, в результате которой в некоторых случаях запрашивалась неполная тиковая история.
  2. Terminal: Исправлено автодополнение при выборе символов для языков, отличных от английского. Когда пользователь вводит название символа в поле поиска, система начинает автоматически предлагать подходящие варианты. Теперь поиск работает корректно и регистронезависимо для любых локалей.
  3. В документацию MQL5 добавлено описание новых методов OpenBLAS. На данный момент добавлено 15 новых методов для матриц и векторов, работа по наполнению продолжается.
    OpenBLAS — эффективное решение с открытым исходным кодом для высокопроизводительных вычислений, особенно при работе с большими наборами данных.

    Функция Действие

    SingularValueDecompositionDC

    Singular Value Decomposition, алгоритм divide and conquer. Считается наиболее быстрым среди других алгоритмов SVD (lapack-функция GESDD).

    SingularValueDecompositionQR

    Singular Value Decomposition, QR-алгоритм. Считается классическим алгоритмом SVD (lapack-функция GESVD).

    SingularValueDecompositionQRPivot

    Singular Value Decomposition, алгоритм QR with pivoting (lapack-функция GESVDQ).

    SingularValueDecompositionBisect

    Singular Value Decomposition, алгоритм bisection (lapack-функция GESVDX).

    SingularValueDecompositionJacobiHigh

    Singular Value Decomposition, алгоритм Jacobi high level (lapack-функция GEJSV).

    SingularValueDecompositionJacobiLow

    Singular Value Decomposition, алгоритм Jacobi low level (lapack-функция GESVJ). В некоторых случаях вычисляет малые сингулярные значения и их сингулярные векторы гораздо более точно, чем другие подпрограммы SVD.

    SingularValueDecompositionBidiagDC

    Singular Value Decomposition, алгоритм divide and conquer для бидиагональной матрицы (lapack-функция BDSDC).

    SingularValueDecompositionBidiagBisect

    Singular Value Decomposition, алгоритм bisection для бидиагональных матриц (lapack-функция BDSVDX).

    EigenSolver

    Вычисление собственных значений и собственных векторов обычной квадратной матрицы классическим алгоритмом (lapack-функция GEEV).

    EigenSymmetricDC

    Вычисление собственных значений и собственных векторов симметричной или эрмитовой (комплексно-сопряжённой) матрицы при помощи алгоритма divide and conquer (lapack-функции SYEVD, HEEVD).

    SingularSpectrumAnalysisSpectrum

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

    SingularSpectrumAnalysisForecast

    Функция-метод расчета реконструированных и прогнозируемых данных с использованием спектральных компонент входного временного ряда.

    SingularSpectrumAnalysisReconstructComponents

    Функция-метод расчета реконструированных компонент входного временного ряда и их вклады.

    SingularSpectrumAnalysisReconstructSeries

    Функция-метод расчета реконструированного временного ряда с использованием первых component_count компонент.

  4. MQL5: Исправлены ошибки при запуске старых версий исполняемых файлов MQL5-программ (.ex5 файлы), в которых используются методы matrix::CopyRates. Такие ошибки не возникали в файлах, скомпилированных после установки необходимых обновлений.
  5. MQL5: Исправлена проверка типов объектов, разрешенных в union.
  6. MetaTester: Исправлены падения, возникающие в некоторых случаях при деинициализации пользовательских индикаторов.


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

     
    OpenBLAS. Линейная алгебра. На языке Ассемблера сделали?
     
    Просьба исправить.

    Forum on trading, automated trading systems and testing trading strategies

    New MetaTrader 5 Platform build 4585: Performance improvements

    fxsaber, 2024.10.07 15:50

    Is it an error?
    void OnStart()
    {
      const vector Vector = {1, 1, 1};
      
      Print(Vector.CorrCoef(Vector)); // 0
    }
    Должна быть единица.
     

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

    Суть в том, что в локальной сети есть несколько компьютеров, на которых работают агенты, и производительность несколько отличается, а так же задания могут от одного советника быть разной сложности, что приводит к разному времени, необходимому для решения. В итоге, при полной оптимизации имеем процентов 20% времени, когда работает менее 10% агентов, что крайне расточительно.

    Почему нельзя оценивать время до окончания работы и раздавать задания другим агентам?

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

     

    Почему не исправили не правильную оценку стоимости пункта?

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

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

    Aleksey Vyazmikin, 2024.10.08 07:58

    При тестировании советника с галкой "прибыль в пипсах для ускорения расчетов" при работе на инструменте USDJPY и другими 3х знаками после запятой функция SymbolInfoDouble(Symbol(),SYMBOL_TRADE_TICK_VALUE_LOSS) возвращает 100 , а не 1, что явно не верно. Если галку снять, то расчет становится более точным, т.е. возвращаемое значение возле 1.

    Прошу исправить эту оплошность!


     
    Aleksey Vyazmikin #:

    Почему не исправили не правильную оценку стоимости пункта?

    Приоритет решения этой задачи низкий.

     
    fxsaber #:

    Приоритет решения этой задачи низкий.

    Как так, вопрос про деньги с низким приоритетом? Тогда к чему это всё...

     
    Aleksey Vyazmikin #:

    Как так, вопрос про деньги с низким приоритетом? Тогда к чему это всё...

    Чтобы порог входа в программирование/тестирование через МТ5 был выше. Я тоже 4-5 багов тестера (в тиковом режиме) в начале года подробнейшим образом изложил. Ноль реакции.
    Только очень упорные люди будут продолжать лавировать между багами, пытаясь их учесть или компенсировать костылями ... оттого-то форум и становится все скучнее и скучнее... упорных мало или уходят в другие сферы.

    Копипастить пакетики с др. языков видимо важнее - есть о чем отчитаться и/или показать на выставке.

    Зато на базовые вещи (в тестере) с багами которыми все пользуются времени нет. Тестируешь в тестере с багами -> результаты искажены -> в реале эти баги будут "заложены" в стратегию.

     
    Forester #:
    Зато на базовые вещи (в тестере) с багами которыми все пользуются времени нет.

    Как раз думал, что подобные баги конкурентное преимущество для терминала в глазах ДЦ, как и лёгкость генерации тестовых граалей, на что сейчас и упор, видимо...

     
    Forester #:

    Тестируешь в тестере с багами -> результаты искажены -> в реале эти баги будут "заложены" в стратегию.

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

     

    Решил проверить, что с теми старыми багами...
    свопы != *3 при старте теста в среду
    https://www.mql5.com/ru/forum/459334/page26#comment_52341325

    Над этим все-таки поработали.
    Было:

    Запустим тест По всем тикам на EURUSD c 31 мая 2023 (среда) по 2 июня 2023 (пятница). Конец теста в четверг 1 июня  в 23:59
    Сделке открытой в среду должен начислиться в четверг (1 июня 2023) *3 своп.
    Смотрим сделки - начислен одинарный своп.


    Снова запустим в среду на 2 дня: с 31мая (среда) до 3июня  (конец теста в пятницу 2 июня  в 23:59)

    Стало правильно:
    31 мая 2023 (среда) по 2 июня 2023 (пятница) => 3 свопа, это правильно
    и
    2 дня: с 31мая (среда) до 3июня  (конец теста в пятницу 2 июня  в 23:59) => 4 свопа, это правильно.

    Т.е. вместо 1 свопа стал добавляться 3-й своп. Судя по всему разработчики тестирование того, что получилось закончили. А получилось плохо!

    Смотрим следующий пример. Было:

    Проверим другие даты запуска.
    с 30мая (вторник) до 2 июня (конец теста в четверг 1 июня  в 23:54)


    Появился 1 своп за вторник-среду и *3 свопа за среду-четверг. Все правильно - 4 свопа.Т.е. если начало теста не в среду, то *3 своп считается правильно.

    Стало:


    3 свопа за вторник-среду и 3 свопа за среду-четверг.
    Т.е. новый алгоритм начисления свопов добавили, а старый не исправили.
    Другие дни добавляют по 1 свопу.

    Проходит неделя и все то же самое... 3 свопа за вторник-среду и 3 свопа за среду-четверг.
    Тест с 25 мая по 2 июня,

    своп=9 (должно быть 7), а если добавить еще 2 дня, то добавляется еще 6 свопов (с 9 до 15):

    Тест с 23 мая по 2 июня.

    Интересно, когда разаработчики "исправили" этот баг? Если сами не могут по нормальному тестировать - хотя бы отправляли в ЛС сообщение, обнаружившим баг, а не делали все в тихую... 
    Раньше когда был сервис-дек - сообщения о исправлении были. И можно было проверить - действительно ли исправили, или напортачили еще больше, как в этом случае.

    Странно, что никто из пользователей тестера не смотрит, что там начисляют... может оно уже полгода так...