L'apprendimento automatico nel trading: teoria, modelli, pratica e algo-trading - pagina 2938

 
Mikhail Mishanin #:

2023.02.28 05:27:35.269 Storage si è unito con successo al progetto 'ONNX.Price.Prediction'.

2023.02.28 05:27:56.191 Stoccaggio Stoccaggio MQL5 attivato

2023.02.28 05:27:56.191 Stoccaggio checkout avviato per MQL5

2023.02.28 05:27:56.635 Stoccaggio Impossibile trovare il filesystem SVN richiesto (720003)

2023.02.28 05:28:32.432 Storage Il proprietario di MQL5 Storage è 'dinpae@gmail.com', cambiare l'account MQL5

Cosa significa? Impossibile connettersi.

On - Connetti lo storage MQL5. dà 2023.02.28 05:36:25.147 Storage Il proprietario dello storage MQL5 è 'dinpae@gmail.com', cambiare l'account MQL5.


Con quale account avete effettuato l'accesso a MQL5 Storage?

Avete specificato la vostra e-mail o il login esatto con distinzione tra maiuscole e minuscole?

L'e-mail non è accettata.

 
Aleksey Nikolayev #:

Fare clic con il pulsante destro del mouse sul nome del progetto. Dovrebbe essere così:


Sì, esiste, ma scrive un errore
.
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)
C'è un qualche tipo di autorizzazione da qualche parte
 
Evgeny Dyuka #:
Sì, esiste, ma dà un errore
C'è una sorta di autorizzazione da qualche parte.

Beh, non lo so. Prova a lasciare e cancellare il progetto, poi a reinserirlo, quindi a ottenere un aggiornamento dal repository.

Quando si lascia un progetto nel log:

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

Quando si elimina, non viene scritto nulla. Quando ci si unisce a un progetto:

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

Quando si riceve un aggiornamento:

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

L'autorizzazione era solo quando ci si connetteva al repository - è impossibile unirsi al progetto senza di essa.

Non posso più aiutarvi. A meno che non abbiate una vecchia versione: io l'ho fatto con l'ultima (beta e release).

 
Aleksey Nikolayev #:

Beh, non lo so. Provate a lasciare e cancellare il progetto, poi a reinserirlo e a ottenere un aggiornamento dal repository.

Quando si lascia un progetto nel registro:

Quando si elimina, non viene scritto nulla. Quando si unisce un progetto:

Quando si riceve un aggiornamento:

L'autorizzazione era solo quando ci si connetteva al repository: senza di essa è praticamente impossibile unirsi al progetto.

Non posso aiutarti con nient'altro. A meno che tu non abbia una vecchia versione: io l'ho fatto con l'ultima (beta e release).

Ho capito, grazie
 
Evgeny Dyuka #:
Capito, grazie.

Per sicurezza, sto postando il progetto nell'archivio.

 
Renat Fatkhullin #:

Con quale account è stato effettuato l'accesso a MQL5 Storage?

Avete specificato il vostro indirizzo e-mail o il login esatto con distinzione tra maiuscole e minuscole?

L'e-mail non è accettata.

sul login di accesso, solo il mio login è storto inizialmente, con punti dr.mr.mom, ho da tempo, è possibile modificare il login?

 

Rilasciata la beta 3589, sulla quale è possibile testare il funzionamento dei modelli ONNX.

Passi:

  1. Aggiornare alla 3589 tramite Aiuto -> Controlla aggiornamenti desktop -> Ultima versione beta

  2. Attivare MQL5 Storage specificando il login MQL5 corretto (non l'e-mail) in forma sensibile alle maiuscole:






  3. Se avete una configurazione danneggiata e MQL5 Storage non funziona, aprite Explorer tramite File -> Open Data Folder, andate nella directory MQL5 e cancellate i seguenti file:


    . Poi passate al punto 2.

  4. Unire il progetto ONNX.Price.Prediction dal menu contestuale utilizzando il comando Join.



  5. Aprire Navigator, aprire la sezione Progetti condivisi e sul progetto ONNX.Price.Prediction richiamare Update from Storage dal menu contestuale:



    Il progetto verrà scaricato da MQL5 Storage (Subversion).

  6. Aprire il progetto e fare clic su ONNX.Price.Prediction.mqproj: questo è il file del progetto.



  7. Copiare il progetto ed eseguirlo su EURUSD, H1.

  8. Ottenere il risultato:
    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 non funziona, significa che la versione di ONNX Runtime è vecchia o che manca

    . In questo caso, scaricare l'archivio ONNX Runtime 1.14, firmato da Microsoft, espanderlo nella directory principale del terminale accanto a terminal64.exe e riavviare il terminale:

Nel progetto viene subito allegato il modello più semplice addestrato a scopo di esempio model.onnx, in modo da poter vedere la dimostrazione.



Per addestrare il modello da soli, è necessario utilizzare gli script python inclusi nel progetto:

  1. Installare Python 3 (ad esempio Python 3.10) e fornire/aggiornare i pacchetti:
    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
    Il pacchetto onnx deve indicare esplicitamente la versione 1.12 per non entrare in conflitto con i requisiti di tensorflow.

  2. Eseguire MetaEditor e assicurarsi che Python sia riconosciuto in Strumenti -> Opzioni -> Compilatori:



    Se necessario, specificare il percorso da soli, se l'editor non è in grado di rilevarlo da solo.

  3. Il terminale di trading deve essere collegato a un server con EURUSD (ad esempio, MetaQuotes-Demo)

    Assicurarsi che l'integrazione con Python sia abilitata nelle impostazioni del terminale. Se era disattivata, attivatela e riavviate il terminale:




  4. Andare al progetto ONNX.Price.Prediction nel navigatore e aprire il file PricePredictionTraning.py.


  5. Eseguire lo script per la compilazione, che per uno script Python significa avviare.

    Lo script si connetterà al terminale con l'aiuto del pacchetto MetaTrader5 (se è spento, si avvierà automaticamente) e inizierà l'addestramento su EURUSD, H1:


    Al termine, l'editor del Journal conterrà:
    .
    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
    
    Il nuovo model.onnx sarà salvato/aggiornato nel progetto. Può già essere utilizzato.

  6. Eseguire lo script PricePrediction.py per assicurarsi che il modello funzioni:
    .
    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. L'esempio di prova ha funzionato!


Si tratta di un esempio creato appositamente per dimostrare l'addestramento e l'esecuzione dei modelli.

È possibile convertire i propri modelli TensorFlow in formato ONNX utilizzando i pacchetti python onnx e tf2onnx:

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

ps: utilizzare l'ultima versione del progetto, poiché i prototipi delle funzioni sono cambiati nella vecchia versione.
 

Ha funzionato.

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. Inserire Python 3 (ad esempio Python 3.10) e consegnare/aggiornare i pacchetti:
    Pacchetto onnx con una menzione esplicita della versione 1.12 per non entrare in conflitto con i requisiti di tensorflow.

Non è stato possibile installare questo pacchetto. Prima richiedeva l'installazione di CMake. Ora richiede l'installazione di Visual Studio?

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

Non è stato possibile installare questo pacchetto. Prima hanno chiesto di installare CMake. E ora richiedono l'installazione di Visual Studio?

Siete ancora all'inizio della lotta contro l'inferno delle incompatibilità reciproche e della creazione di ambienti separati per le attività in Python.

Alcuni pacchetti richiedono compilatori per la compilazione di destinazione.