Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 2956

 
Slava #:

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

Спасибо, стало понятнее. 

 
Elvin Nasirov #:

Как я понял, в машинном обучении есть задачи классификации, например, тренд будет вверх или вниз, или прогнозирования конкретного значения типа цена будет здесь с такой-то погрешностью. Но на финансовых рынках задача несколько по другому стоит - максимизация прибыли при минимизации просадок. А я что-то не видел подобного рода моделей малинного обучения.

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

Если кто-то решит такую сложную задачу, то вряд ли он будет делиться решением.

 
Оптимизируете по критерию макс прибыль свою стратегию (если лень делать другую разметку), потом обучаете на этом НС. Либо берёте с маркета любую ТС прибыльную. Это же обучение с учителем.

Если интересует именно вывод ТС на основе только лишь НС, могу предложить вариант из своей последней статьи. По образу и подобию можно делать. Как раз изначально задавался вопросом как можно сделать такое. Эксклюзивчик.
 
Aleksey Nikolayev #:

Если кто-то решит такую сложную задачу, то вряд ли он будет делиться решением.

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

Люди начинают думать и говорить о том что я тут обсуждал годы назад, но никто не понимал
 
Aleksey Nikolayev #:

Если убрать ключ ONNX_NO_CONVERSION, то можно подавать на вход double вектор. На выходе всё равно должен быть float вектор.

После компиляции модель остается отдельным файлом или зашивается в .ex5 ?
 
Evgeny Dyuka #:
После компиляции модель остается отдельным файлом или зашивается в .ex5 ?

Если не "зашивается", то как её продавать? Предполагаю, что становиться ресурсом, как и другие файлы.

 
Vladimir Perervenko #:

Понятно, что пример использования модели ONNX  в MQL5 только иллюстрация этого и ничего больше. Но все же хочу обратить внимания на  очень важную ошибку. В машинном обучении первый этап -препроцессинг. Сюда входит много чего начиная с тривиальной нормализации и заканчивая уменьшением размерности и др инженерными трюками. Основное правило любых преобразований предикторов и целевой на этом этапе - все параметры преобразований(как то средняя, медиана, sd, mad и т.д)  вычисляются на обучающем (train) наборе. Тестовый набор и новые данные обрабатываются с использованием параметров полученных на train наборе.

Поэтому в примере нужно было вычислить mean/sd на train, передать эти данные в часть где делается предикт, обработать новые данные с этими параметрами. После этого сделать денормализацию и получить реальные значения прогнозной цены. Эта последовательность важна.

Понятно, что никто реальные цены не подает на вход модели, но это уже частности.

Удачи

В нашем примере onnx-модели входные цены нормализуются при помощи mean и std на всей серии. Полученный результат потом разнормализуется по тем же правилам

 
Evgeny Dyuka #:
После компиляции модель остается отдельным файлом или зашивается в .ex5 ?

В моём примере нет, остаётся отдельным файлом. В примере Рената (публичный проект ONNX.Price.Prediction) зашивается в .ex5.

 
Slava #:

В нашем примере onnx-модели входные цены нормализуются при помощи mean и std на всей серии. Полученный результат потом разнормализуется по тем же правилам

Объясняю на пальцах. В ONNX.Price.Prediction.mq5 Вы получаете 10 OHLC. Затем на этих данных Вы определяете mean и sd, и ними же нормируете эти 10 значений. Это не правильно.

Для этих  новых данных нужно использовать mean и sd полученные на обучающемся наборе. Т.е. в предыдущем скрипте. Так понятно?

 
Vladimir Perervenko #:

Объясняю на пальцах. В ONNX.Price.Prediction.mq5 Вы получаете 10 OHLC. Затем на этих данных Вы определяете mean и sd, и ними же нормируете эти 10 значений. Это не правильно.

Для этих  новых данных нужно использовать mean и sd полученные на обучающемся наборе. Т.е. в предыдущем скрипте. Так понятно?

Конечно понятно и сделано осознанно.

Пример был сделан ради тестирования загрузки onnx модели, а не для извлечения разумного результата модели.

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