Nuova Piattaforma MetaTrader 5 Build 5260: Miglioramenti in Algo Forge, supporto esteso per OpenBLAS e nuove regole di ereditarietà in MQL5

 

Venerdì 5 Settembre 2025 verrà rilasciata una versione aggiornata della piattaforma MetaTrader 5.

In questa build continuiamo ad espandere la libreria di algebra lineare OpenBLAS in MQL5 con un nuovo set di funzioni. Questi metodi forniscono agli sviluppatori un ciclo di trasformazione completo, dalla preparazione preliminare della matrice al calcolo preciso e stabile dello spettro.

Inoltre, MQL5 ora impone un controllo più rigoroso sull'ereditarietà e sul sovraccarico dei metodi nelle classi e nelle strutture. Il nuovo comportamento di ereditarietà e i vincoli del compilatore aiutano a prevenire potenziali errori nella logica dell'applicazione.

Nuova Piattaforma MetaTrader 5 Build 5260: Miglioramenti in Algo Forge, supporto OpenBLAS esteso e nuove regole di ereditarietà in MQL5


Abbiamo anche migliorato la gestione dei file nei progetti Algo Forge , accelerando i calcoli hash ed eliminando i falsi rilevamenti di modifiche ai file.

Sul sito web del servizio abbiamo pubblicato la documentazione completa di MQL5 Algo Forge. Dimostra chiaramente tutte le caratteristiche e i vantaggi dell'utilizzo del sistema Git per i trader algoritmici: come esplorare i progetti, seguire pubblicazioni interessanti, collaborare e clonare repository.


Terminale Client MetaTrader 5

  1. Terminale: Corretta la visualizzazione delle impostazioni del margine nelle specifiche dei simboli di trading. In precedenza, quando veniva utilizzata la leva finanziaria variabile (ad esempio, calcolata in base al volume della posizione del conto), i parametri di margine nelle specifiche del contratto potevano essere visualizzati in modo errato.
  2. Terminale: È stato corretto l'ordinamento del book degli ordini per i simboli con prezzi negativi consentiti. Gli ordini con prezzi positivi, negativi e zero vengono ora visualizzati correttamente e nel giusto ordine. 
  3. Terminale: La guida utente del terminale ora include una nuova sezione Come il Tester Scarica i Dati Storici. Riassume i punti chiave necessari per comprendere come lo Strategy Tester funziona con lo storico di trading. Per garantire la stabilità dei calcoli, il tester carica sempre un "buffer dello storico di pre-avvio":
    • D1 e inferiori - dall'inizio dell'anno solare precedente. Questo fornisce almeno un anno di storico. Esempio: se la data di inizio del test è 01.03.2023, il terminale scaricherà i dati dal 01.01.2022. Ciò equivale a 14 mesi prima dell'inizio del test.
    • W1 - almeno 100 barre settimanali (~2 anni).
    • MN1 - almeno 100 barre mensili (~8 anni).

    Se lo storico disponibile non è sufficiente, il tester sposta automaticamente la data di inizio effettiva in avanti, al punto più vicino che soddisfa i requisiti.

    In questi casi, il test inizia dopo la data specificata dall'utente. Il log del tester mostrerà un messaggio pertinente, ad esempio:

    start time changed to 2024.03.15 00:00 to provide data at beginning
  4. MQL5: Aggiunti cinque nuovi metodi OpenBLAS nella sezione Matrix Balance , ampliando la funzionalità per le matrici quadrate. Il nuovo set di funzioni fornisce:
    • Bilanciamento della matrice per una maggiore precisione nei calcoli degli autovalori.
    • Back transformations degli autovettori.
    • Riduzione alla forma di Hessenberg e decomposizione di Schur, inclusa la generazione di matrici ortogonali.

    Questi metodi offrono agli sviluppatori un ciclo di trasformazione completo, dalla preparazione preliminare della matrice al calcolo preciso e stabile dello spettro.

    I metodi si basano sugli algoritmi LAPACK (GEBAL, GEBAK, GEHRD, ORGHR, HSEQR), garantendo elevate prestazioni e affidabilità:

    • MatrixBalance: Bilancia una matrice reale o complessa generale permutando righe e colonne e applicando trasformazioni di similarità diagonale. Il bilanciamento può ridurre la norma 1 della matrice e migliorare l'accuratezza degli autovalori e/o degli autovettori calcolati (funzione LAPACK GEBAL).
    • EigenVectorsBackward: Forma gli autovettori destro o sinistro di una matrice generale reale o complessa mediante backward transformation sugli autovettori calcolati della matrice bilanciata (funzione LAPACK GEBAK). 
    • ReduceToHessenbergBalanced: Riduce una matrice bilanciata generale reale o complessa alla forma di Hessenberg superiore mediante una trasformazione di similarità ortogonale (funzione LAPACK GEHRD).
    • ReflectHessenbergBalancedToQ: Genera la matrice ortogonale Q definita come il prodotto di riflettori elementari di ordine n generati riducendoli alla forma di Hessenberg (funzione LAPACK ORGHR).
    • EigenHessenbergBalancedSchurQ: Calcola gli autovalori di una matrice di Hessenberg e delle matrici T e Z dalla decomposizione di Schur; facoltativamente calcola la fattorizzazione di Schur di una matrice di input ridotta alla forma di Hessenberg (funzione LAPACK HSEQR).


  5. MQL5: aggiunti due nuovi metodi nella sezione Eigen Values. Entrambe le funzioni calcolano in modo efficiente gli autovettori dopo la decomposizione di Schur, completando l'intero set di strumenti di algebra lineare in MQL5:

    • EigenVectorsTriangularZ: Calcola gli autovettori di una matrice quasi triangolare superiore reale o di una matrice triangolare superiore complessa (forma di Schur). Utilizza la decomposizione A = Q · T · Qᴴ (funzione LAPACK TREVC). Fornisce elevata precisione.
    • EigenVectorsTriangularZBlocked: Versione a blocchi per il calcolo degli autovettori di una matrice quasi triangolare superiore reale o di una matrice triangolare superiore complessa (funzione LAPACK TREVC3). Più veloce ma non così preciso.


  6. MQL5: Introdotta un'importante modifica nell'ereditarietà con la nuova regola di occultamento del metodo

    In precedenza, se una classe o una struttura derivata definiva un metodo con lo stesso nome della classe base, veniva eseguito un overload (sovraccarico): tutte le versioni (sia della classe madre che di quella figlia) erano disponibili nella classe derivata. Ora, i metodi con lo stesso nome in una classe derivata nascondono i metodi della classe base (occultamento del metodo).

    Per chiamare un metodo di classe base nascosto, è necessario specificarne esplicitamente l'ambito quando lo si chiama:
    class Base
      {
    public: 
       void Print(int x)   { ::Print("Base int: ", x); }
       void Print(double y){ ::Print("Base double: ", y); }
      };
    
    class Derived : public Base
      {
    public:
       void Print(string s){ ::Print("Derived string: ", s); }
      };
    
    void OnStart()
      {
       Derived d;
       d.Print("text");    // call of Derived::Print(string)
       d.Print(10);        // ATTENTION! Calling Derived::Print(string) since Base::Print is hidden (inaccessible)
       d.Base::Print(10);  // explicit call to hidden parent method
      }
    Per un certo periodo, il compilatore MQL5 emetterà un avviso se un metodo di base nascosto corrisponde meglio ai parametri di chiamata rispetto al metodo derivato disponibile. Esempio per il codice sopra d.Print(10):
    la chiamata si risolve in 'void Derived::Print(string)' invece di 'void Base::Print(int)' a causa delle nuove regole di occultamento del metodo
       vedere la dichiarazione della funzione 'Derived::Print'
       vedere la dichiarazione della funzione 'Base::Print'
    conversione implicita da 'numero' a 'stringa'

  7. MQL5: Aggiunto l'operatore using per ripristinare i sovraccarichi dei metodi della classe base.

    Per controllare il nuovo comportamento, MQL5 introduce l'operatore 'using'. Consente di "estrarre" tutti i sovraccarichi di un metodo dal tipo base nell'ambito di una classe o struttura:
    class Base
      {
    protected:
       void Print(int x)   { ::Print("Base int: ", x); }
       void Print(double y){ ::Print("Base double: ", y); }
      };
    
    class Derived : public Base
      {
    public:
       void Print(string s){ ::Print("Derived string: ", s); }
       using Base::Print;  // return Print overloads from Base
      };
    
    void OnStart()
      {
       Derived d;
       d.Print("text");   // Derived::Print(string)
       d.Print(42);       // Base::Print(int)
       d.Print(3.14);     // Base::Print(double)
      }
    Se 'using Base::Print;' viene rimosso, le chiamate a d.Print(42) e d.Print(3.14) non saranno disponibili; rimarrà solo Derived::Print(string).

    Inoltre, in questo esempio, è possibile vedere che i metodi protetti della classe base diventano accessibili nella classe derivata (la loro visibilità cambia da protetta a pubblica).

    Ciò offre agli sviluppatori un controllo più flessibile e prevedibile sulle gerarchie delle classi, consentendo loro di definire con precisione quali sovraccarichi dei metodi delle classi base devono rimanere accessibili nei tipi derivati.

  8. MetaEditor: Calcoli hash SHA-1 accelerati per operazioni Git in Algo Forge. I miglioramenti delle prestazioni superano il 40% per le operazioni in blocco.
  9. MetaEditor: Corretti i controlli di modifica dei file per le operazioni Git. Se cambia solo l'ora di modifica ma il contenuto del file rimane lo stesso, il file non viene più considerato modificato. In questo modo si eliminano i falsi rilevamenti e si prevengono i conflitti con i repository remoti.
  10. Algo Forge: Pubblicata la Guida Utente MQL5 Algo Forge. Evidenzia tutti i principali vantaggi di Git senza inutili complessità:
    • archiviazione affidabile della cronologia delle versioni e ramificazione,
    • sperimentazione rapida e fusione sicura dei cambiamenti,
    • crea il tuo repository o forka i progetti di altri sviluppatori con un clic,
    • collaborazione di squadra trasparente con contributi tracciati,
    • un catalogo di progetti aperti con l'opportunità di imparare dagli altri.


    Clonazione del Progetto di un Altro Sviluppatore
    Apri il progetto che vuoi clonare su forge.mql5.io e fai clic su Fork. Inserisci un nome e una descrizione per il fork e salva.

    Clonazione di un progetto

    In MetaEditor, utilizzando lo stesso account MQL5, eseguire il comando Refresh nel Navigatore. Il fork apparirà nella cartella Progetti Condivisi . Scaricalo da Algo Forge utilizzando Git Clone. Riceverai non solo i file del progetto, ma anche la cronologia completa dei commit e tutti i branche. Ciò significa che puoi continuare a lavorare sul fork mantenendo comunque l'intera cronologia del progetto clonato.  

    Comando Git Clone in Algo Forge

  11. Aggiunta la traduzione dell'interfaccia del terminale in Irlandese.
  12. Traduzioni dell'interfaccia utente aggiornate.


Terminale Web

  1. Visualizzazione corretta delle sessioni di trading e quotazione nelle specifiche del simbolo.
  2. Corretta la visualizzazione delle impostazioni del margine nelle specifiche del simbolo.
  3. Visualizzazione corretta delle sessioni di trading e quotazione nelle specifiche del simbolo.
  4. Aggiunto il supporto per il tipo di conto Contest. Tali conti sono visualizzati in blu, mentre i conti demo sono visualizzati in verde.
  5. Precisione corretta dei calcoli del margine in leva variabile in determinate condizioni. 
  6. Risolto un problema che si verificava quando si apriva un nuovo account, per cui il pulsante Avanti a volte non consentiva di procedere al passaggio successivo.
  7. Risolto un problema per cui non era possibile piazzare un ordine limite tra i prezzi Bid e Ask per l'esecuzione Exchange.
  8. Visualizzazione corretta dei prezzi di esecuzione degli ordini. Una volta inviato un ordine, i risultati della sua esecuzione appaiono nella finestra — operazione di trade avvenuta con successo o il motivo per cui non è stata eseguita. In alcuni casi, il prezzo di esecuzione veniva erroneamente indicato come "0".
  9. Risolto un problema per cui il pulsante di chiusura rapida della posizione non veniva visualizzato.

    Pulsante di chiusura posizione

  10. Corretta la visualizzazione delle valute dei conti di trading nella finestra di selezione del conto.


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

MQL5 Algo Forge - Ultimate Git Platform for Developers | Build your Software
MQL5 Algo Forge - Ultimate Git Platform for Developers | Build your Software
  • MQL5 Algo Forge - trader's community
  • forge.mql5.io
MQL5 Algo Trading community features uniques services for users of MetaTrader 5 and MetaTrader 4 trading platforms