MetaTrader 5 build 3980: Verbesserungen und Korrekturen

Neue Verbesserungen im Handelsbericht. Die Anzeige des Gesamtwerts der Swaps und des Gewinndiagramms nach Symbolen wurde korrigiert

21 September 2023

Terminal

  1. Neue Verbesserungen im Handelsbericht. Die Anzeige des Gesamtwerts der Swaps und des Gewinndiagramms nach Symbolen wurde korrigiert.
  2. Optimierte Ein- und Auszahlungsseiten. Weitere Einzelheiten über die Integration von Zahlungssystemen in der neue Plattform finden Sie in den Versionshinweisen zu Build 3950.
  3. Optimierte Neuberechnungen von Finanzoperationen auf der gesamten Plattform, einschließlich des Strategieprüfers. Jetzt werden Gewinn, Margen und viele andere Parameter schneller berechnet.
  4. Aktualisierte Übersetzungen der Nutzeroberfläche.

MQL5

  1. Konjugierte Methoden für komplexe, vector<complex> und matrix<complex> Typen wurden hinzugefügt. Es können Konjugationen komplexer Zahlen durchgeführt werden.
    //+------------------------------------------------------------------+
    //| Skript Programm Start Funktion                                   |
    //+------------------------------------------------------------------+
    void OnStart()
      {
       complex a=1+1i;
       complex b=a.Conjugate();
       Print(a, "  ", b);
       /*
       (1,1)  (1,-1)
       */
    
       vectorc va= {0.1+0.1i, 0.2+0.2i, 0.3+0.3i};
       vectorc vb=va.Conjugate();
       Print(va, "  ", vb);
       /*
       [(0.1,0.1),(0.2,0.2),(0.3,0.3)]  [(0.1,-0.1),(0.2,-0.2),(0.3,-0.3)]
       */
    
       matrixc ma(2, 3);
       ma.Row(va, 0);
       ma.Row(vb, 1);
       matrixc mb=ma.Conjugate();
       Print(ma);
       Print(mb);
       /*
       [[(0.1,0.1),(0.2,0.2),(0.3,0.3)]
        [(0.1,-0.1),(0.2,-0.2),(0.3,-0.3)]]
    
       [[(0.1,-0.1),(0.2,-0.2),(0.3,-0.3)]
        [(0.1,0.1),(0.2,0.2),(0.3,0.3)]]
       */
       
       ma=mb.Transpose().Conjugate();
       Print(ma);
       /*
       [[(0.1,0.1),(0.1,-0.1)]
        [(0.2,0.2),(0.2,-0.2)]
        [(0.3,0.3),(0.3,-0.3)]]
       */
      }
  2. Die Übergabe der Ausgaben von ONNX-Modellen des Typs ‚Sequence of maps‘ wurde hinzugefügt.

    Für ONNX-Modelle, die Map-Sequenzen in der Ausgabeschicht bereitstellen (ONNX_TYPE_SEQUENCE von ONNX_TYPE_MAP), sollte ein dynamisches oder festes Array von Strukturen als Ausgabeparameter übergeben werden. Die ersten beiden Felder dieser Struktur müssen den Schlüssel- und Werttypen ONNX_TYPE_MAP entsprechen und feste oder dynamische Arrays sein.

    Betrachten Sie das Modell iris.onnx, das mit dem folgenden Python-Skript erstellt wurde:
    from sys import argv
    data_path=argv[0]
    last_index=data_path.rfind("\\")+1
    data_path=data_path[0:last_index]
    
    from sklearn.datasets import load_iris
    iris_dataset = load_iris()
    from sklearn.model_selection import train_test_split
    X_train, X_test, y_train, y_test = train_test_split(iris_dataset['data'], iris_dataset['target'], random_state=0)
    from sklearn.neighbors import KNeighborsClassifier
    knn = KNeighborsClassifier(n_neighbors=1)
    knn.fit(X_train, y_train)
    
    # Konvertierung ins ONNX-Format
    from skl2onnx import convert_sklearn
    from skl2onnx.common.data_types import FloatTensorType
    initial_type = [('float_input', FloatTensorType([None, 4]))]
    onx = convert_sklearn(knn, initial_types=initial_type)
    path = data_path+"iris.onnx"
    with open(path, "wb") as f:
        f.write(onx.SerializeToString())
    Öffnen Sie die erstellte onnx-Datei in MetaEditor:

    Ansicht des ONNX-Modells in MetaEditor


    Die Map-Sequenz wird als "output_probability" übergeben. Sie verfügt über einen Schlüssel vom Typ INT64 (entspricht long in MQL5) und den Wert vom Typ float. Um Daten von diesem Ausgang zu erhalten, deklarieren Sie die folgende Struktur:
    struct MyMap
      {
       long              key[];
       float             value[];
      };
    Hier haben wir dynamische Arrays mit entsprechenden Typen verwendet. In diesem Fall können wir feste Arrays verwenden, da die Map für dieses Modell immer 3 Schlüssel/Wertpaare enthält.

    Da die Map-Sequenz zurückgegeben wird, sollte ein Array solcher Strukturen als Parameter für den Empfang von Daten von output_probability output übergeben werden. Diese Anordnung kann dynamisch oder fest sein, je nach den Eigenschaften eines bestimmten Modells. Beispiel:
    //--- ein Array deklarieren, um Daten von der Ausgabeschicht output_probability zu erhalten
    MyMap output_probability[];
    
    ...
    
    //--- Modell läuft
    OnnxRun(model,ONNX_DEBUG_LOGS,float_input,output_label,output_probability);

MetaEditor

  1. Die Anzeige der Ausgabetypen im ONNX-Modellbetrachter wurde korrigiert.



MetaTrader 5 Web Terminal build 3980

  1. Im Hauptmenü des Web-Terminals wurde der Abschnitt „Contact Broker“ hinzugefügt.
  2. Fehlerbehandlung für SSL-Authentifizierungen hinzugefügt. Diese Authentifizierungsart wird im Webterminal nicht unterstützt. Stattdessen können Einmal-Passwörter verwendet werden.
  3. Der Download-Link für die Desktop-Plattform im Hauptmenü wurde korrigiert.
  4. Der Dialog zur Kontoverwaltung wurde korrigiert. Wenn der Broker die Option zur Eröffnung eines Demo- oder Realkontos nicht anbietet, wird der entsprechende Menüpunkt ausgeblendet.