Обсуждение статьи "Использование ONNX-моделей в MQL5" - страница 4

 
Большое спасибо. Очень ценю это. Хотелось бы побольше статей на эту тему в ближайшем будущем
 

Есть проблема с onyx lib есть идеи?

При установке Onyx возникла ошибка

ERROR: Не удалось найти версию, удовлетворяющую требованию onyx (из версий: 0.0.5, 0.0.17, 0.0.19, 0.0.20, 0.0.21, 0.1, 0.1.1, 0.1.3, 0.1.4, 0.1.5, 0.2, 0.2.1, 0.3, 0.3.2, 0.3.3, 0.3.4, 0.3.5, 0.3.6, 0.3.7, 0.3.8, 0.3.9, 0.3.10, 0.3.11, 0.3.12, 0.4, 0.4.1, 0.4.2, 0.4.4, 0.4.5, 0.4.6, 0.4.7, 0.5, 0.6.1, 0.6.2, 0.6.3, 0.6.4, 0.7.3, 0.7.4, 0.7.5, 0.7.6, 0.7.7, 0.7.8, 0.7.10, 0.7.11, 0.7.12, 0.7.13, 0.8.5, 0.8.7, 0.8.10, 0.8.11)

ERROR: Не найдено подходящего дистрибутива для onyx

затем при запуске t2fonnx

импортировать onyx

ModuleNotFoundError: Нет модуля с именем 'onyx'



 
Странно, сеть обучается на часовом периоде, а советник скармливает дневные данные. Ошибка? Или я чего то не понимаю?
 
donbar upbar #:

Есть ли проблема с Onyx lib?

При установке Onyx возникла ошибка

ERROR: Не удалось найти версию, удовлетворяющую требованию onyx (из версий: 0.0.5, 0.0.17, 0.0.19, 0.0.20, 0.0.21, 0.1, 0.1.1, 0.1.3, 0.1.4, 0.1.5, 0.2, 0.2.1, 0.3, 0.3.2, 0.3.3, 0.3.4, 0.3.5, 0.3.6, 0.3.7, 0.3.8, 0.3.9, 0.3.10, 0.3.11, 0.3.12, 0.4, 0.4.1, 0.4.2, 0.4.4, 0.4.5, 0.4.6, 0.4.7, 0.5, 0.6.1, 0.6.2, 0.6.3, 0.6.4, 0.7.3, 0.7.4, 0.7.5, 0.7.6, 0.7.7, 0.7.8, 0.7.10, 0.7.11, 0.7.12, 0.7.13, 0.8.5, 0.8.7, 0.8.10, 0.8.11)

ОШИБКА: Не найдено подходящего дистрибутива для onyx

затем при запуске t2fonnx

импортировать onyx

ModuleNotFoundError: Нет модуля с именем 'onyx'



Привет, Донбар, похоже, вы пытаетесь установить не тот пакет. Это должен быть onnx, а не onyx.
 

Здравствуйте, спасибо за статью. Отличное описание того, как построить ML-модель и включить ее в советник!

Я попытался воспроизвести ваши результаты, но у меня возникли некоторые проблемы. Я надеялся, что вы сможете помочь мне понять, почему.

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

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

Можете ли вы предположить возможные причины этого? Может быть, модель настолько хрупкая, что это не является неожиданностью?

Моя последняя попытка воспроизвести модель заключалась в простом копировании вашего окончательного кода Python, вставке некоторых вызовов Matplotlib для создания графиков потерь, но я получил практически те же результаты. Не могли бы вы подсказать, как мне лучше воспроизвести ваши результаты?

Спасибо

Файлы:
LOSS.png  99 kb
RMSE.png  120 kb
copypaste.py  5 kb
 
Vladimir Perervenko #:

Любой проект машинного обучения состоит из трех этапов:

  • препроцессинг (очень много чего)
  • выбор модели, обучение, оптимизация и т.п. 
  • внедрение

Использование ONNX моделей в мкл решает вопрос с внедрением. Правда не всех моделей и не совсем просто.

Обучение и оптимизация моделей решается отдельным процессом в Питоне.

Но из всех вышеперечисленных, первый этап - самый трудоемкий, сильно творческий и самый важный. И как раз его на мкл реализовать пока  невозможно. Не считаем же примитивное шкалирование за препроцессинг. А народная мудрость гласит: "Мусор на входе - мусор на выходе". Слишком много нужно дополнительно разработать и внедрить в МКЛ для полноценного использования МО только на МКЛ. Нельзя объять необъятное, тем более, что оно постоянно расширяется.

Поэтому для выполнения препроцесса либо делать его в другом ЯП (кто какой освоил R/Python/Julia и т.д.) либо пробовать конвертировать и его в ONNX. 

Польза от внедрения ONNX пока только в том, что научимся конвертировать, создавать, упрощать и оптимизировать модели ONNX. Может в будущем пригодится.

Лучше и не скажешь, все точно и по делу

 
Rorschach #:

Перенести препроцессинг в МТ не проблема, очень хочется протестировать систему в МТ тестере, в питоне/R нужно свой тестер писать, чревато ошибками.

тестеров уже полно, провереных и в R и piton

А вот перенести препроцесинг это как раз проблема, препрцесинг это не банальное шкалирование или стохастик посчитать
 
Bill M тестере стратегий. Я понимаю, что у этих алгоритмов есть какие-то случайные особенности, но все же разница меня удивляет. Я также старался использовать одни и те же временные периоды, чтобы, по крайней мере, мои тренировочные и тестовые данные были одинаковыми для построения модели, и мой бэктест в MT5 был за тот же период. Я получил очень разные результаты.

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

Можете ли вы предположить возможные причины этого? Может быть, модель настолько хрупкая, что это не является неожиданностью?

Моя последняя попытка воспроизведения заключалась в простом копировании вашего окончательного кода Python, вставке некоторых вызовов Matplotlib для создания графиков потерь, но я получил практически те же результаты. Не могли бы вы подсказать, как мне лучше воспроизвести ваши результаты?

Спасибо

Столкнулся с той же проблемой и здесь.

Может ли кто-нибудь помочь, пожалуйста?

 
Joseph #:

Столкнулся с той же проблемой и здесь.

Может ли кто-нибудь помочь, пожалуйста?

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

Прежде всего, большое спасибо MetaQuotes (автору) за то, что поделился этой подробной статьей. Я узнаю много нового в своем стремлении к торговле ML.

Запустив оригинальные onnx-файлы из статьи на моем MetaQuates-Demo счете, мне удалось воспроизвести те же результаты. Однако при повторном обучении модели onnx с помощью прилагаемого файла ONNX.eurusd.H1.120.Training.py:

data start date = 2022-09-03 00:00:00
data end date = 2023-01-01 00:00:00

модель (onnx прилагается: ) набирает очки:

RMSE         : 0.005212606864326095
MSE          : 2.7171270322019527e-05
R2 score     : -3.478924709873314

, а также результаты бэктеста 1Jan2023-26Mar2023: "backtest results.png"

MetaQuotes
  • 2023.11.23
  • www.mql5.com
Trader's profile
Файлы:
 

Я переобучил прилагаемый файл ONNX.eurusd.H1.120.Training.py следующим образом:

data start date = 2022-11-28 12:28:00
data end date = 2023-03-28 12:28:00

модель (onnx прилагается:) набирает очки:

RMSE         : 0.0014680559413400179
MSE          : 2.155188246903726 e-06
R2 score     : 0.9699715149559284

и результаты бактеста за 1 января2023-26 марта2023 прилагаются: "bacttest result2.png"

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

data start date = 2022-09-03 00:00:00
data end date = 2023-01-01 00:00:00
Буду признателен, если кто-нибудь прокомментирует это.
Файлы: