Обсуждение статьи "Cоздание стратегии возврата к среднему на основе машинного обучения" - страница 9

 

Доброго дня, Максим. Доброго дня уважаемым коллегам.

Вопрос на злобу дня.

Хотел добавить в бота дополнительный функционал (вывод позиции в безубыток и трал sl), но столкнулся с невозможность компиляции исходника (использую штатный компилятор из пакета MT5).
Причем не пропускает даже изначальный исходник mean reversion.mq5, прикрепленный автором к статье.
Проблема в функциях OnnxSetInputShape и OnnxSetOutputShape (строки 51, 58, 66, 71). Согласно справке по mql5, входными данными для указанных функций являются три переменные: две типа long и третья типа const ulong. Однако, по коду эксперта, переменные ExtInputShape, ExtInputShape2 и output_shape, используемые в качестве исходных в рассматриваемых функциях, инициализированы как const long (строки 31, 32, 65).

При изменении типа данных переменных на const ulong компиляция проходит успешно. Однако бот перестает работать "в профит", т.е. реализованный алгоритм торговой стратегии не выполняется. 

Прошу помощи в решении данной проблемы. Вариант с внешним компилятором рассматриваю в последнюю очередь. Возможна ли компиляция стандартными инструментами MT5 без проверки корректности кода?

 
Vladimir Levchenko #:

Доброго дня, Максим. Доброго дня уважаемым коллегам.

Вопрос на злобу дня.

Хотел добавить в бота дополнительный функционал (вывод позиции в безубыток и трал sl), но столкнулся с невозможность компиляции исходника (использую штатный компилятор из пакета MT5).
Причем не пропускает даже изначальный исходник mean reversion.mq5, прикрепленный автором к статье.
Проблема в функциях OnnxSetInputShape и OnnxSetOutputShape (строки 51, 58, 66, 71). Согласно справке по mql5, входными данными для указанных функций являются три переменные: две типа long и третья типа const ulong. Однако, по коду эксперта, переменные ExtInputShape, ExtInputShape2 и output_shape, используемые в качестве исходных в рассматриваемых функциях, инициализированы как const long (строки 31, 32, 65).

При изменении типа данных переменных на const ulong компиляция проходит успешно. Однако бот перестает работать "в профит", т.е. реализованный алгоритм торговой стратегии не выполняется. 

Прошу помощи в решении данной проблемы. Вариант с внешним компилятором рассматриваю в последнюю очередь. Возможна ли компиляция стандартными инструментами MT5 без проверки корректности кода?

Добрый, попробуйте этот вариант. Не помню, что еще менял помимо ulong. Да, после обновления некоторые ф-ии стали работать не так, как раньше.

В #define пропишите имена своих ф-й из вашего include файла.
Файлы:
 
Maxim Dmitrievsky #:

Добрый, попробуйте этот вариант. Не помню, что еще менял помимо ulong. Да, после обновления некоторые ф-ии стали работать не так, как раньше.

В #define пропишите имена своих ф-й из вашего include файла.

Доброго дня.

Сделал. Но, к сожалению, причина в чем-то другом. Прикладываю скрины результатов Вашего скомпилированного и варианта, в котором типы переменных заменены на ulong.

С переменными LONG После замены на ULONG

 
Vladimir Levchenko #:

Доброго дня.

Сделал. Но, к сожалению, причина в чем-то другом. Прикладываю скрины результатов Вашего скомпилированного и варианта, в котором типы переменных заменены на ulong.


А вы признаки того же типа используете в боте, что и при обучении? Бывает, что изменили признаки в питон скрипте, а в инклулнике нет.
Потому что этот вариант, что вам скинул, у меня работает нормально. 
Судя по кривой графика, модель получает не те признаки, на которых обучена 
 
Maxim Dmitrievsky #:
А вы признаки того же типа используете в боте, что и при обучении? Бывает, что изменили признаки в питон скрипте, а в инклулнике нет.
Потому что этот вариант, что вам скинул, у меня работает нормально. 
Судя по кривой графика, модель получает не те признаки, на которых обучена 

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

 
Vladimir Levchenko #:

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

Проверил, у меня все работает. Приложил файлы обученных моделей из статьи и обновленного бота, что выше.

Модели потом желательно переобучить, потому что к статье прикреплены демонстрационные. Когда разберетесь в питоновском скрипте.


 
Maxim Dmitrievsky #:

Проверил, у меня все работает. Приложил файлы обученных моделей из статьи и обновленного бота, что выше.

Модели потом желательно переобучить, потому что к статье прикреплены демонстрационные. Когда разберетесь в питоновском скрипте.


Доброго дня!
Да, в этом релизе сам бот компилируется и работает корректно. Но модели надо переобучать. Да и вообще, как я понимаю, делать это надо регулярно.
С питоном разбираюсь, но получается пока не всё. Основной релиз Pytonа на ноут накатил, обновил до актуальной версии. Все необходимые пакеты (pandas, numba, numpy, catboost, scipy, scikit-learn) установил. Котировки скачал. Файл котировок и всех скриптов сложит в папку Files в основном каталоге MT5. В коде скрипта обучения моделей пути прописал. Но вот что-то не идет дело к результату. 
Код скрипта корректирую в MetaEditore. Оттуда же пытаюсь скрипт запускать. Процесс вываливается в ошибку (не находит питон пакета bots, а попытка его установки по схеме установки иных пакетов также завершается ошибкой). Та же ошибка и при запуске скрипта через консоль питона.
Можете посоветовать, в каком направлении бурить тему?

Ошибка установки пакета bots


Ошибка в работе скрипта

 
Vladimir Levchenko #:
Доброго дня!
Да, в этом релизе сам бот компилируется и работает корректно. Но модели надо переобучать. Да и вообще, как я понимаю, делать это надо регулярно.
С питоном разбираюсь, но получается пока не всё. Основной релиз Pytonа на ноут накатил, обновил до актуальной версии. Все необходимые пакеты (pandas, numba, numpy, catboost, scipy, scikit-learn) установил. Котировки скачал. Файл котировок и всех скриптов сложит в папку Files в основном каталоге MT5. В коде скрипта обучения моделей пути прописал. Но вот что-то не идет дело к результату. 
Код скрипта корректирую в MetaEditore. Оттуда же пытаюсь скрипт запускать. Процесс вываливается в ошибку (не находит питон пакета bots, а попытка его установки по схеме установки иных пакетов также завершается ошибкой). Та же ошибка и при запуске скрипта через консоль питона.
Можете посоветовать, в каком направлении бурить тему?

Bots - это просто корневой каталог (папка), где лежат модули из статьи. Если при импорте модулей (дополнительных файлов) скрипт их не видит, то пропишите полные пути до файлов.

Либо закиньте все эти файлы в ту же папку что и основной скрипт и сделайте так, вместо этого:

Было
from bots.botlibs.labeling_lib import get_labels
from bots.botlibs.tester_lib import test_model
from bots.botlibs.export_lib import export_model_to_ONNX

Стало
from labeling_lib import get_labels
from tester_lib import test_model
from export_lib import export_model_to_ONNX

Это может происходить если у вас не прописался PYTHONPATH при установке Python. Найдите в интернете как прописать для вашей системы. То есть питон не видит файлы на диске.

Либо почитайте в интернете начальный курс по импорту модулей.

 
Maxim Dmitrievsky #:

Bots - это просто корневой каталог (папка), где лежат модули из статьи. Если при импорте модулей (дополнительных файлов) скрипт их не видит, то пропишите полные пути до файлов.

Либо закиньте все эти файлы в ту же папку что и основной скрипт и сделайте так, вместо этого:

Это может происходить если у вас не прописался PYTHONPATH при установке Python. Найдите в интернете как прописать для вашей системы. То есть питон не видит файлы на диске.

Либо почитайте в интернете начальный курс по импорту модулей.

Доброго дня, Максим. Спасибо. Почти со всем разобрался. Крайний вопрос.
В основном скрипте для обучения моделей есть закомментированные строки (154-182). Как я понимаю, это альтернативные сэмплеры сделок (разметчики). Но вот попробовать их не удается. Если какой-либо из разметчиков раскомментировать (условно, строки 154-158), а исходный закомментировать (строки 149-153), то скрипт уже не запускается.
В чем может быть причина, где искать?

Спасибо )  

 
Vladimir Levchenko #:

Доброго дня, Максим. Спасибо. Почти со всем разобрался. Крайний вопрос.
В основном скрипте для обучения моделей есть закомментированные строки (154-182). Как я понимаю, это альтернативные сэмплеры сделок (разметчики). Но вот попробовать их не удается. Если какой-либо из разметчиков раскомментировать (условно, строки 154-158), а исходный закомментировать (строки 149-153), то скрипт уже не запускается.
В чем может быть причина, где искать?

Спасибо )  

Привет, нужны логи, что интерпретатор Python пишет.