Nuova Piattaforma MetaTrader 5 build 5100: Transizione a Git e MQL5 Algo Forge, hub per sviluppatori, tema scuro e miglioramenti dell'interfaccia

 

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

In questa versione abbiamo notevolmente rinnovato l'editor del codice sorgente di MetaEditor. Il sistema di controllo integrato delle versioni, MQL5 Storage, è stato migrato da Subversion a Git – lo standard globale per gli sviluppatori, offrendo maggiore affidabilità e flessibilità nella gestione del codice. Con la transizione a Git, stiamo introducendo MQL5 Algo Forge, un nuovo portale online per la gestione dei progetti. Non si tratta semplicemente di un elenco di progetti, ma di un vero e proprio social network per sviluppatori. Segui sviluppatori interessanti, crea team e collabora ai progetti senza sforzo.

Inoltre, tutti i componenti della piattaforma ora supportano un'interfaccia in modalità scura, offrendo un'esperienza utente più confortevole durante le ore notturne.


Abbiamo anche aggiunto un'opzione di noleggio VPS di 12 mesi. Acquistando in anticipo l'hosting a lungo termine, risparmi un terzo del costo totale.

Inoltre, abbiamo notevolmente ampliato il supporto per le librerie di algebra lineare OpenBLAS in MQL5, aggiungendo quasi trenta nuove funzioni.

L'aggiornamento presenta le seguenti modifiche:


Terminale client MetaTrader 5

  1. MetaEditor: Abbiamo rivisto completamente MQL5 Storage, sostituendo Subversion con Git come sistema di controllo delle versioni. Git è lo standard globale per gli sviluppatori, che offre maggiore affidabilità e flessibilità nella gestione del codice.

    • Ramificazione e unione flessibili - crea rami separati per nuove funzionalità o esperimenti e li unisce facilmente alla versione principale del progetto.
    • Operazioni di repository più veloci - a differenza di Subversion, Git memorizza tutti i dati localmente, rendendo i commit, il cambio di versione e i confronti delle modifiche significativamente più rapidi.
    • Capacità di lavoro offline - non è necessaria una connessione costante al server: esegui il commit delle modifiche localmente e inviale a un repository online quando preferisci.
    • Tracciamento avanzato delle modifiche - esamina facilmente la cronologia delle versioni, monitora le modifiche con timestamp e gli autori e ripristina le versioni precedenti senza complicazioni.
    • Funzionalità di unione superiore - strumenti avanzati di confronto e unione aiutano a ridurre al minimo i conflitti e a snellire lo sviluppo collaborativo.

    Un nuovo livello di sviluppo collaborativo
    Con il passaggio a Git, stiamo introducendo MQL5 Algo Forge, un nuovo portale online per la gestione dei progetti. Più di un semplice elenco di progetti, si tratta di un vero e proprio social network per sviluppatori - in sostanza, GitHub per i trader algoritmici. Segui sviluppatori interessanti, crea team e collabora ai progetti senza sforzo.




    Visualizza i dettagli del progetto: struttura, file, commit, rami e altro ancora. Tieni traccia dei contributi individuali, crea documentazione e condividi i progetti online.




    Monitora tutte le modifiche al codice: rileva le righe nuove, modificate ed eliminate. Se sorgono problemi, assegnare le attività agli sviluppatori direttamente all'interno del progetto.




    Per migliorare l'usabilità di Git, abbiamo riprogettato il Navigatore e la finestra di modifica del codice attivo. Abbiamo anche introdotto un menu Git dedicato sulla barra degli strumenti di MetaEditor:




    La documentazione completa di Git sarà disponibile a breve.

  2. MetaEditor: Aggiunto il supporto per un sistema di colori scuri per tutti i componenti, tra cui il terminale di trading, MetaEditor e il tester visivo. Il tema scuro offre un'esperienza di sviluppo più confortevole di notte. Utilizzare il menu Visualizza per cambiare:




    Adattando l'interfaccia per supportare diversi temi, abbiamo introdotto numerosi miglioramenti alla visualizzazione di dialoghi, menu, pannelli e pulsanti per offrire un'esperienza utente più confortevole. In MetaEditor, le informazioni sulla posizione del cursore e l'indicatore della modalità di immissione del testo (INS/OVR) vengono ora visualizzati nell'angolo in alto a destra. La barra di stato inferiore è stata rimossa per salvare l'area di lavoro.

  3. Terminale: Aggiunta l'opzione di noleggio VPS per 12 mesi. Acquistando in anticipo l'hosting a lungo termine, risparmi un terzo del costo totale.




  4. Terminale: Utilizzo ottimizzato della memoria. Ora il terminale consuma meno risorse di sistema, con conseguente miglioramento delle prestazioni.
  5. Terminale: Visualizzazione ottimizzata della cronologia di trading del conto. La piattaforma ora è in grado di visualizzare correttamente milioni di record.
  6. Terminale: Aggiunto il comando "Ripristina impostazioni predefinite" al menu Finestra. Ripristina tutti gli elementi dell'interfaccia, tra cui grafici, Navigatore, Strategy Tester e altri, alle loro posizioni originali.
  7. Terminale: Risolto l'errore che causava il blocco di modifica della posizione della finestra di dialogo in determinate condizioni.
  8. Terminale: Corretto il calcolo del valore per posizioni aperte con prezzi negativi.
  9. Terminale: Corretto il calcolo del tasso di margine nelle specifiche dei simboli di trading con prezzi negativi.
  10. Terminale: Corretto il calcolo dei valori MFE e MAE correnti e la visualizzazione dei loro grafici nei report di trading.
  11. Terminale: Risolto il problema del ridimensionamento degli oscillatori nelle sottofinestre del grafico. La scala verticale degli oscillatori ora viene visualizzata correttamente.
  12. Terminale: Risolto il problema della visibilità dell’order book e delle schede opzionali quando si passa alla modalità a schermo intero.
  13. Terminale: Aggiunta la visualizzazione del ticket della posizione nella cronologia di trading dell'account. Utilizzare il menu contestuale per abilitare la relativa colonna.
  14. Terminale: Corretto il calcolo del valore di liquidazione nella scheda Esposizione per futures e opzioni.
  15. Terminale: Risolto il problema relativo alla copia negli appunti dei dati dell'account appena creato. Durante la fase finale della registrazione dell'account demo o preliminare, all'utente vengono forniti i dettagli dell'account: login, password, ecc. È possibile copiarli negli appunti per salvarli in un file separato. Il comando corrispondente ora funziona correttamente su macOS.
  16. Terminale: Corretta la visualizzazione della sezione registro del VPS. In determinate condizioni la pagina potrebbe visualizzare un errore.
  17. Terminale: Corretto il supporto per monitor HiDPI su Linux.
  18. Terminale: Traduzioni aggiornate dell'interfaccia utente.
  19. MQL5: Aggiunto l'operatore di moltiplicazione di matrici @. Segue le regole dell'algebra lineare e consente la moltiplicazione di matrici e vettori, nonché i prodotti scalari (punto) di vettori.

    Moltiplicazione di matrici (matrice × matrice)
    matrix A(2, 3);
    matrix B(3, 2);
    matrix C = A @ B; // Result: Matrix C of size [2,2]
    Moltiplicazione di matrici (matrice × vettore)
    matrix M(2, 3);
    vector V(3);
    vector R = M @ V; // Result: Vector R of 2 elements
    Moltiplicazione di matrici (vettore x matrice)
    matrix M(2, 3);
    vector V(1, 2);
    vector R = V @ M; // Result: Vector R of 3 elements
    Moltiplicazione scalare (vettore × vettore)
    vector V1(1, 3), V2(1, 3);
    double r = V1 @ V2; // Result: Scalar
  20. MQL5: Aggiunto il parametro 'ddof' nei metodi Std, Var e Cov. Questo parametro definisce il numero di gradi di libertà sottratti al denominatore quando si calcola la deviazione standard. Per Std e Var, il parametro predefinito è 0, per Cov è 1.

    Come ddof influenza il calcolo:

    • Per impostazione predefinita, ddof=0, che significa che viene calcolata la deviazione standard della popolazione.
    • Se ddof=1, la funzione calcola la deviazione standard del campione, che si adatta alle dimensioni finite del campione, comunemente utilizzata in statistica quando si analizza un sottoinsieme di dati.

  21. MQL5: Aggiunti nuovi metodi OpenBLAS :

    Autovalori e Autovettori

    • EigenTridiagonalDC – calcola autovalori e autovettori di una matrice tridiagonale simmetrica utilizzando l'algoritmo dividi et impera (LAPACK funzione STEVD).
    • EigenTridiagonalQR – calcola autovalori e autovettori di una matrice tridiagonale simmetrica utilizzando l'algoritmo QR (LAPACK funzione STEV).
    • EigenTridiagonalRobust – calcola autovalori e autovettori di una matrice tridiagonale simmetrica utilizzando l'algoritmo MRRR (Multiple Relatively Robust Representations) (LAPACK funzione STEVR).
    • EigenTridiagonalBisect – calcola autovalori e autovettori di una matrice tridiagonale simmetrica utilizzando l'algoritmo di bisezione (LAPACK funzione STEVX).
    • ReduceToBidiagonal – riduce una matrice generale reale o complessa m per n A alla forma bidiagonale superiore o inferiore B mediante una trasformazione ortogonale: Q**T * A * P = B. Se m≥n, B è una matrice bidiagonale superiore; altrimenti, B è bidiagonale inferiore. (LAPACK funzione GEBRD).
    • ReflectBidiagonalToQP – genera matrici ortogonali Q e P**T (o P**H per i tipi complessi) determinate dal metodo ReduceToBidiagonal quando si riduce una matrice reale o complessa A alla forma bidiagonale: A = Q * B * P**T. Q e P**T sono definiti come prodotti dei riflettori elementari H(i) o G(i) rispettivamente. (LAPACK funzioni ORGBR, UNGBR).
    • ReduceSymmetricToTridiagonal – riduce una matrice hermitiana simmetrica o complessa A alla forma tridiagonale B mediante una trasformazione di similarità ortogonale: Q**T * A * Q = B. (Lapack funzioni SYTRD, HETRD).
    • ReflectTridiagonalToQ – genera la matrice ortogonale Q definita come il prodotto di n-1 riflettori elementari di ordine n, come restituito da ReduceSymmetricToTridiagonal.

    • LinearEquationsSolution – calcola la soluzione del sistema di equazioni lineari con una matrice dei coefficienti quadrata A e lati destri multipli.
    • LinearEquationsSolutionTriangular – calcola la soluzione del sistema di equazioni lineari con una matrice dei coefficienti triangolare quadrata A e lati destri multipli.
    • LinearEquationsSolutionSy – calcola la soluzione al sistema di equazioni lineari con una matrice simmetrica o hermitiana coniugata A e lati destri multipli.
    • LinearEquationsSolutionComplexSy – calcola la soluzione del sistema di equazioni lineari con una matrice simmetrica complessa A e lati destri multipli.
    • LinearEquationsSolutionGeTrid – calcola la soluzione al sistema di equazioni lineari con una matrice A definita positiva coniugata simmetrica o hermitiana e lati destri multipli.
    • LinearEquationsSolutionSyPD – calcola la soluzione al sistema di equazioni lineari con una matrice di coefficienti tridiagonale generale (non simmetrica) A e lati destri multipli.
    • LinearEquationsSolutionSyTridPD – calcola la soluzione al sistema di equazioni lineari con una matrice di coefficienti tridiagonale simmetrica definita positiva A e lati destri multipli.
    • FactorizationQR – calcola la fattorizzazione QR di una matrice m per n generale: A = Q * R (LAPACK funzione GEQRF).
    • FactorizationQRNonNeg – calcola la fattorizzazione QR di una matrice m per n generale: A = Q * R, dove R è una matrice triangolare superiore con elementi diagonali non negativi (LAPACK funzione GEQRFP).
    • FactorizationQRPivot – calcola la fattorizzazione QR di una matrice m per n generale con pivoting di colonna: A * P = Q * R (LAPACK funzione GEQP3).
    • FactorizationLQ – calcola la fattorizzazione LQ di una matrice m per n generale: A = L * Q (LAPACK funzione GELQF).
    • FactorizationQL – calcola la fattorizzazione QL di una matrice m per n generale: A = Q * L (LAPACK funzione GEQLF).
    • FactorizationRQ – calcola la fattorizzazione RQ di una matrice m per n generale: A = R * Q (LAPACK funzione GERQF).
    • FactorizationPLU – calcola una fattorizzazione LU di una matrice M per N generale A utilizzando il pivoting parziale con scambi di riga (LAPACK funzione GETRF).
    • FactorizationPLUGeTrid – calcola una fattorizzazione LU di una matrice tridiagonale generale A (non simmetrica) N per N utilizzando l'eliminazione con pivot parziale e scambi di riga (LAPACK funzione GTTRF).
    • FactorizationLDL – calcola la fattorizzazione di una matrice hermitiana reale simmetrica o complessa A utilizzando il metodo di pivot diagonale di Bunch-Kaufman (LAPACK funzioni SYTRF e HETRF).
    • FactorizationLDLSyTridPD – calcola la fattorizzazione di una matrice tridiagonale simmetrica definita positiva o per dati complessi, hermitiana definita positiva A (LAPACK funzione PTTRF).
    • FattorizzazioneCholesky – calcola la fattorizzazione di una matrice hermitiana definita positiva A reale, simmetrica o complessa (LAPACK funzione POTRF).
    • FactorizationCholeskySyPS – calcola la fattorizzazione di Cholesky con pivot completo di una matrice semidefinita positiva reale n per n simmetrica (hermitiana complessa) (LAPACK funzione PSTRF).

  22. MQL5: Aggiunta funzione Random e metodo per riempire vettori e matrici con valori casuali. I valori casuali vengono generati uniformemente all'interno dell'intervallo specificato.
    static vector vector::Random(
      const ulong   size,       // vector length
      const double  min=0.0,    // min value
      const double  max=1.0     // max value
       );
    
    static matrix matrix::Random(
      const ulong   rows,       // number of rows
      const ulong   cols        // number of columns
      const float   min=0.0,    // min value
      const float   max=1.0     // max value
       );
  23. MQL5: Aggiunto supporto per alias aggiuntivi per i tipi interi. Ciò semplificherà la portabilità del codice da altri linguaggi come C e C++.

    Questi alias non introducono nuovi tipi, ma forniscono nomi alternativi per i tipi esistenti in MQL5. Possono essere utilizzati in tutti i contesti in cui sono applicabili i tipi base.

    • int8_t
    • uint8_t
    • int16_t
    • uint16_t
    • int32_t
    • uint32_t
    • int64_t
    • uint64_t

  24. MQL5: Aggiunte nuove funzioni per il rilevamento della combinazione di colori del terminale:

    • Una nuova proprietà TERMINAL_COLORTHEME_NAME è stata aggiunta all'enumerazione ENUM_TERMINAL_INFO_STRING . Utilizzare questa proprietà con la funzione TerminalInfoString per interrogare la combinazione di colori del terminale. Valori possibili: Light e Dark.
    • Sono state aggiunte le nuove proprietà THEME_COLOR_* all'enumerazione ENUM_TERMINAL_INFO_INTEGER . Utilizzateli con la funzione TerminalInfoInteger per recuperare i colori di specifici elementi dell'interfaccia utente.

    Per rilevare una modifica nello schema dei colori, utilizzare il gestore OnChartEvent . Quando si cambia tema, l'evento CHARTEVENT_CHART_CHANGE viene attivato due volte.

  25. MQL5: Corretto un bug che causava l'arresto anomalo di MetaEditor durante la compilazione di codice contenente il metodo Array::Reserve. Il metodo 'Reserve' non modifica la dimensione dell'array, ma riserva spazio per il numero specificato di elementi per impedire la riallocazione della memoria quando si aggiungono nuovi elementi.
  26. MQL5: È stato corretto il comportamento del metodo Array::Push, che aggiunge nuovi elementi alla fine di un array. Il problema si è verificato negli array con spazio buffer preallocato.
  27. MQL5: Risolti i problemi nelle funzioni per lavorare con OpenCL.
  28. MetaTester: Accelerata l'ottimizzazione delle strategie di trading.
  29. MetaTester: Risolto un bug che, in alcuni casi, causava un utilizzo eccessivo della memoria da parte degli agenti tester durante l'esecuzione di attività dalla rete cloud MQL5.

Terminale Web MetaTrader 5

  1. È stata corretta l'opzione di salvataggio della password nella finestra di dialogo di connessione dell'account.
  2. Corretti i pulsanti per lo spostamento del grafico. In alcuni casi, l'utilizzo di questi pulsanti causava la scomparsa del grafico.
  3. Corretta la convalida per il campo "Secondo Nome" nel modulo di registrazione dell'account reale. Ora è facoltativo.
  4. Corretta l'apertura dei conti demo. In alcuni casi, gli utenti venivano reindirizzati erroneamente al sito web del broker.
  5. Corretta la visibilità dei pulsanti per l'apertura di conti demo e reali. Questi pulsanti sono ora nascosti se la rispettiva funzione è disabilitata dal broker.
  6. Corretto il comportamento del campo "Deposito" nel modulo di apertura del conto demo.
  7. Corretta la visualizzazione del campo "Trading" nelle specifiche del contratto.
  8. Corretto il campo di ricerca dei simboli nella finestra "Market Watch". Ora il pulsante "X" viene visualizzato correttamente per uscire dalla modalità di ricerca.
  9. Corretta la visualizzazione di un suggerimento per il campo del codice di conferma e-mail nel modulo di apertura del conto.


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