Terminal
- Die
Anzeige der Margin-Einstellungen in den Spezifikationen für
Handelssymbole wurde korrigiert. Bei der Verwendung eines variablen
Hebels (z. B. berechnet auf der Grundlage des Positionsvolumens des
Kontos) konnten früher die Margin-Parameter in den
Kontraktspezifikationen falsch angezeigt werden.
- Die
Sortierung des Orderbuchs für Symbole mit negativen Preisen wurde
korrigiert. Aufträge mit positiven, negativen und Null-Preisen werden
jetzt korrekt und in der richtigen Reihenfolge angezeigt.
- Das Benutzerhandbuch des Terminals enthält jetzt einen neuen Abschnitt „Wie der Tester historische Daten herunterlädt“.
Er fasst die wichtigsten Punkte zusammen, die zum Verständnis der
Funktionsweise des Strategy Testers mit der Handelshistorie erforderlich
sind. Um die Stabilität der Berechnungen zu gewährleisten, lädt der
Tester immer einen „Pre-Start Puffer der Historie“:
- D1 und
darunter — ab dem Beginn des vorangegangenen Kalenderjahres. Damit
steht mindestens 1 Jahr lang eine Historie zur Verfügung. Beispiel: Wenn
das Startdatum des Tests der 01.03.2023 ist, lädt das Terminal die
Daten vom 01.01.2022 herunter. Dies entspricht 14 Monaten vor Beginn des
Tests.
- W1 — mindestens 100 Wochen-Balken (~2 Jahre).
- MN1 — mindestens 100 Wochen-Balken (~8 Jahre).
Wenn
die verfügbare Historie nicht ausreicht, verschiebt der Tester das
tatsächliche Startdatum automatisch auf den nächstliegenden Zeitpunkt,
der den Anforderungen entspricht.
In solchen Fällen beginnt der
Test später als zu dem vom Nutzer angegebenen Datum. Im Protokoll des
Testers wird eine entsprechende Meldung angezeigt, z. B:
start time changed to 2024.03.15 00:00 to provide data at beginning
- Es wurden fünf neue OpenBLAS-Methoden im Abschnitt Matrix Balance hinzugefügt, die die Funktionalität für quadratische Matrizen erweitern. Der neue Satz von Funktionen bietet:
- Matrix Balance für verbesserte Genauigkeit bei Eigenwertberechnungen.
- Rücktransformationen von Eigenvektoren.
- Reduktion auf die Hessenberg-Form und Schur-Zerlegung, einschließlich der Erzeugung einer orthogonalen Matrix.
Diese Methoden bieten den Entwicklern einen vollständigen
Transformationszyklus, von der Vorbereitung der Matrix bis zur präzisen
und stabilen Berechnung des Spektrums.
Die Methoden basieren
auf LAPACK-Algorithmen (GEBAL, GEBAK, GEHRD, ORGHR, HSEQR), die eine
hohe Leistungsfähigkeit und Zuverlässigkeit gewährleisten:
- MatrixBalance:
Saldiert eine allgemeine reelle oder komplexe Matrix durch Permutation
von Zeilen und Spalten und Anwendung diagonaler
Ähnlichkeitstransformationen. Der Ausgleich kann die 1-Norm der Matrix
reduzieren und die Genauigkeit der berechneten Eigenwerte und/oder
Eigenvektoren verbessern (LAPACK-Funktion GEBAL).
- EigenVectorsBackward:
Bildet die rechten oder linken Eigenvektoren einer reellen oder
komplexen allgemeinen Matrix durch Rückwärtstransformation auf die
berechneten Eigenvektoren der ausgeglichenen Matrix (LAPACK-Funktion GEBAK).
- ReduceToHessenbergBalanced:
Reduziert eine reelle oder komplexe allgemeine symmetrische Matrix
durch eine orthogonale Ähnlichkeitstransformation in die obere
Hessenberg-Form (LAPACK-Funktion GEHRD).
- ReflectHessenbergBalancedToQ:
Erzeugt eine orthogonale Matrix Q, die definiert ist als das Produkt
elementarer Reflektoren der Ordnung n, wie sie durch Reduktion auf die
Hessenberg-Form erzeugt werden (LAPACK-Funktion ORGHR).
- EigenHessenbergBalancedSchurQ:
Berechnet die Eigenwerte einer Hessenberg-Matrix und die Matrizen T und
Z aus der Schur-Zerlegung; optional wird die Schur-Faktorisierung einer
auf die Hessenberg-Form reduzierten Eingabematrix berechnet
(LAPACK-Funktion HSEQR).
- Zwei neue Methoden wurden im Abschnitt Eigenwerte
hinzugefügt. Beide Funktionen berechnen auf effiziente Weise
Eigenvektoren nach der Schur-Zerlegung und vervollständigen damit den
vollständigen Satz an linearen Algebra-Werkzeugen in MQL5:
- EigenVectorsTriangularZ:
Berechnet Eigenvektoren einer reellen oberen quasi-dreieckigen oder
komplexen oberen Dreiecksmatrix (Schur-Form). Verwendet die Zerlegung A =
Q - T - Qᴴ (LAPACK-Funktion TREVC). Bietet hohe Genauigkeit.
- EigenVectorsTriangularZBlocked:
Blockversion zur Berechnung von Eigenvektoren einer reellen oberen
quasi-dreieckigen oder komplexen oberen Dreiecksmatrix (LAPACK-Funktion TREVC3). Schneller, aber nicht so genau.
- Einführung einer wichtigen Änderung bei der Vererbung mit der neuen Regel zum Ausblenden von Methoden
Wenn früher eine abgeleitete Klasse oder Struktur eine Methode mit
demselben Namen wie in der Basisklasse definierte, wurde sie überladen: Alle Versionen (sowohl von der Eltern- als auch von der Kindklasse) waren in der abgeleiteten Klasse verfügbar. Jetzt verbergen Methoden mit demselben Namen in einer abgeleiteten Klasse die Methoden der Basisklasse (method hiding).
Um eine verborgene Basisklassenmethode aufzurufen, müssen Sie ihren Anwendungsbereich beim Aufruf explizit angeben: 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");
d.Print(10);
d.Base::Print(10);
}
Seit einiger Zeit gibt der MQL5-Compiler eine Warnung aus, wenn
eine ausgeblendete Basismethode besser zu den Aufrufparametern passt
als die verfügbare, abgeleitete Methode. Beispiel für den obigen Code
d.Print(10): Der Aufruf wird zu 'void
Derived::Print(string)' anstelle von 'void Base::Print(int)' aufgrund
der neuen Regeln für das Verstecken von Methoden
siehe Deklaration der Funktion 'Derived::Print'
siehe Deklaration der Funktion 'Base::Print'
implizite Umwandlung von 'int' in 'string'
- Der Operator using zur Wiederherstellung von Überladungen von Basisklassenmethoden wurde hinzugefügt.
Um das neue Verhalten zu steuern, führt MQL5 den Operator 'using' ein.
Damit können Sie alle Überladungen einer Methode vom Basistyp in den Geltungsbereich einer Klasse oder Struktur „ziehen“:
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;
};
void OnStart()
{
Derived d;
d.Print("text");
d.Print(42);
d.Print(3.14);
}
Wenn 'using Base::Print;' entfernt wird, sind die Aufrufe von
d.Print(42) und d.Print(3.14) nicht mehr verfügbar; nur
Derived::Print(string) bleibt übrig.
Außerdem können Sie in
diesem Beispiel sehen, dass geschützte Methoden der Basisklasse in der
abgeleiteten Klasse zugänglich werden (ihre Sichtbarkeit ändert sich von
geschützt zu öffentlich).
Dies gibt Entwicklern eine
flexiblere und vorhersehbare Kontrolle über Klassenhierarchien und
ermöglicht es ihnen, genau zu definieren, welche Überladungen von
Basisklassenmethoden in abgeleiteten Typen zugänglich bleiben sollen.
MetaEditor
- Beschleunigte SHA-1-Hash-Berechnungen für Git-Operationen in Algo Forge. Leistungsverbesserungen von über 40 % bei Massenoperationen.
- Die Datei-Änderungsprüfungen für Git-Operationen wurden korrigiert.
Wenn sich nur die Änderungszeit ändert, der Inhalt der Datei aber gleich
bleibt, wird die Datei nicht mehr als geändert behandelt. Dadurch
werden falsche Erkennungen vermieden und Konflikte mit entfernten
Repositories verhindert.
- Veröffentlicht Algo Forge Benutzerhandbuch. Es hebt alle wichtigen Vorteile von Git hervor, ohne unnötige Komplexität:
- zuverlässige Speicherung der Versionsgeschichte und Verzweigung,
- schnelles Experimentieren und sicheres Zusammenführen von Änderungen,
- erstellen Sie Ihr eigenes Repository oder forken Sie die Projekte anderer Entwickler mit einem Klick,
- transparente Teamarbeit mit nachvollziehbaren Beiträgen,
- einen Katalog offener Projekte mit der Möglichkeit, von anderen zu lernen.
Klonen des Projekts eines anderen Entwicklers
Öffnen Sie das Projekt, das Sie klonen möchten, auf forge.mql5.io und klicken Sie auf Fork. Geben Sie einen Namen und eine Beschreibung für den Klon ein und speichern Sie ihn.

Führen Sie in MetaEditor unter Verwendung desselben MQL5-Kontos den Befehl Aktualisieren im Navigator aus. Ihre Fork wird im Ordner Shared Projects angezeigt. Laden Sie es von Algo Forge mit Git Clone
herunter. Sie erhalten nicht nur die Projektdateien, sondern auch den
vollständigen Commit-Verlauf und alle Zweige. Das bedeutet, dass Sie an
dem Fork weiterarbeiten können und gleichzeitig die gesamte Historie des
geklonten Projekts zur Verfügung haben.

Web-Terminal
- Die Anzeige von Handels- und Quotierungssitzungen in den Spezifikationen des Symbols wurde korrigiert.
- Die Anzeige der Margin-Einstellungen in den Symbolspezifikationen wurde korrigiert.
- Die Anzeige von Handels- und Quotierungssitzungen in den Spezifikationen des Symbols wurde korrigiert.
- Unterstützung für den Kontotyp Wettbewerb wurde hinzugefügt. Solche Konten werden in blau angezeigt, während Demokonten in grün erscheinen.
- Die Genauigkeit der Berechnungen der Hebelmarge wurde unter bestimmten Bedingungen korrigiert.
- Bei
der Eröffnung eines neuen Kontos wurde ein Problem behoben, bei dem die
Schaltfläche Weiter manchmal nicht zum nächsten Schritt führte.
- Es
wurde ein Problem behoben, bei dem es nicht möglich war, eine
Limit-Order zwischen Geld- und Briefkursen für die Ausführung von Exchange zu platzieren.
- Die
Anzeige der Preise für die Auftragsausführung wurde korrigiert. Sobald
ein Auftrag gesendet wurde, erscheint das Ergebnis der Ausführung,
erfolgreich oder fehlgeschlagen. In einigen Fällen wurde der
Ausführungspreis fälschlicherweise als „0“ angezeigt.
- Ein Problem wurde behoben, bei dem die Schaltfläche zum schnellen Schließen der Position nicht angezeigt wurde.

- Die Anzeige der Handelskontowährungen im Kontoauswahlfenster wurde korrigiert.
Lesen Sie die vorige Nachricht: