ONNX в MQL5

 

Отдельной ветки по ONNX пока не было. Поскольку разработчики обещали вскоре уделить особое внимание ему, стоит завести ветку.

ONNX интересует не только для торговли напрямую (предсказания цен и пр.)

Я пока не изучил все материалы, их много. Начал с практики. Так что, если что-то упустил, не обессудьте.

Первое предложение. Для входов и выходов в ИИ-моделях используются разные плавающие и целочисленные значения. И если vector, vectorf, matrix и matrixf в MQL5 имеются, то vectorl (long) отсутствует. А long часто применяется. Может быть, стоит добавить?

Работать с матрицами и векторами оказалось очень удобно. Они полезны и вне МО, как замена массивам. Можно даже размахнуться, и реализовать для большинства типов. А если не хочется плодить matrix* и vector*, пойдёт и matrix<тип>.

Документация по MQL5: Типы матриц и векторов / Методы матриц и векторов
Документация по MQL5: Типы матриц и векторов / Методы матриц и векторов
  • www.mql5.com
matrix и vector — это специальные типы данных в MQL5, предназначенные для выполнения операций из линейной алгебры. Существуют следующие типы данных...
 
Я не стал дублировать здесь сообщения о проблемах, сообщённых в "Новая версия платформы MetaTrader 5 build 5572: Улучшения в ONNX и отображении графиков". Но, возможно, здесь стоит не только обсуждать функционал, но и сообщать об ошибках? Модераторы?
 

Сообщения об ошибках необходимо проверить и воспроизвести, прежде чем MetaQuotes их обработает. Поэтому необходимо предоставить всю необходимую информацию: код, данные, настройки и т.д. Здесь, на форуме, или в личных сообщениях, если это потребуется.

Создать отдельную тему, посвященную ONNX, — хорошая идея.


Bug reports have to be checked and reproduced before being processed by MetaQuotes. So the needed information, code, data, settings, etc... have to be provided. Here on the forum, or in private when it's needed.

Having a thread dedicated to ONNX is a good idea.

 

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

Новая версия платформы MetaTrader 5 build 5572: Улучшения в ONNX и отображении графиков

Edgar Akhmadeev, 2026.02.07 15:56

ONNX_LOGLEVEL_VERBOSE и ONNX_ENABLE_PROFILING не работают (игнорируются). Код для воспроизведения - например https://forge.mql5.io/renat/ONNX.Price.Prediction

Измените if(!OnnxRun(handle,ONNX_NO_CONVERSION,input_data,output_data))
на if(!OnnxRun(handle,ONNX_NO_CONVERSION | ONNX_ENABLE_PROFILING | ONNX_LOGLEVEL_VERBOSE,input_data,output_data))
и ничего не изменится

 

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

Новая версия платформы MetaTrader 5 build 5572: Улучшения в ONNX и отображении графиков

Edgar Akhmadeev, 2026.02.09 15:08

ONNX модель 1.7B размером 5403 Мб не загружается ни в GPU, ни в CPU (если ONNX_USE_CPU_ONLY флаг вообще работает):
ONNX: create session failed with 7 status 'Failed to load model because protobuf parsing failed.', inspect code 'Scripts\My\...

Та же модель 0.6B размером 1695 Мб - ОК.
Размер VRAM - 12 Гб.


PS: С некоторых пор копирование из ячейки таблицы в справочнике производится вместе с рамочкой ячейки, что заставляет очищать форматирование copy/paste через промежуточные шаги.

ONNX_USE_CPU_ONLY


 

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

Новая версия платформы MetaTrader 5 build 5572: Улучшения в ONNX и отображении графиков

Edgar Akhmadeev, 2026.02.09 16:35

Я не нашёл подходящего тестового варианта моделей, которые можно скачать с сайтов. Придётся передать 2 свои модели общим объёмом 7 Гб. Могу залить временно в облако и дать ссылку. Или предложите свой вариант.

Код простейший:

long handle1 = OnnxCreate(path_small, 0);

long handle2 = OnnxCreate(path_large, 0);


 
Edgar Akhmadeev # :

Если вы считаете, что это ошибка в MT5, я жду от вас информацию и данные для проверки.
 
Alain Verleyen #:
Если вы считаете, что это ошибка в MT5, я жду от вас информацию и данные для проверки.

Вы о чём именно?

Если о флагах ONNX_LOGLEVEL_VERBOSE и ONNX_ENABLE_PROFILING, я дал ссылку для воспроизведения - публичный проект Рената, который включает и модели (чего не хватает в примерах из документации).

Кстати, дополню - по-моему все флаги ONNX_LOGLEVEL_* работают неправильно. Даже с флагом ONNX_LOGLEVEL_ERROR OnnxCreate() выводит"ONNX: CUDA selected". Мне кажется, это должно выводиться только с флагами ONNX_LOGLEVEL_INFO или ONNX_LOGLEVEL_VERBOSE.

Если Вы об этом:

"ONNX модель 1.7B размером 5403 Мб не загружается ни в GPU, ни в CPU (если ONNX_USE_CPU_ONLY флаг вообще работает). Та же модель 0.6B размером 1695 Мб - ОК. Размер VRAM - 12 Гб"

Я же на Ваш запрос ответил "Придётся передать 2 свои модели общим объёмом 7 Гб. Могу залить временно в облако и дать ссылку. Или предложите свой вариант". Вы или пропустили, или проблема перевода. Никак иначе не проверить ситуацию без этих моделей. Нужна именно точно соответствующая пара одинаковых моделей, но разного размера (чтобы не было сомнений, что это проблема именно в размере, а не в нерабочей модели). Я не смог найти подходящую пару в интернете.

 
Edgar Akhmadeev # :

Вы о чём именно?

Если о флагах ONNX_LOGLEVEL_VERBOSE и ONNX_ENABLE_PROFILING, я дал ссылку для воспроизведения - публичный проект Рената, который включает и модели (чего не хватает в примерах из документации).

Кстати, дополню - по-моему все флаги ONNX_LOGLEVEL_* работают неправильно. Даже с флагом ONNX_LOGLEVEL_ERROR OnnxCreate() выводит"ONNX: CUDA selected". Мне кажется, это должно выводиться только с флагами ONNX_LOGLEVEL_INFO или ONNX_LOGLEVEL_VERBOSE.

Если Вы об этом:

"ONNX модель 1.7B размером 5403 Мб не загружается ни в GPU, ни в CPU (если ONNX_USE_CPU_ONLY флаг вообще работает). Та же модель 0.6B размером 1695 Мб - ОК. Размер VRAM - 12 Гб"

Я же на Ваш запрос ответил "Придётся передать 2 свои модели общим объёмом 7 Гб. Могу залить временно в облако и дать ссылку. Или предложите свой вариант". Вы или пропустили, или проблема перевода. Никак иначе не проверить ситуацию без этих моделей. Нужна именно точно соответствующая пара одинаковых моделей, но разного размера (чтобы не было сомнений, что это проблема именно в размере, а не в нерабочей модели). Я не смог найти подходящую пару в интернете.

Хорошо, я неправильно понял из-за ошибки перевода. Спасибо.
 
Alain Verleyen #:
Хорошо, я неправильно понял из-за ошибки перевода. Спасибо.
Так мне залить модели на 7 Гб в облако и дать ссылку, или Вы предложите свой вариант, как передать их?