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

 
Roman Kutemov #:
Спецы по ИИ, 
Может кто то пробовал применять сети не к прогнозированию цены, а для управления мани, и рискменедмжентом. 
Что можно почитать по этой теме, какие типы сетей использовать  ? 
Обычные сети использовать.. 
Просто обучать их надо оптимизационными алгоритмами,  например генетическим.. 

Читатать надо про оптимизационные алгоритмы и написание фитнес функций, а не про сети
 
Evgeny Dyuka #:

Спасибо, но не получается.
Далее нажмите "  Получить обновления из хранилища" в контекстном меню проекта, чтобы загрузить его на компьютер.
В контекстном меню проекта "  Получить обновления из хранилища" нет.
И еще в 10 мест покликал правой кнопкой мышки - ничего нет.


Правой кнопкой на имя проекта. Должно быть так:


 
Mikhail Mishanin #:

2023.02.28 05:27:35.269 Storage successfully joined to the project 'ONNX.Price.Prediction'

2023.02.28 05:27:56.191 Storage MQL5 Storage activated

2023.02.28 05:27:56.191 Storage checkout started for MQL5

2023.02.28 05:27:56.635 Storage Could not find the requested SVN filesystem  (720003)

2023.02.28 05:28:32.432 Storage Owner MQL5 Storage is 'dinpae@gmail.com', change the MQL5 account

Что это значит? Не удается подключиться.

На - Подключить  MQL5 Storage. выдаёт 2023.02.28 05:36:25.147 Storage Owner MQL5 Storage is 'dinpae@gmail.com', change the MQL5 account


А вы под каким аккаунтом авторизовались в MQL5 Storage?

Указав емайл или точный регистрозависимый логин?

Емайл не принимается.

 
Aleksey Nikolayev #:

Правой кнопкой на имя проекта. Должно быть так:


Да, есть такая штука, но пишет ошибку
2023.02.28 13:05:45.151 Storage checkout started for MQL5\Shared Projects\ONNX.Price.Prediction
2023.02.28 13:05:45.667 Storage Not authorized to open root of edit operation  (220000)
Где то есть какая то авторизация
 
Evgeny Dyuka #:
Да, есть такая штука, но пишет ошибку
Где то есть какая то авторизация

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

При покидании проекта в журнале:

2023.02.28 16:31:47.481 Storage successfully left the project 'ONNX.Price.Prediction'

При удалении ничего не пишется. При присоединении к проекту:

2023.02.28 16:31:59.970 Storage successfully joined to the project 'ONNX.Price.Prediction'

При получении обновления:

2023.02.28 16:41:43.985 Storage checkout started for MQL5\Shared Projects\ONNX.Price.Prediction
2023.02.28 16:41:44.750 Storage added MQL5\Shared Projects\ONNX.Price.Prediction\Python
2023.02.28 16:41:44.750 Storage added MQL5\Shared Projects\ONNX.Price.Prediction\Python\PricePredictionTraining.py
2023.02.28 16:41:44.750 Storage added MQL5\Shared Projects\ONNX.Price.Prediction\Python\PricePrediction.py
2023.02.28 16:41:44.750 Storage added MQL5\Shared Projects\ONNX.Price.Prediction\Python\model.onnx
2023.02.28 16:41:44.750 Storage added MQL5\Shared Projects\ONNX.Price.Prediction\ONNX.Price.Prediction.mq5
2023.02.28 16:41:44.750 Storage added MQL5\Shared Projects\ONNX.Price.Prediction\ONNX.Price.Prediction.mqproj
2023.02.28 16:41:44.784 Storage checkout completed successfully in 797 ms

Авторизация была только при подключении к хранилищу - без неё в принципе невозможно присоединиться к проекту.

Больше ничем помочь не могу. Разве что возможно у вас стоит старая версия - я делал в самых свежих (бета и релиз).

 
Aleksey Nikolayev #:

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

При покидании проекта в журнале:

При удалении ничего не пишется. При присоединении к проекту:

При получении обновления:

Авторизация была только при подключении к хранилищу - без неё в принципе невозможно присоединиться к проекту.

Больше ничем помочь не могу. Разве что возможно у вас стоит старая версия - я делал в самых свежих (бета и релиз).

понял, спасибо
 
Evgeny Dyuka #:
понял, спасибо

На всякий случай выкладываю проект в архиве.

Файлы:
 
Renat Fatkhullin #:

А вы под каким аккаунтом авторизовались в MQL5 Storage?

Указав емайл или точный регистрозависимый логин?

Емайл не принимается.

по логину вход, только логин у меня кривой изначально, с точками dr.mr.mom, меня вразумили уже давно, может можно как то поменять логин?

 

Выпустили бету 3589, на которой можно протестировать работу ONNX моделей.

По шагам:

  1. Обновитесь до 3589 через Help -> Check Desktop Updates -> Latest Beta Version

  2. Активируйте MQL5 Storage, указав правильный MQL5 логин (не емайл) в регистрозависимом виде:






  3. У кого испорченный конфиг и MQL5 Storage не работает, откройте через File -> Open Data Folder эксплорер, зайдите в каталог MQL5 и удалите следующие файлы:


    После чего перейдите к пункту 2

  4. Присоединитесь к проекту ONNX.Price.Prediction из контекстного меню командой Join



  5. Откройте Navigator, откройте раздел Shared Projects и на проекте ONNX.Price.Prediction из контекстного меню вызовите Update from Storage:



    Проект закачается из MQL5 Storage (Subversion).

  6. Откройте проект и кликните на ONNX.Price.Prediction.mqproj - это проектный файл



  7. Скопилируйте проект и запустите его на EURUSD, H1

  8. Получите результат:
    2023.02.28 21:54:43.316 Scripts script ONNX.Price.Prediction (EURUSD,H1) loaded successfully
    2023.02.28 21:54:43.348 ONNX    initialized [API version 1.14.0]
    
    в журнале Experts: важны две последние строки, а остальное - специально включенные отладочные логи по флагу ONNX_DEBUG_LOGS
    
    2023.02.28 22:11:53.441 ONNX.Price.Prediction (EURUSD,H1)       ONNX: Creating and using per session threadpools since use_per_session_threads_ is true
    2023.02.28 22:11:53.441 ONNX.Price.Prediction (EURUSD,H1)       ONNX: Dynamic block base set to 0
    2023.02.28 22:11:53.442 ONNX.Price.Prediction (EURUSD,H1)       ONNX: Initializing session.
    2023.02.28 22:11:53.442 ONNX.Price.Prediction (EURUSD,H1)       ONNX: Adding default CPU execution provider.
    2023.02.28 22:11:53.442 ONNX.Price.Prediction (EURUSD,H1)       ONNX: Total shared scalar initializer count: 0
    2023.02.28 22:11:53.443 ONNX.Price.Prediction (EURUSD,H1)       ONNX: Total fused reshape node count: 0
    2023.02.28 22:11:53.443 ONNX.Price.Prediction (EURUSD,H1)       ONNX: Total shared scalar initializer count: 0
    2023.02.28 22:11:53.443 ONNX.Price.Prediction (EURUSD,H1)       ONNX: Total fused reshape node count: 0
    2023.02.28 22:11:53.444 ONNX.Price.Prediction (EURUSD,H1)       ONNX: Use DeviceBasedPartition as default
    2023.02.28 22:11:53.444 ONNX.Price.Prediction (EURUSD,H1)       ONNX: Saving initialized tensors.
    2023.02.28 22:11:53.444 ONNX.Price.Prediction (EURUSD,H1)       ONNX: Done saving initialized tensors
    2023.02.28 22:11:53.445 ONNX.Price.Prediction (EURUSD,H1)       ONNX: Session successfully initialized.
    2023.02.28 22:11:53.445 ONNX.Price.Prediction (EURUSD,H1)       ONNX: Number of streams: 1
    2023.02.28 22:11:53.445 ONNX.Price.Prediction (EURUSD,H1)       ONNX: Begin execution
    2023.02.28 22:11:53.445 ONNX.Price.Prediction (EURUSD,H1)       ONNX: stream 0 launch kernel with idx 0
    2023.02.28 22:11:53.445 ONNX.Price.Prediction (EURUSD,H1)       ONNX: ort value 1 released
    2023.02.28 22:11:53.445 ONNX.Price.Prediction (EURUSD,H1)       ONNX: stream 0 launch kernel with idx 1
    2023.02.28 22:11:53.445 ONNX.Price.Prediction (EURUSD,H1)       ONNX: ort value 2 released
    2023.02.28 22:11:53.445 ONNX.Price.Prediction (EURUSD,H1)       ONNX: stream 0 launch kernel with idx 3
    2023.02.28 22:11:53.445 ONNX.Price.Prediction (EURUSD,H1)       ONNX: ort value 6 released
    2023.02.28 22:11:53.445 ONNX.Price.Prediction (EURUSD,H1)       ONNX: stream 0 launch kernel with idx 4
    2023.02.28 22:11:53.445 ONNX.Price.Prediction (EURUSD,H1)       ONNX: ort value 8 released
    2023.02.28 22:11:53.445 ONNX.Price.Prediction (EURUSD,H1)       ONNX: stream 0 launch kernel with idx 5
    2023.02.28 22:11:53.445 ONNX.Price.Prediction (EURUSD,H1)       ONNX: ort value 9 released
    2023.02.28 22:11:53.445 ONNX.Price.Prediction (EURUSD,H1)       ONNX: stream 0 launch kernel with idx 6
    2023.02.28 22:11:53.445 ONNX.Price.Prediction (EURUSD,H1)       ONNX: stream 0 launch kernel with idx 7
    2023.02.28 22:11:53.445 ONNX.Price.Prediction (EURUSD,H1)       ONNX: stream 0 launch kernel with idx 2
    2023.02.28 22:11:53.445 ONNX.Price.Prediction (EURUSD,H1)       ONNX: ort value 3 released
    2023.02.28 22:11:53.445 ONNX.Price.Prediction (EURUSD,H1)       ONNX: ort value 11 released
    2023.02.28 22:11:53.445 ONNX.Price.Prediction (EURUSD,H1)       ONNX: stream 0 launch kernel with idx 8
    2023.02.28 22:11:53.445 ONNX.Price.Prediction (EURUSD,H1)       ONNX: stream 0 launch kernel with idx 9
    2023.02.28 22:11:53.445 ONNX.Price.Prediction (EURUSD,H1)       ONNX: ort value 16 released
    2023.02.28 22:11:53.445 ONNX.Price.Prediction (EURUSD,H1)       ONNX: stream 0 launch kernel with idx 10
    2023.02.28 22:11:53.445 ONNX.Price.Prediction (EURUSD,H1)       ONNX: stream 0 launch kernel with idx 11
    2023.02.28 22:11:53.445 ONNX.Price.Prediction (EURUSD,H1)       ONNX: ort value 22 released
    2023.02.28 22:11:53.445 ONNX.Price.Prediction (EURUSD,H1)       ONNX: stream 0 launch kernel with idx 12
    2023.02.28 22:11:53.445 ONNX.Price.Prediction (EURUSD,H1)       ONNX: ort value 25 released
    2023.02.28 22:11:53.445 ONNX.Price.Prediction (EURUSD,H1)       ONNX: stream 0 launch kernel with idx 13
    2023.02.28 22:11:53.445 ONNX.Price.Prediction (EURUSD,H1)       ONNX: ort value 27 released
    2023.02.28 22:11:53.445 ONNX.Price.Prediction (EURUSD,H1)       ONNX: stream 0 launch kernel with idx 27
    2023.02.28 22:11:53.445 ONNX.Price.Prediction (EURUSD,H1)       ONNX: stream 0 launch kernel with idx 17
    2023.02.28 22:11:53.445 ONNX.Price.Prediction (EURUSD,H1)       ONNX: stream 0 launch kernel with idx 18
    2023.02.28 22:11:53.445 ONNX.Price.Prediction (EURUSD,H1)       ONNX: ort value 28 released
    2023.02.28 22:11:53.445 ONNX.Price.Prediction (EURUSD,H1)       ONNX: stream 0 launch kernel with idx 28
    2023.02.28 22:11:53.445 ONNX.Price.Prediction (EURUSD,H1)       ONNX: ort value 30 released
    2023.02.28 22:11:53.445 ONNX.Price.Prediction (EURUSD,H1)       ONNX: stream 0 launch kernel with idx 26
    
    2023.02.28 22:11:53.445 ONNX.Price.Prediction (EURUSD,H1)       [-1.5921557]
    2023.02.28 22:11:53.445 ONNX.Price.Prediction (EURUSD,H1)       predicted 1.0591759612759748
    
  9. Если не сработает, значит или старая версия ONNX Runtime или она отсутствует

    В этом случае скачайте архив ONNX Runtime 1.14, подписанный Microsoft, разверните его в корневой каталог терминала рядом с terminal64.exe и рестартуйте терминал:

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



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

  1. Поставьте Python 3 (например Python 3.10) и доставьте/обновите пакеты:
    python.exe -m pip install --upgrade pip
    pip install --upgrade tensorflow
    pip install --upgrade pandas
    pip install --upgrade scikit-learn
    pip install --upgrade matplotlib
    pip install --upgrade tqdm
    pip install --upgrade metatrader5
    pip install --upgrade onnx==1.12
    pip install --upgrade tf2onnx
    Пакет onnx с явным указанием версии 1.12, чтобы не конфликтовать с требованиями tensorflow.

  2. Запустите MetaEditor и удостоверьтесь, что в Tools -> Options -> Compilers распознался Питон:



    При необходимости укажите путь самостоятельно, если редактор не сможет самостоятельно его определить.

  3. Торговый терминал должен быть подключен к серверу, где есть EURUSD (например, MetaQuotes-Demo)

    Удостоверьтесь, что в настройках терминала включена интеграция с Питоном. Если была выключена, то включите и рестартуйте терминал:




  4. Перейдите в навигаторе к проекту ONNX.Price.Prediction и откройте файл PricePredictionTraning.py


  5. Запустите скрипт на компиляцию, что для питоновского скрипта означает запуск.

    Скрипт с помощью пакета MetaTrader5 свяжется с терминалом (если он выключен, запустит автоматически) и начнет обучение на EURUSD, H1:


    По окончании в Journal редактора будет:
    2023.02.28 22:24:16.876 Python  107/107 [==============================] - 0s 1ms/step - loss: 1.9167 - mae: 0.8553
    2023.02.28 22:24:16.876 Python  test_loss=1.917
    2023.02.28 22:24:16.876 Python  test_mae=0.855
    2023.02.28 22:24:17.179 Python  saved model to C:\Users\sys\AppData\Roaming\MetaQuotes\Terminal\8D1E0A7047FFD62A8C00B09AEC1F3004\MQL5\Shared Projects\ONNX.Price.Prediction\Python\model.onnx
    2023.02.28 22:24:17.291 Storage modify MQL5\Shared Projects\ONNX.Price.Prediction\Python\model.onnx to base
    
    Новая модель model.onnx сохранится/обновится в проекте. Ей уже можно пользоваться.

  6. Запустите скрипт PricePrediction.py, чтобы удостовериться, что модель работает:
    2023.02.28 22:27:46.078 Python  data path to load onnx model C:\Users\sys\AppData\Roaming\MetaQuotes\Terminal\8D1E0A7047FFD62A8C00B09AEC1F3004\MQL5\Shared Projects\ONNX.Price.Prediction\Python\
    2023.02.28 22:27:46.078 Python  [[[1.061412 1.062328 1.060358 1.061169]]]
    2023.02.28 22:27:46.078 Python  [[[0.00105361 0.00119785 0.00074662 0.00125179]]]
    2023.02.28 22:27:46.078 Python  [[[ 0.18792516  0.17698306  0.01607251 -0.45455042]
    2023.02.28 22:27:46.078 Python    [-0.77068297 -0.50757406  0.2839477   0.36827372]
    2023.02.28 22:27:46.078 Python    [ 0.21639867 -0.3823502   0.48485409 -0.19891574]
    2023.02.28 22:27:46.078 Python    [-0.46696554 -0.31556414  0.33752274  0.48011389]
    2023.02.28 22:27:46.078 Python    [ 0.3302927   0.7196198   1.36884221  1.56656129]
    2023.02.28 22:27:46.078 Python    [ 1.63058293  1.46261473  1.39562973  1.74231014]
    2023.02.28 22:27:46.078 Python    [ 1.82040632  1.84663458 -0.26519644 -0.52644768]
    2023.02.28 22:27:46.078 Python    [-0.84661232 -0.50757406 -0.45270907 -0.86995678]
    2023.02.28 22:27:46.078 Python    [-1.27371495 -1.11699687 -1.10900328 -0.48650476]
    2023.02.28 22:27:46.078 Python    [-0.82762998 -1.37579285 -2.0599602  -1.62088366]]]
    2023.02.28 22:27:46.094 Python  [[-1.6349795]]
    2023.02.28 22:27:46.094 Python  predict:  [1.05912]
    
  7. Тестовый пример сработал!


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

Вы можете конвертировать свои собственные TensorFlow модели в ONNX формат, используя питоновские пакеты onnx и tf2onnx:

import tf2onnx
...
onnx_model = tf2onnx.convert.from_keras(model, output_path=output_path)

ps: используйте последнюю версию проекта, так как в старой версии прототипы функций поменялись.
 

Заработало.

2023.03.01 06:54:34.987 ONNX.Price.Prediction (EURUSD,H1)       [-0.20001383]
2023.03.01 06:54:34.988 ONNX.Price.Prediction (EURUSD,H1)       predicted 1.0581684510582798
Причина обращения: