Новая версия платформы MetaTrader 5 build 4730: расширение поддержки OpenBLAS и общая оптимизация работы

 

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

В этой версии в MQL5 появилась поддержка еще нескольких новых функций библиотеки OpenBLAS, а также функций TransposeConjugate и CompareEqual. Они дадут еще больше возможностей для работы с матрицами и векторами. Помимо этого, мы исправили совместимость пакета интеграции с Python. Теперь он работает с любыми версиями Python вплоть до 3.13.

Также мы оптимизировали и ускорили работу платформы с ценовыми данными.


Бета-версия платформы MetaTrader 5 build 4695: расширение поддержки OpenBLAS и общая оптимизация работы

MetaTrader 5 Client Terminal

  1. Terminal: Изменен расчет стоимости позиций, ордеров и сделок. Теперь она отображается в валюте депозита счета, а не в базовой валюте торгового инструмента:


    Стоимость позиций, ордеров и сделок теперь отображается в валюте депозита счета

  2. Terminal: Добавлено поле для ввода даты рождения при открытии демо-счетов.



    Добавлено поле для ввода даты рождения при открытии демо-счетов


  3. Terminal: Исправлено масштабирование индикаторов, отображаемых в подокне графика. Для некоторых осцилляторов минимальное и максимальное значение шкалы могло выбираться некорректно.
  4. Terminal: Оптимизирована и ускорена распаковка тиковых данных и ценовой истории, что увеличит скорость открытия графиков.
  5. Terminal: Исправлено редактирование цвета текста в окне создания письма внутренней почты.
  6. Terminal: Обновлены переводы пользовательского интерфейса.
  7. MQL5: Добавлены новые методы OpenBLAS:

    • EigenSolver2 — вычисление обобщенных собственных значений и собственных векторов для пары обычных квадратных матриц (lapack-функция GGEV).
    • EigenSolverX — вычисление собственных значений и собственных векторов обычной квадратной матрицы в режиме эксперта (Expert mode), то есть с возможностью влиять на алгоритм расчета и возможностью получить сопутствующие расчетные данные (lapack-функция GEEVX).
    • EigenSolver2X — вычисление обобщенных собственных значений и собственных векторов для пары обычных квадратных матриц в режиме эксперта (Expert mode), то есть с возможностью влиять на алгоритм расчета и возможностью получить сопутствующие расчетные данные (lapack-функция GGEVX).
    • EigenSolverShur — вычисление собственных значений, верхнетреугольной матрицы в форме Шура и матрицы векторов Шура (lapack-функция GEES).
    • EigenSolver2Shur — вычисление для пары обычных квадратных матриц обобщенных собственных значений, обобщенных собственных векторов, обобщенных форм Шура и левых и правых векторов Шура (lapack-функция GGES).
    • EigenSolver2Blocked — вычисление обобщенных собственных значений и собственных векторов для пары обычных квадратных матриц при помощи блочного алгоритма (lapack-функция GGEV3).
    • EigenSolver2ShurBlocked — вычисление для пары обычных квадратных матриц обобщенных собственных значений, обобщенных собственных векторов, обобщенных форм Шура и левых и правых векторов Шура при помощи блочного алгоритма (lapack-функция GGES3).
    • EigenSymmetricRobust — вычисление собственных значений и собственных векторов симметричной или эрмитовой (комплексно-сопряженной) матрицы при помощи алгоритма Multiple Relatively Robust Representations, MRRR (lapack-функции SYEVR, HEEVR).
    • EigenSymmetricBisect — вычисление собственных значений и собственных векторов симметричной или эрмитовой (комплексно-сопряженной) матрицы при помощи алгоритма bisection (lapack-функции SYEVX, HEEVX).

  8. MQL5: Добавлены новые методы для комплексных матриц:

    • TransposeConjugate — для создания сопряженно-транспонированной матрицы.
      matrix<complex<T>> matrix<complex<T>>::TransposeConjugate(void) const;
      Метод возвращает новую сопряженно-транспонированную матрицу, в которой элементы исходной матрицы транспонированы и приведены к их комплексно сопряженным значениям.

      При ошибке возвращается пустая матрица, для получения кода ошибки используйте функцию GetLastError.

    • CompareEqual — абсолютное сравнение двух матриц.
      int matrix<T>::CompareEqual(const matrix<T>& mat) const
      Возвращаемые значения:

      • -1 — если элемент матрицы A меньше соответствующего элемента матрицы B.
      • 0 — если все элементы матриц A и B идентичны.
      • 1 — если элемент матрицы A больше соответствующего элемента матрицы B.

      Метод также может возвращать ошибки при некорректном состоянии входных данных. Для получения кода ошибки используйте функцию GetLastError.

  9. MQL5: Добавлена поддержка Python вплоть до версии 3.13 для соответствующего пакета интеграции. Для обновления пакета выполните команду:

    pip install --upgrade MetaTrader5

  10. MQL5: Исправлен пропуск первого события Timer. Ошибка возникала, если таймер включался внутри обработчика OnTimer.
  11. MetaEditor: Исправлено вычисление значений для входных переменных при работе под отладчиком. В некоторых случаях вместо значения выводилось сообщение unknown identifier.
  12. Tester: Исправлен поиск необходимых кросс-курсов для конвертации валют при тестировании на биржевых инструментах.

MetaTrader 5 Web Terminal

  1. Добавлена поддержка режима исполнения «По запросу» для ордеров большого объема.
  2. Добавлена поддержка расширенного описания для причины отклонения запроса брокером.
  3. Исправлена форма открытия счетов. Теперь набор запрашиваемых данных соответствует настройкам брокера.
  4. Исправлено определение страны при регистрации демо-счета.
  5. Исправлено выравнивание диалога с предупреждением о включении торговли одним кликом.


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

 
MetaQuotes:

MetaTrader 5 Client Terminal

  1. Terminal: Изменен расчет стоимости позиций, ордеров и сделок. Теперь она отображается в валюте депозита счета, а не в базовой валюте торгового инструмента
Попробовал воспроизвести расчет этого значения. Не получилось, прошу помочь.
double GetPositionValue( void )
{
  const string Symb = PositionGetString(POSITION_SYMBOL);

  // Почему не POSITION_PRICE_OPEN ?
  return(PositionGetDouble(POSITION_VOLUME) * PositionGetDouble(POSITION_PRICE_CURRENT) *
         SymbolInfoDouble(Symb, SYMBOL_TRADE_TICK_VALUE) / SymbolInfoDouble(Symb, SYMBOL_TRADE_TICK_SIZE));
}

void OnTick()
{
  if (PositionGetTicket(0))
    Comment(DoubleToString(GetPositionValue(), 2));
}


Ошибка либо в расчетах Терминала, либо в расчетах TickValue (пробовал Loss/Profit-варианты).


И по какой-то причине в Терминале используется POSITION_PRICE_CURRENT вместо POSITION_PRICE_OPEN. Вроде, это неправильно.

 

На скрине показано, что открыта одна позиция - AUDUSD на EUR-счете.


В таком случае полная ерунда творится во вкладке Активы.

  1. Курс и EUR-Value неизменны, хотя должны пересчитываться. Объем неизменен - правильно.
  2. Откуда берется EUR-строка на скрине?
 
fxsaber #:

На скрине показано, что открыта одна позиция - AUDUSD на EUR-счете.


В таком случае полная ерунда творится во вкладке Активы.

  1. Курс и EUR-Value неизменны, хотя должны пересчитываться. Объем неизменен - правильно.
  2. Откуда берется EUR-строка на скрине?
Это баланс в евро умноженный на плечо.
По мне - это бред разработчиков терминала.
 

Просьба подумать над возможностью добавления в ALT+E-отчет источника торговой истории: торговый счет, одиночный проход, выбранный Сигнал.


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

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

Строка для поиска: Uluchshenie 104.
 

Кому как, а для себя полезным вижу только:

MetaQuotes:
Terminal: Оптимизирована и ускорена распаковка тиковых данных и ценовой истории, что увеличит скорость открытия графиков.
 
JRandomTrader #:

Кому как, а для себя полезным вижу только:

Надо смотреть, как изменилось потребление памяти при вызовах CopyTicks. Если выросло, то это проблема при запросе данных за год-два.

 
void OnStart()
{
}

struct A
{
} // ;

Этот код компилируется без проблем.

  1. Отсутствие в конце "точки с запятой" - нормально?
  2. Пустые структуры теперь разрешены?
 

На пользовательских индикаторах в подокне не получается применить обычные индикаторы (при этом из папки Examples работают)

И верхняя граница почему то от 0 показывает, хотя использовал PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0.);

Версия от 23 ноября

 
После дисконекта сервера сбрасывается буфер индикатора
 

Demo MQ. По прежнему в тестере берется *3 своп 2 раза в неделю

https://www.mql5.com/ru/forum/474452#comment_54821872

3 свопа за вторник-среду и 3 свопа за среду-четверг.


Разве это правильно?

Новая версия платформы MetaTrader 5 build 4620: исправления ошибок в MQL5 и новые методы OpenBLAS - В этом выпуске мы исправили несколько трудноуловимых ошибок MQL5. Исправлена ошибка ручного получения тиковой истории из терминала MetaTrader 5.
Новая версия платформы MetaTrader 5 build 4620: исправления ошибок в MQL5 и новые методы OpenBLAS - В этом выпуске мы исправили несколько трудноуловимых ошибок MQL5. Исправлена ошибка ручного получения тиковой истории из терминала MetaTrader 5.
  • 2024.10.10
  • MetaQuotes
  • www.mql5.com
New MetaTrader 5 Platform build 4585 Performance improvements. а так же задания могут от одного советника быть разной сложности. Почему нельзя оценивать время до окончания работы и раздавать задания другим агентам