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.
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
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.
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.
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 to2024.03.1500:00to provide data at beginning
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).
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.
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:
voidPrint(int x) { ::Print("Base int: ", x); }
voidPrint(double y){ ::Print("Base double: ", y); }
};
class Derived : public Base
{
public:
voidPrint(string s){ ::Print("Derived string: ", s); }
};
voidOnStart()
{
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'
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:
voidPrint(int x) { ::Print("Base int: ", x); }
voidPrint(double y){ ::Print("Base double: ", y); }
};
class Derived : public Base
{
public:
voidPrint(string s){ ::Print("Derived string: ", s); }
using Base::Print; // return Print overloads from Base
};
voidOnStart()
{
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.
MetaEditor: Calcoli hash SHA-1 accelerati per operazioni Git in Algo Forge. I miglioramenti delle prestazioni superano il 40% per le operazioni in blocco.
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.
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.
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.
Aggiunta la traduzione dell'interfaccia del terminale in Irlandese.
Traduzioni dell'interfaccia utente aggiornate.
Terminale Web
Visualizzazione corretta delle sessioni di trading e quotazione nelle specifiche del simbolo.
Visualizzazione corretta delle sessioni di trading e quotazione nelle specifiche del simbolo.
Aggiunto il supporto per il tipo di conto Contest. Tali conti sono visualizzati in blu, mentre i conti demo sono visualizzati in verde.
Precisione corretta dei calcoli del margine in leva variabile in determinate condizioni.
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.
Risolto un problema per cui non era possibile piazzare un ordine limite tra i prezzi Bid e Ask per l'esecuzione Exchange.
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".
Risolto un problema per cui il pulsante di chiusura rapida della posizione non veniva visualizzato.
Corretta la visualizzazione delle valute dei conti di trading nella finestra di selezione del conto.
L'aggiornamento sarà disponibile attraverso il sistema Live Update.
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.
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
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à:
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: 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):
vedere la dichiarazione della funzione 'Derived::Print'
vedere la dichiarazione della funzione 'Base::Print'
conversione implicita da 'numero' a 'stringa'
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:
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.
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.
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.
Terminale Web
L'aggiornamento sarà disponibile attraverso il sistema Live Update.