Nuova Piattaforma MetaTrader 5 build 5200: Supporto OpenBLAS esteso e controllo migliorato in MQL5

 

Venerdì 1° Agosto 2025 verrà rilasciata una versione aggiornata della piattaforma MetaTrader 5.

In questa versione abbiamo notevolmente ampliato il supporto per la libreria di algebra lineare OpenBLAS in MQL5, aggiungendo quasi trenta nuove funzioni. Questi miglioramenti offrono maggiori capacità per lo sviluppo di Expert Advisor che utilizzano l'apprendimento automatico.

Inoltre, MQL5 ora offre controlli più rigorosi per garantire la qualità dei programmi sviluppati. I nuovi controlli e vincoli del compilatore aiutano a prevenire potenziali errori nel comportamento dell'applicazione.

Nuova piattaforma MetaTrader 5 Build 5200: Supporto OpenBLAS esteso e controllo migliorato in MQL5

La piattaforma desktop introduce anche la commutazione automatica dell'interfaccia in base alle impostazioni del sistema operativo - eliminando la necessità di regolarla manualmente.


Terminale Client MetaTrader 5

  1. Terminale: Aggiunta la possibilità di applicare automaticamente il tema chiaro o scuro in base alle impostazioni di Windows. Per abilitarlo, seleziona la nuova opzione: Visualizza \ Colore del Tema \ Sistema. Ogni volta che la piattaforma viene avviata, rileverà il tema del tuo sistema e si adatterà di conseguenza.


    Aggiunta la possibilità di applicare automaticamente il tema chiaro o scuro in base alle impostazioni di Windows


  2. Terminale: Corretti i problemi di visualizzazione con le barre degli strumenti staccate dalla finestra principale.
  3. Terminale: Corretto il calcolo del valore di liquidazione del portafoglio nella sezione Asset . In alcuni casi, le posizioni per determinati strumenti non erano contabilizzate.
  4. Terminale: Corretta la visualizzazione dei prezzi negativi nella Profondità del Mercato. Ora sono ordinati correttamente.
  5. Terminale: Corretta l’importazione della cronologia dei prezzi nei simboli personalizzati. Per gli strumenti situati nella cartella radice, in precedenza i comandi corrispondenti potevano non essere disponibili.
  6. MQL5: Aggiunti nuovi metodi OpenBLAS :

    Riduzioni di Matrice

    • ReduceToHessenberg — riduce una matrice generale A n per n reale o complessa alla forma di Hessenberg superiore B, mediante una trasformazione di similarità ortogonale: Q**T * A * Q = H. Funzione LAPACK GEHRD.
    • Genera la matrice ortogonale Q definita come il prodotto di n-1 riflettori elementari di ordine n, come restituito da ReduceToHessenberg: Q = H(1) H(2) . . . H(n-1). Funzione LAPACK ORGHR.

    Autovalori e Autovettori

    • EigenHessenbergSchurQ — calcola gli autovalori di una matrice di Hessenberg H e delle matrici T e Z dalla decomposizione di Schur H = Z T Z**T, dove T è una matrice quasi triangolare superiore (la forma di Schur) e Z è la matrice ortogonale dei vettori di Schur. Funzione LAPACK HSEQR.

    Equazioni Lineari

    • SylvesterEquationTriangular — risolve l'equazione di Sylvester per matrici reali quasi triangolari o triangolari complesse: op(A)*X + X*op(B) = scale*C o op(A)*X - X*op(B) = scale*C dove op(A) = A o A**T o A**H, e A e B sono entrambi triangolari a blocchi superiori (se reali quasi triangolari) o triangolari superiori (per complesse). Funzione LAPACK TRSYL.
    • SylvesterEquationTriangularBlocked — risolve l'equazione di Sylvester per matrici reali quasi triangolari o triangolari complesse: op(A)*X + X*op(B) = scale*C o op(A)*X - X*op(B) = scale*C dove op(A) = A o A**T o A**H, e A e B sono entrambe triangolari superiori. Funzione LAPACK TRSYL3. Questa è la versione a blocchi (livello BLAS 3) di TRSYL. Più veloce fino a 5 volte, ma non così precisa.

    Calcoli Fattorizzati

    • SylvesterEquationSchur — risolve l'equazione di Sylvester per matrici triangolari complesse o quasi triangolari reali: A*X + X*B = C dove A e B sono entrambi triangolari superiori. A è m per m e B è n per n; il lato destro C e la soluzione X sono m per n. Funzione LAPACK TRSYL.
    • SylvesterEquationSchurBlocked — risolve l'equazione di Sylvester per matrici triangolari complesse o quasi triangolari reali: A*X + X*B = C dove A e B sono entrambi triangolari superiori. A è m per m e B è n per n; il lato destro C e la soluzione X sono m per n. Funzione LAPACK TRSYL3. Questa è la versione a blocchi (livello BLAS 3) di TRSYL. Più veloce fino a 5 volte, ma non così precisa.

    Calcoli della Norma Matriciale

    • MatrixNorm — restituisce il valore della norma 1, della norma infinita, della norma di Frobenius o il valore assoluto più grande di qualsiasi elemento di una matrice rettangolare generale. Funzione LAPACK LANGE.
    • MatrixNormGeTrid — restituisce il valore della norma 1, della norma infinita, della norma di Frobenius o il valore assoluto più grande di qualsiasi elemento di una matrice tridiagonale generale. Funzione LAPACK LANGT.
    • MatrixNormHessenberg — restituisce il valore della norma 1, della norma infinita, della norma di Frobenius o il valore assoluto più grande di qualsiasi elemento di una matrice di Hessenberg superiore. Funzione LAPACK LANHS.
    • MatrixNormSy — restituisce il valore della norma 1, della norma infinita, della norma di Frobenius o il valore assoluto più grande di qualsiasi elemento di una matrice reale simmetrica o Hermitiana complessa. Funzioni LAPACK LANSY, LANHE.
    • MatrixNormComplexSy — restituisce il valore della norma 1, della norma infinita, della norma di Frobenius o il valore assoluto più grande di qualsiasi elemento di una matrice simmetrica complessa (non Hermitiana). Funzione LAPACK LANSY.
    • MatrixNormSyTrid — restituisce il valore della norma 1, della norma infinita, della norma di Frobenius o il valore assoluto più grande di qualsiasi elemento di una matrice tridiagonale Hermitiana simmetrica reale o complessa. Funzioni LAPACK LANST, LANHT.
    • MatrixNormTriangular — restituisce il valore della norma 1, della norma infinita, della norma di Frobenius o il valore assoluto più grande di qualsiasi elemento di una matrice trapezoidale m per n o triangolare. Funzione LAPACK LANTR.

    Classificazione della Matrice

    • IsSymmetric: verifica se una matrice quadrata è simmetrica.
    • IsHermitian — verifica se una matrice quadrata complessa è Hermitiana.
    • IsUpperTriangular — verifica se una matrice quadrata è triangolare superiore.
    • IsLowerTriangular — verifica se una matrice quadrata è triangolare inferiore.
    • IsTrapezoidal — verifica se una matrice m per n rettangolare (non quadrata) è trapezoidale superiore o inferiore.
    • IsUpperHessenberg — verifica se una matrice quadrata è una matrice di Hessenberg superiore.
    • IsLowerHessenberg — verifica se una matrice quadrata è una matrice di Hessenberg inferiore.
    • IsTridiagonal — verifica se una matrice quadrata è tridiagonale.
    • IsUpperBidiagonal — verifica se una matrice quadrata è bidiagonale superiore.
    • IsLowerBidiagonal — verifica se una matrice quadrata è bidiagonale inferiore.
    • IsDiagonal — verifica se una matrice quadrata è diagonale.
    • IsScalar — verifica se una matrice quadrata è una matrice scalare.

  7. MQL5: Aggiunto il metodo Conjugate per matrici e vettori complessi. Questo metodo cambia il segno della parte immaginaria di un numero complesso e restituisce la matrice o il vettore modificato.
  8. MQL5: Regole rafforzate per nascondere i metodi. Quando una classe derivata contiene un metodo con lo stesso nome di uno nella classe base, la versione della classe derivata viene ora chiamata per impostazione predefinita. Per chiamare esplicitamente il metodo della classe base, ora è necessario un qualificatore:
    struct A
      {
       int y;
      
       string func(double x)
         {
          return(__FUNCSIG__);
         }
      };
      
    struct B : public A
      {
       string func(int x)   // the method hides A::func
         {
          return(__FUNCSIG__);
         }
      };
      
    void OnStart(void)
      {
       B b;
       b.func(M_PI);          // according to new rules, it is a call to B::func
       b.A::func(M_PI);       // call the hidden method A::func
      }
    Questa modifica semplifica la leggibilità del codice ed elimina l'ambiguità che in precedenza era accompagnata solo da un avvertimento del compilatore.

    In precedenza, la compilazione generava un avviso:
    comportamento deprecato, la chiamata al metodo nascosto verrà disabilitata in una futura versione del compilatore MQL
    Questa modifica è ora entrata in vigore.

    Per alcune build, nel registro verrà comunque visualizzato un avviso se è disponibile un metodo nascosto più adatto in base ai parametri:
    la chiamata si risolve in 'string B::func(int)' invece di 'string A::func(double)' a causa delle nuove regole di occultamento del metodo
       vedere la dichiarazione della funzione 'B::func'
       vedere la dichiarazione della funzione 'A::func'
    troncamento del valore costante da 'double(3.141592653589793)' a 'int(3)'
  9. MQL5: Ora sono vietati i nomi duplicati all'interno dello stesso ambito. Ad esempio, in precedenza era possibile dichiarare un parametro di input e una funzione con lo stesso nome all'interno di un singolo file. Tale duplicazione non è più consentita:
    input int somename=42;
    
    int somename(int x)
      {
       return(42);
      }
  10. MQL5: Aggiunto un controllo rigoroso del tipo, per i valori predefiniti nelle enumerazioni. Per i parametri delle funzioni che accettano una enum, ora non solo il valore, ma anche il tipo esatto deve corrispondere:
    int somename(ENUM_TIMEFRAMES TF=PERIOD_CURRENT);
    
    int somename(ENUM_TIMEFRAMES TF=0)   // error, type mismatch for the default parameter value, despite having the same value
      {
       return(42);
      }
  11. MQL5: Ora è vietato l'uso di identificatori identici in enumerazioni diverse. Un identificatore dichiarato in un'enumerazione non può più essere riutilizzato in un'altra all'interno dello stesso ambito:
    enum A
      {
       Value
      };
      
    enum B
      {
       Value  // error, name 'Value' is already used in enumeration A
      };
      
    void OnStart(void)
      {
       enum C
         {
          Value // OK, 'Value' is not used within the OnStart scope
         };
      }
    I nomi corrispondenti possono essere utilizzati in ambiti diversi.

  12. MQL5: Sono stati introdotti requisiti più rigorosi per le funzioni di inizializzazione dei template. Quando si creano matrici/vettori utilizzando le funzioni di inizializzazione, le seguenti funzionalità sono ora disabilitate:

    • Deduzione automatica del tipo nelle funzioni template
    • Valori dei parametri predefiniti

    Tutti i parametri e gli argomenti del template devono ora essere specificati esplicitamente: 
    template<typename T>
    void Initializer(matrix<T>& mat,int method=0);
    
    matrix<double> A(10,10,Initializer,42);          // error, Initializer must be explicitly typed
    matrix<double> A(10,10,Initializer<double>);     // error, missing 'method' parameter (default values no longer supported)
    matrix<double> A(10,10,Initializer<double>,42);  // OK
  13. MQL5: Supporto ONNX migliorato. Aggiunta la conversione implicita dei tipi con segno durante il passaggio di array ulong alle funzioni, semplificando l'integrazione MQL5 con i modelli ONNX.
    OnnxSetInputShape(…, ulong_array);
    OnnxSetOutputShape(…, ulong_array);
  14. MQL5: Corretta la visualizzazione dei tipi negli avvisi del compilatore relativi alle conversioni implicite di stringhe.
  15. MQL5: Pacchetto di integrazione Python aggiornato. Per installare l'aggiornamento, eseguire il comando:
    pip install --upgrade MetaTrader5
  16. MetaEditor: Corretto il comando "Ripristina Revisione" utilizzato con MQL5 Storage. La valutazione dei conflitti tra le versioni che possono verificarsi durante un'operazione di ripristino viene ora eseguita prima dell'inizio dell'operazione. Se il ripristino non è possibile, l'operazione viene annullata.
  17. Tester: Corretta la funzione OrderCalcMargin per gli account con modalità di calcolo Exchange.
  18. Tester: Corretto il passaggio da un grafico all'altro durante i test visivi degli Expert Advisor multivaluta.
  19. Traduzioni dell'interfaccia utente aggiornate.

Terminale Web MetaTrader 5

  1. Corretta la verifica dell'e-mail durante la demo e la registrazione preliminare dell'account. In alcuni casi il campo di inserimento del codice di conferma non veniva visualizzato.
  2. Corretti i problemi di connessione all'account quando si utilizza il browser sui dispositivi Huawei.
  3. Corretto il problema di connessione agli account quando si utilizzano password monouso. In alcuni casi, al primo tentativo di accesso mancava il campo di inserimento dell'OTP.


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