MetaTrader 5 Build 3980 : Améliorations et corrections

Améliorations du nouveau rapport de trading. Correction de l'affichage de la valeur totale des swaps et du tableau des profits par symboles

21 septembre 2023

Terminal

  1. Améliorations du nouveau rapport de trading. Correction de l'affichage de la valeur totale des swaps et du tableau des profits par symboles.
  2. Pages de dépôt et de retrait optimisées. Pour plus de détails sur l'intégration de la nouvelle plateforme avec les systèmes de paiement, veuillez lire les notes de mise à jour de la version 3950.
  3. Optimisation des recalculs des opérations financières sur l'ensemble de la plateforme, y compris dans le testeur de stratégie. Désormais, les bénéfices, les marges et de nombreux autres paramètres sont calculés plus rapidement.
  4. Mise à jour des traductions de l'interface utilisateur.

MQL5

  1. Ajout des méthodes Conjugate pour les types complex, vector<complex> et matrix<complex>. Elles implémentent les opérations de conjugaison de complexes.
    //+------------------------------------------------------------------+
    //| Fonction de démarrage du programme de script                     |
    //+------------------------------------------------------------------+
    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. Ajout du traitement des sorties du modèle ONNX du type "Séquence de cartes".

    Pour les modèles ONNX qui fournissent des séquences de cartes dans la couche de sortie (ONNX_TYPE_SEQUENCE de ONNX_TYPE_MAP), un tableau dynamique ou fixe de structures doit être transmis comme paramètre de sortie. Les deux premiers champs de cette structure doivent correspondre aux types de clé et de valeur ONNX_TYPE_MAP et être des tableaux fixes ou dynamiques.

    Considérons le modèle iris.onnx créé par le code Python suivant :
    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)
    
    # Conversion en format ONNX
    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())
    Ouvre le fichier onnx créé dans MetaEditor :

    Visualisation du modèle ONNX dans MetaEditor


    La séquence Map est transmise dans "output_probability". Elle possède une clé de type INT64 (qui correspond au type long dans MQL5) et une valeur de type float. Pour obtenir les données de cette sortie, il faut déclarer la structure suivante :
    struct MyMap
      {
       long              key[];
       float             value[];
      };
    Nous avons utilisé ici des tableaux dynamiques avec les types correspondants. Dans ce cas, nous pouvons utiliser des tableaux fixes car la carte de ce modèle contient toujours 3 paires clé+valeur.

    Étant donné que la séquence Map est renvoyée, un tableau de structures de ce type doit être transmis en paramètre pour récupérer les données de la sortie output_probability. Ce tableau peut être dynamique ou fixe, en fonction des propriétés d'un modèle particulier. Exemple :
    //--- déclaration du tableau pour récupérer les données de la couche de sortie output_probability
    MyMap output_probability[] ;
    
    ...
    
    //--- modèle en cours d'exécution
    OnnxRun(model,ONNX_DEBUG_LOGS,float_input,output_label,output_probability);

MetaEditor

  1. Correction de l'affichage des types de sortie dans le visualisateur de modèle ONNX.

Terminal Web

  1. Ajout d'une section "Contacter le Courtier" dans le menu principal du Terminal Web.
  2. Ajout d'une gestion des erreurs pour les authentifications SSL. Ce type d'authentification n'est pas pris en charge par le Terminal Web. Des mots de passe à usage unique peuvent être utilisés à la place.
  3. Correction du lien de téléchargement de la plateforme de bureau dans le menu principal.
  4. Correction de la boîte de dialogue de gestion des comptes. Si le courtier ne propose pas l'option pour ouvrir un compte de démo ou un compte réel, l'élément correspondant du menu sera masqué.