Nuova piattaforma MetaTrader 5 build 3980: Migliorie e correzioni

MetaQuotes  

La versione aggiornata della piattaforma MetaTrader 5 verrà rilasciata giovedì 21 settembre 2023. Presenta una serie di correzioni e miglioramenti della piattaforma.

Nuova piattaforma MetaTrader 5 build 3980: Migliorie e correzioni


Terminale Client MetaTrader 5 build 3980

  1. Terminale: Miglioramenti al report di trading . Corretta la visualizzazione del valore totale degli swap e del grafico dei profitti per simboli.
  2. Terminale: Ottimizzate le pagine di deposito e prelievo. Per ulteriori dettagli sull'integrazione della nuova piattaforma con i sistemi di pagamento, leggere le note di rilascio della build 3950.
  3. Terminale: Ricalcolo ottimizzato delle operazioni finanziarie sull'intera piattaforma, incluso il tester della strategia. Ora il profitto, i margini e molti altri parametri vengono calcolati più velocemente.
  4. Terminale: Traduzioni dell'interfaccia utente aggiornate.
  5. MQL5: Aggiunti i metodi Conjugate per tipi complessi, vector<complex> e matrix<complex>. Implementano operazioni coniugate complesse.
    //+------------------------------------------------------------------+
    //| Funzione di avvio del programma 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)]]
       */
      }
  6. MQL5: Aggiunta la gestione degli output del modello ONNX di tipo "Sequenza delle mappe".

    Per i modelli ONNX che forniscono sequenze di mappe nel livello di output (ONNX_TYPE_SEQUENCE di ONNX_TYPE_MAP), è necessario passare un array dinamico o fisso di strutture come parametro di output. I primi due campi di questa struttura devono corrispondere ai tipi di chiave e valore ONNX_TYPE_MAP ed essere array fissi o dinamici.

    Considera il modello iris.onnx creato dal seguente script Python:
    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 = KClassificatoreVicini(n_neighbors=1)
    knn.fit(X_train, y_train)
    
    # Conversione nel formato 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_type=initial_type)
    path = data_path+"iris.onnx"
    with open(path, "wb") as f:
        f.write(onx.SerializeToString())
    Aprire il file onnx creato in MetaEditor:


    Visualizzazione del modello ONNX in MetaEditor


    La sequenza Map viene passata come "output_probability". Ha una chiave di tipo INT64 (che corrisponde a long in MQL5) e il valore di tipo float. Per ricevere dati da questo output, dichiarare la seguente struttura:
    struct MyMap
      {
       long         key[];
       float        value[];
      };
    Qui abbiamo utilizzato array dinamici con tipi appropriati. In questo caso, possiamo utilizzare array fissi perché la mappa per questo modello contiene sempre 3 coppie chiave+valore.

    Poiché viene restituita la sequenza Map, un array di queste strutture dovrebbe essere passato come parametro per ricevere i dati dall'output output_probability. Questo array può essere dinamico o fisso, in base alle proprietà di un particolare modello. Esempio:
    //--- dichiara un array output_probability per ricevere dati dal livello di output 
    MyMap output_probability[];
    
    ...
    
    //--- modello in funzione
    OnnxRun(model,ONNX_DEBUG_LOGS,float_input,output_label,output_probability);
  7. MetaEditor: Corretta la visualizzazione dei tipi di output nel visualizzatore di modelli ONNX.

Terminale Web MetaTrader 5 build 3980

  1. Aggiunta la sezione Contatta il Broker nel menu principale del terminale web.
  2. Aggiunta la gestione degli errori per le autenticazioni SSL. Questo tipo di autenticazione non è supportato nel terminale web. In alternativa è possibile utilizzare Password monouso.
  3. Risolto il problema con il collegamento per il download della piattaforma desktop nel menu principale.
  4. Risolto il problema con la finestra di dialogo di gestione degli account. Se il broker non fornisce l’opzione di apertura del conto demo o reale, la relativa voce di menu verrà nascosta.


L'aggiornamento sarà disponibile attraverso il sistema Live Update.

Motivazione: