Aprendizado de máquina no trading: teoria, prática, negociação e não só - página 2938

 
Mikhail Mishanin #:

2023.02.28 05:27:35.269 Storage juntou-se com sucesso ao projeto 'ONNX.Price.Prediction'

2023.02.28 05:27:56.191 Armazenamento Armazenamento MQL5 ativado

2023.02.28 05:27:56.191 Storage checkout iniciado para MQL5

2023.02.28 05:27:56.635 Storage Não foi possível encontrar o sistema de arquivos SVN solicitado (720003)

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

O que isso significa? Não é possível se conectar.

On - Connect MQL5 Storage. gives 2023.02.28 05:36:25.147 Storage Owner MQL5 Storage is 'dinpae@gmail.com', change the MQL5 account.


Em qual conta você fez login no MQL5 Storage?

Você especificou seu e-mail ou login com distinção exata entre maiúsculas e minúsculas?

O e-mail não é aceito.

 
Aleksey Nikolayev #:

Clique com o botão direito do mouse no nome do projeto. Ele deve ficar assim:


Sim, isso existe, mas ele escreve um erro
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)
Há algum tipo de autorização em algum lugar
 
Evgeny Dyuka #:
Sim, isso existe, mas dá um erro
. Há algum tipo de autorização em algum lugar.

Bem, eu não sei. Tente sair e excluir o projeto, depois volte a entrar nele e obtenha uma atualização do repositório.

Quando você sai de um projeto no registro:

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

Ao excluir, nada é escrito. Ao ingressar em um projeto:

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

Ao receber uma atualização:

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

A autorização era somente ao se conectar ao repositório - é impossível ingressar no projeto sem ela.

Não posso ajudá-lo mais. A menos que você tenha uma versão antiga - eu fiz isso na mais recente (beta e lançamento).

 
Aleksey Nikolayev #:

Bem, eu não sei. Tente sair e excluir o projeto, depois volte a entrar nele e obtenha uma atualização do repositório.

Quando você deixa um projeto no registro:

Ao excluir, nada é escrito. Ao ingressar em um projeto:

Ao receber uma atualização:

A autorização era apenas ao se conectar ao repositório - sem ela, é basicamente impossível ingressar no projeto.

Não posso ajudá-lo com mais nada. A menos que você tenha uma versão antiga - eu fiz isso na mais recente (beta e lançamento).

Entendi, obrigado
 
Evgeny Dyuka #:
Entendi, obrigado.

Por precaução, estou publicando o projeto no arquivo.

Arquivos anexados:
 
Renat Fatkhullin #:

Em que conta você fez login no MQL5 Storage?

Você especificou seu e-mail ou login com distinção exata entre maiúsculas e minúsculas?

O e-mail não é aceito.

No login, apenas o meu login está torto no início, com pontos dr.mr.mom, eu tenho há muito tempo, você pode alterar o login?

 

Lançada a versão beta 3589, na qual você pode testar a operação dos modelos ONNX.

Etapas:

  1. Atualize para 3589 via Help -> Check Desktop Updates -> Latest Beta Version

  2. Ative o MQL5 Storage especificando o login correto do MQL5 (não o e-mail) em letras maiúsculas e minúsculas:






  3. Se você tiver uma configuração corrompida e o MQL5 Storage não funcionar, abra o Explorer via File -> Open Data Folder, vá para o diretório MQL5 e exclua os seguintes arquivos:


    . Em seguida, vá para a etapa 2.

  4. Junte-se ao projeto ONNX.Price.Prediction no menu de contexto usando o comando Join.



  5. Abra o Navigator, abra a seção Shared Projects e, no projeto ONNX.Price.Prediction, chame Update from Storage no menu de contexto:



    O projeto será baixado do MQL5 Storage (Subversion).

  6. Abra o projeto e clique em ONNX.Price.Prediction.mqproj - esse é o arquivo do projeto



  7. Copie o projeto e execute-o no EURUSD, H1.

  8. Obtenha o resultado:
    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. Se não funcionar, isso significa que há uma versão antiga do ONNX Runtime ou que está faltando

    . Nesse caso, faça download do arquivo ONNX Runtime 1.14, assinado pela Microsoft, expanda-o para o diretório raiz do terminal ao lado de terminal64.exe e reinicie o terminal:

No projeto, o model.onnx mais simples treinado para fins de exemplo é imediatamente anexado para que você possa ver a demonstração.



Para treinar o modelo por conta própria, você precisa usar os scripts python incluídos no projeto:

  1. Instale o Python 3 (por exemplo, Python 3.10) e entregue/atualize os pacotes:
    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
    O pacote onnx com a versão 1.12 explicitamente declarada para não entrar em conflito com os requisitos do tensorflow.

  2. Execute o MetaEditor e certifique-se de que o Python seja reconhecido em Tools -> Options -> Compilers:



    Se necessário, especifique você mesmo o caminho, caso o editor não consiga detectá-lo sozinho.

  3. O terminal de negociação deve estar conectado a um servidor com EURUSD (por exemplo, MetaQuotes-Demo)

    Certifique-se de que a integração com Python esteja ativada nas configurações do terminal. Se ela estiver desativada, ative-a e reinicie o terminal:




  4. Vá para o projeto ONNX.Price.Prediction no navegador e abra o arquivo PricePredictionTraning.py


  5. Execute o script para compilação, o que, para um script Python, significa iniciar.

    O script se conectará ao terminal com a ajuda do pacote MetaTrader5 (se estiver desligado, ele iniciará automaticamente) e começará o treinamento em EURUSD, H1:


    Quando terminar, o editor do diário conterá:
    .
    2023.02.28 22:24:16.876 Python  107/107 [==============================] - 0 s 1 ms/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\8 D1E0A7047FFD62A8C00B09AEC1F3004\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
    
    O novo model.onnx será salvo/atualizado no projeto. Ele já pode ser usado.

  6. Execute o script PricePrediction.py para ter certeza de que o modelo funciona:
    .
    2023.02.28 22:27:46.078 Python  data path to load onnx model C:\Users\sys\AppData\Roaming\MetaQuotes\Terminal\8 D1E0A7047FFD62A8C00B09AEC1F3004\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. O exemplo de teste funcionou!


Esse é um exemplo criado especialmente para demonstrar o treinamento e a execução dos modelos.

Você pode converter seus próprios modelos do TensorFlow para o formato ONNX usando os pacotes python onnx e tf2onnx:

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

ps: use a versão mais recente do projeto, pois os protótipos de função foram alterados na versão antiga.
 

Funcionou.

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
 
Renat Fatkhullin #:
  1. Coloque o Python 3 (por exemplo, Python 3.10) e entregue/atualize os pacotes:
    Package onnx com uma menção explícita da versão 1.12 para não entrar em conflito com os requisitos do tensorflow.

Não foi possível instalar esse pacote. Primeiro, ele exigia a instalação do CMake. Agora ele exige a instalação do Visual Studio?

CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
 
Aleksey Nikolayev #:

Não foi possível instalar esse pacote. Primeiro eles exigiram a instalação do CMake. E agora eles exigem que o Visual Studio seja instalado?

Você ainda está no início do caminho de lutar contra o inferno das incompatibilidades mútuas e criar ambientes separados para tarefas em Python.

Alguns pacotes exigem compiladores para a compilação de destino.