Maschinelles Lernen im Handel: Theorie, Modelle, Praxis und Algo-Trading - Seite 2938

 
Mikhail Mishanin #:

2023.02.28 05:27:35.269 Speicherung erfolgreich mit dem Projekt 'ONNX.Price.Prediction' verbunden

2023.02.28 05:27:56.191 Speicherung MQL5 Speicherung aktiviert

2023.02.28 05:27:56.191 Speicher Checkout für MQL5 gestartet

2023.02.28 05:27:56.635 Storage Konnte das angeforderte SVN-Dateisystem nicht finden (720003)

2023.02.28 05:28:32.432 Storage Eigentümer MQL5 Storage ist 'dinpae@gmail.com', ändern Sie das MQL5 Konto

Was bedeutet das? Verbindung kann nicht hergestellt werden.

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


Mit welchem Konto haben Sie sich bei MQL5 Storage angemeldet?

Haben Sie Ihre E-Mail oder eine exakte Groß-/Kleinschreibung als Login angegeben?

E-Mail wird nicht akzeptiert.

 
Aleksey Nikolayev #:

Klicken Sie mit der rechten Maustaste auf den Projektnamen. Es sollte so aussehen:


Ja, so etwas gibt es, aber es schreibt einen Fehler
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)
Es gibt irgendwo eine Art von Berechtigung
 
Evgeny Dyuka #:
Ja, so etwas gibt es, aber es gibt eine Fehlermeldung
. Irgendwo gibt es eine Art von Genehmigung.

Nun, ich weiß es nicht. Versuchen Sie, das Projekt zu verlassen und zu löschen, dann wieder einzutreten und eine Aktualisierung aus dem Repository zu erhalten.

Wenn Sie ein Projekt verlassen, wird dies im Protokoll vermerkt:

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

Wenn Sie es löschen, wird nichts geschrieben. Wenn Sie einem Projekt beitreten:

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

Wenn Sie eine Aktualisierung erhalten:

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

Die Autorisierung erfolgte nur beim Verbinden mit dem Projektarchiv - ohne sie ist es unmöglich, dem Projekt beizutreten.

Ich kann Ihnen nicht mehr helfen. Es sei denn, Sie haben eine alte Version - ich habe es in der neuesten (Beta und Release) gemacht.

 
Aleksey Nikolayev #:

Nun, ich weiß es nicht. Versuchen Sie, das Projekt zu verlassen und zu löschen, dann wieder einzusteigen und eine Aktualisierung aus dem Repository zu erhalten.

Wenn Sie ein Projekt im Protokoll verlassen:

Wenn Sie es löschen, wird nichts geschrieben. Wenn Sie einem Projekt beitreten:

Wenn Sie eine Aktualisierung erhalten:

Die Autorisierung erfolgte nur beim Verbinden mit dem Repository - ohne sie ist es im Grunde unmöglich, dem Projekt beizutreten.

Bei allem anderen kann ich Ihnen nicht helfen. Es sei denn, Sie haben eine alte Version - ich habe es mit der neuesten (Beta und Release) gemacht.

Ich hab's, danke
 
Evgeny Dyuka #:
Ich hab's, danke.

Für alle Fälle stelle ich das Projekt ins Archiv.

Dateien:
 
Renat Fatkhullin #:

Mit welchem Konto haben Sie sich bei MQL5 Storage angemeldet?

Haben Sie Ihre E-Mail oder eine exakte Anmeldung mit Groß- und Kleinschreibung angegeben?

E-Mail wird nicht akzeptiert.

auf Login Login, nur mein Login ist zunächst krumm, mit Punkten dr.mr.mom, ich habe vor langer Zeit, können Sie das Login ändern?

 

Freigegebene Beta 3589, mit der Sie den Betrieb von ONNX-Modellen testen können.

Schritte:

  1. Aktualisieren Sie auf 3589 über Hilfe -> Desktop-Updates prüfen -> Neueste Beta-Version

  2. Aktivieren Sie MQL5 Storage, indem Sie das korrekte MQL5-Login (nicht E-Mail) in Groß- und Kleinschreibung angeben:






  3. Wenn Sie eine beschädigte Konfiguration haben und MQL5 Storage nicht funktioniert, öffnen Sie den Explorer über Datei -> Datenordner öffnen, gehen Sie in das MQL5-Verzeichnis und löschen Sie die folgenden Dateien:


    . Fahren Sie dann mit Schritt 2 fort.

  4. Verbinden Sie das Projekt ONNX.Price.Prediction über das Kontextmenü mit dem Befehl Join.



  5. Öffnen Sie den Navigator, öffnen Sie den Abschnitt Shared Projects und rufen Sie im Kontextmenü des Projekts ONNX.Price.Prediction den Befehl Update from Storage auf:



    . Das Projekt wird vom MQL5 Storage (Subversion) heruntergeladen.

  6. Öffnen Sie das Projekt und klicken Sie auf ONNX.Price.Prediction.mqproj - dies ist die Projektdatei



  7. Kopieren Sie das Projekt und führen Sie es auf EURUSD, H1 aus.

  8. Erhalten Sie das Ergebnis:
    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. Wenn es nicht funktioniert, ist entweder eine alte Version von ONNX Runtime installiert oder es fehlt

    . In diesem Fall laden Sie das von Microsoft signierte Archiv ONNX Runtime 1.14 herunter, expandieren es in das Stammverzeichnis des Terminals neben terminal64.exe und starten das Terminal neu:

Im Projekt ist die einfachste, für das Beispiel trainierte model.onnx gleich angehängt, damit Sie die Demonstration sehen können.



Um das Modell selbst zu trainieren, müssen Sie die im Projekt enthaltenen Python-Skripte verwenden:

  1. Python 3 (z.B. Python 3.10) installieren und die Pakete ausliefern/aktualisieren:
    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
    Das onnx-Paket mit expliziter Angabe der Version 1.12, um nicht mit den Anforderungen von Tensorflow in Konflikt zu geraten.

  2. Starten Sie MetaEditor und vergewissern Sie sich, dass Python unter Tools -> Options -> Compilers erkannt wird:



    Geben Sie gegebenenfalls den Pfad selbst an, wenn der Editor ihn nicht selbst erkennen kann.

  3. Das Handelsterminal sollte mit einem Server mit EURUSD verbunden sein (z.B. MetaQuotes-Demo)

    Stellen Sie sicher, dass die Integration mit Python in den Terminaleinstellungen aktiviert ist. Falls sie ausgeschaltet war, schalten Sie sie ein und starten Sie das Terminal neu:




  4. Gehen Sie im Navigator zum Projekt ONNX.Price.Prediction und öffnen Sie die Datei PricePredictionTraning.py


  5. Führen Sie das Skript zur Kompilierung aus, was für ein Python-Skript "Start" bedeutet.

    Das Skript verbindet sich mit Hilfe des MetaTrader5-Pakets mit dem Terminal (wenn es ausgeschaltet ist, wird es automatisch gestartet) und beginnt mit dem Training für EURUSD, H1:


    . Wenn es fertig ist, enthält der Journal-Editor:
    .
    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
    
    Das neue model.onnx wird im Projekt gespeichert/aktualisiert. Es kann bereits verwendet werden.

  6. Führen Sie das Skript PricePrediction.py aus, um sicherzustellen, dass das Modell funktioniert:
    .
    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. Das Testbeispiel hat funktioniert!


Dies ist ein speziell erstelltes Beispiel, um sowohl das Training als auch die Ausführung der Modelle zu demonstrieren.

Sie können Ihre eigenen TensorFlow-Modelle mit den Python-Paketen onnx und tf2onnx in das ONNX-Format konvertieren:

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

ps: verwenden Sie die neueste Version des Projekts, da sich die Funktionsprototypen in der alten Version geändert haben.
 

Es hat funktioniert.

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. Setzen Sie Python 3 (z.B. Python 3.10) ein und liefern/aktualisieren Sie Pakete:
    Paket onnx mit expliziter Erwähnung der Version 1.12, um nicht mit den Anforderungen von Tensorflow in Konflikt zu geraten.

Dieses Paket konnte nicht installiert werden. Zuerst musste CMake installiert werden. Jetzt erfordert es die Installation von Visual Studio?

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

Ich konnte dieses Paket nicht installieren. Zuerst verlangten sie die Installation von CMake. Und jetzt verlangen sie die Installation von Visual Studio?

Sie stehen immer noch am Anfang des Kampfes gegen die Hölle der gegenseitigen Inkompatibilitäten und der Schaffung separater Umgebungen für Aufgaben in Python.

Einige Pakete erfordern Compiler für den Ziel-Build.