Terminal
- Völlig neu gestaltete Verwaltungsoptionen des integrierten Virtual Hostings.
Alle Informationen über das gemietete Terminal sowie die Funktionen Umgebungsmigration, Stopp und Start sind nun in einer separaten
Registerkarte des Werkzeugfensters verfügbar.
In früheren Versionen waren die Funktionen des Virtual Hostings im Kontextmenü des Navigator-Fensters verfügbar. Jetzt
sind alle notwendigen Informationen und Steuerbefehle übersichtlich in der Registerkarte "VPS" angeordnet:
Die grundlegenden Informationen zum Abonnement werden auf der linken Seite angezeigt:
- Verbindungsdaten: Vergleich der Netzwerkverzögerungen zwischen Ihrem Terminal auf dem Hosting-Server und auf einem lokalen PC.
- Das Handelskonto, für das ein Hosting gemietet wurde, und der Zahlungsplan.
- Eindeutige Abonnementsidentifikation. Ein Klick auf die ID öffnet den Bereich Hosting im Benutzerprofil der MQL5.community, von dem
aus das Abonnement verwaltet werden kann.
- Registrierungsdatum und aktueller Stand. Wird der Hosting-Dienst gestoppt, erscheint hier sofort ein entsprechender Status.
Mit der Start/Stop-Taste kann das virtuelle Terminal schnell gestartet oder gestoppt werden.
Daten über die Serverhardware und den CPU-Belastungsdiagramme des Hostings werden im rechten Teil des Fensters angezeigt.
Basierend auf den angezeigten Informationen können Sie rechtzeitig reagieren, wenn Ihr Expert Advisor oder Indikator übermäßigen
Speicherplatz oder CPU-Zeit beansprucht.
Informationen über die letzte Migration der Handelsumgebung sowie Migrationsbefehle sind ebenfalls hier verfügbar.
Diese Befehle ermöglichen eine schnelle Migration der Umgebung nach dem Kauf eines Abonnements.
Eine virtuelle Plattform kann über die Registerkarte "VPS" gemietet werden. Der Mietvorgang hat sich nicht geändert und ist
wie vorher genauso schnell und einfach. Sie müssen nur einen Zahlungsplan und einen geeigneten Zahlweg auswählen. Der beste Server
für die Verbindung zu Ihrem Broker wird automatisch ausgewählt.
- Es wurde die Möglichkeit hinzugefügt, schnell zu den Ein- und Auszahlungsvorgängen auf der Broker-Website zu wechseln.
Sie müssen nicht mehr nach geeigneten Funktionen im Händlerraum auf der Website Ihres Brokers suchen. Schnelle Navigationsbefehle
sind direkt in den Terminals verfügbar: im Menü Konten im Navigator und in Extras > der Registerkarte Handel:
- Ein- und Auszahlungsvorgänge sind nur verfügbar, wenn für das Handelskonto auf der Brokerseite entsprechende Funktionen
aktiviert sind.
- Das Handelsterminal führt keine Kontoein- und -auszahlungen durch. Die integrierten Funktionen leiten den Nutzer auf die
entsprechenden Seiten der Broker-Website weiter.
- Neue Felder in der Spezifikation des Handelssymbols:
Kategorie
Diese Eigenschaft
wird zur zusätzlichen Bewertung von Finanzinstrumenten genutzt. Dies kann beispielsweise die Marktsparte sein, zu der das Symbol
gehört: Landwirtschaft, Öl & Gas und andere. Die Kategorie wird nur angezeigt, wenn der Broker die entsprechenden Informationen
zur Verfügung stellt.
Börsenplatz
Der Name des Handelsplatzes, an der das Wertpapier gehandelt wird. Die Kategorie wird nur
angezeigt, wenn der Broker die entsprechenden Informationen zur Verfügung stellt.
Provisionen
Informationen über Provisionen, die ein Broker für den Handel des Symbols berechnet. Die
Berechnungsdetails werden hier angezeigt:
- Die Provision kann einstufig und mehrstufig sein, d.h. unabhängig vom Dealvolumen/Umsatz sein oder von der Größe abhängen.
Entsprechende Daten werden im Terminal angezeigt.
- Die Provision kann sofort nach Geschäftsabschluss oder am Ende eines Handelstages/Monats berechnet werden.
- Die Provision kann je nach Geschäftsrichtung berechnet werden: bei Eröffnung, beim Schließen oder in beiden Fällen.
- Die Provision kann pro Lot oder pro Deal berechnet werden.
- Die Provision kann in Geld, Prozentsatz oder Punkten berechnet werden.
Der folgende Eintrag bedeutet z.B., dass eine Provision sofort nach Eröffnung und nach dem Schließen berechnet wird. Wenn
das Dealvolumen zwischen 0 und 10 Lose beträgt, wird eine Provision von 1,2 USD pro Vorgang berechnet. Wenn das Dealvolumen 11 bis 20
Lose beträgt, wird eine Provision von 1,1 USD pro Los des Deals berechnet.
Provision | Sofort, Volumen, Eröffnung/Schließen
0 - 10 | 1.2 USD je Deal
11 - 20 | 1.1 USD
je Los
- Zusätzliche Felder für Optionen
wurde den Symbolspezifikationen hinzugefügt:
- Optionstyp — Call oder Put
- Underlying — das zugrunde liegende Symbol der Option
- Ausübungspreis — Optionsausübungspreis
- Für Optionen wurden "griechische
Zeichen" hinzugefügt: Delta, Gamma, Vega, Theta, Rho. Broker können zusätzliche Informationen zu solchen Instrumenten
bereitstellen. Die Daten werden im Bereich Details des Fensters Market Watch angezeigt und können für die erweiterte Handelsanalyse
verwendet werden:
- Das Fadenkreuz des Charts zeigt nun zusätzlich zu den bisher verfügbaren Kernen den Abstand zwischen den Preisniveaus in Prozent
an:
- Es wurde die Darstellung eines resultierenden Preises in den Handelsdialogen während der Markt- und Börsenausführung
hinzugefügt, wenn dieser Preis zum Zeitpunkt des Eingangs einer Antwort vom Broker verfügbar ist:
- Es wurde ein gelegentlicher Fehler behoben, aufgrund dessen der Befehl "Alle anzeigen" im Fenster Marktübersicht die Liste aller
verfügbaren Handelsinstrumente nicht anzeigen konnte.
MQL5
- Der Namensraum (scope) wurde überarbeitet und damit ist MQL5 noch näher an C++ herangeführt worden. Dies bietet
MQL5-Programmierern erweiterte Möglichkeiten im Betrieb mit Bibliotheken von Drittanbietern. Mit dem Update entfällt die
Notwendigkeit, Bibliotheken zu modifizieren und Identifikatoren zu vereinheitlichen.
Beispiel: Ein Code enthält die Deklaration von zwei gleichnamigen Strukturen, die jedoch zu verschiedenen Klassen
gehören. In früheren Versionen führte eine solche Deklaration zu einem Kompilierfehler: "Identifikator bereits verwendet". Nun
wird dieser Code erfolgreich kompiliert und ausgeführt. Für einen korrekten Zugriff auf die gewünschte
Variable/Struktur/Funktion von außerhalb ihres Umfangs sollten Sie eine Klasse angeben (in diesem Fall ist es CBar::Item).
class CFoo
{
public:
struct Item { int x; };
};
class CBar
{
public:
struct Item { int x; };
};
CBar::Item item;
Item item;
Hinzugefügt wurde die Unterstützung von Namensräumen, die mehr
Möglichkeiten bei der Verwendung von Drittanbieter-Code/Bibliotheken in MQL5-Anwendungen bietet.
#define PrintFunctionName() Print(__FUNCTION__)
namespace NS
{
void func()
{
PrintFunctionName();
}
struct C
{
int x;
C() { PrintFunctionName(); };
};
}
struct C
{
int x;
C() { PrintFunctionName(); };
};
void func()
{
PrintFunctionName();
}
void OnStart()
{
func();
NS::func();
C c;
NS::C ac;
}
Nach der Ausführung wird das folgende Ergebnis ausgegeben:
2019.09.18 13:39:35.947 TestScript (AUDCAD,H1) func
2019.09.18
13:39:35.949 TestScript (AUDCAD,H1) NS::func
2019.09.18 13:39:35.949 TestScript (AUDCAD,H1) C::C
2019.09.18
13:39:35.949 TestScript (AUDCAD,H1) NS::C::C
- Die neue Version bietet einen schnelleren Zugriff auf die Daten von
Zeitreihen mit folgender Funktion: iTime, iOpen, iHigh, iLow, iClose, iVolume, iTickVolume, iSpread.
- Ergänzt wurde die Unterstützung des Attributs
"=delete". Damit kann die Verwendung bestimmter Klassenmethoden verhindert werden.
class A
{
void operator=(const A &)=delete;
};
class B : public A
{
};
void OnStart()
{
A a1,a2;
B b1,b2;
a1=a2;
b1=b2;
}
In diesem Beispiel wirft der Compiler Fehler für "a1=a2" und "b1=b2" aus:
attempting to reference deleted function 'void A::operator=(const A&)'
function 'void
A::operator=(const A&)' was explicitly deleted here
attempting to reference deleted function 'void B::operator=(const B&)'
function
'void B::operator=(const B&)' was implicitly deleted because it invokes deleted function 'void A::operator=(const
A&)'
- Die Enumeration ENUM_SYMBOL_INFO_STRING
wurde um folgende Werte erweitert:
- SYMBOL_CATEGORY — Symbolkategorie. Sie wird zur zusätzlichen Kennzeichnung von Finanzinstrumenten verwendet. Dies kann beispielsweise
die Marktsparte sein, zu der das Symbol gehört: Landwirtschaft, Öl & Gas und andere.
- SYMBOL_EXCHANGE — der Name der Börse, an der das Symbol gehandelt wird.
- Unterstützung für die Positionsschließung nach der FIFO-Regel hinzugefügt.
- Der Wert ACCOUNT_FIFO_CLOSE wurde zu ENUM_ACCOUNT_INFO_INTEGER
hinzugefügt. Er führt dazu, dass Positionen nur nach der FIFO-Regel geschlossen werden können. Wenn der Wert der Eigenschaft wahr ist, können
die Positionen für jedes Instrument nur in der gleichen Reihenfolge geschlossen werden, in der sie geöffnet wurden: das älteste
sollte zuerst geschlossen werden, dann das nächste usw. Bei einem Versuch, Positionen in einer anderen Reihenfolge zu
schließen, wird ein Fehler zurückgegeben. Bei Konten ohne Hedging-Positionsverwaltung
(ACCOUNT_MARGIN_MODE!=ACCOUNT_MARGIN_MODE_RETAIL_HEDGING) ist der Wert dieser Eigenschaft immer "falsch".
- Neuer Rückgabewert: MT_RET_REQUEST_CLOSE_ONLY
— der Auftrag wird abgelehnt, da für das Symbol die Regel "Nur das Schließen vorhandener Positionen nach FIFO-Regel erlaubt"
gesetzt ist.
Es gibt im Wesentlichen drei Methoden, um eine Position zu schließen:
- Schließen vom Client-Terminal aus: Der Händler schließt die Position manuell, mit einem Handelsroboter, basierend auf dem
Signals Service Abonnement, etc. Im Falle eines Versuchs, eine Position zu schließen, die nicht der FIFO-Regel entspricht,
erhält der Händler einen entsprechenden Fehler.
- Schließen bei Stop Loss oder Take Profit-Aktivierung: Diese Orders werden serverseitig verarbeitet, so dass die
Positionsschließung nicht auf der Händler-(Terminal-)Seite angefordert wird, sondern vom Server initiiert wird. Wenn
Stop-Loss oder Take-Profit für eine Position auslöst und diese Position nicht der FIFO-Regel entspricht (es gibt eine
ältere Position für das gleiche Symbol), wird die Position nicht geschlossen.
- Schließen beim Auslösen von Stop-Out: Solche Operationen werden auch serverseitig verarbeitet. In einem normalen Modus, in dem
das FIFO-basierte Schließen deaktiviert ist, werden im Falle von Stop-Out Positionen geschlossen, beginnend mit
derjenigen mit dem größten Verlust. Wenn diese Option aktiviert ist, wird zusätzlich die Eröffnungszeit der
Verlustpositionen überprüft. Der Server ermittelt die Verlustpositionen für jedes Symbol, findet die älteste Position
für jedes Symbol und schließt dann diejenige, die den größten Verlust unter den gefundenen Positionen aufweist.
- Optionen zur Parametergruppierung über "input group" hinzugefügt. Dies ermöglicht eine visuelle Trennung der Parameter basierend auf
der zugrunde liegenden Logik.
Im folgenden Expert Advisor Code sind die Eingabeparameter nach ihrem Zweck gruppiert:
input group "Signal"
input int ExtBBPeriod =20;
input double ExtBBDeviation =2.0;
input ENUM_TIMEFRAMES ExtSignalTF =PERIOD_M15;
input group "Trend"
input int ExtMAPeriod =13;
input ENUM_TIMEFRAMES ExtTrendTF =PERIOD_M15;
input group "ExitRules"
input bool ExtUseSL =true;
input int Ext_SL_Points =50;
input bool ExtUseTP =false;
input int Ext_TP_Points =100;
input bool ExtUseTS =true;
input int Ext_TS_Points =30;
input group "MoneyManagement"
sinput double ExtInitialLot =0.1;
input bool ExtUseAutoLot =true;
input group "Auxiliary"
sinput int ExtMagicNumber =123456;
sinput bool ExtDebugMessage=true;
Wenn
ein solcher Expert Advisor im Strategietester gestartet wird, können Eingabeparameterblöcke durch Doppelklick auf den
Gruppennamen ein- oder ausgeblendet werden, und alle Parameter innerhalb einer Gruppe können mit einem einzigen Kontrollkästchen
zur Optimierung ausgewählt werden.
- Der Import von DLL-Funktionen mit Namen, die mit den Namen der MQL5-Funktionen übereinstimmen, wurde korrigiert. Beispiel:
#import "lib.dll"
int func();
#import
int func()
{
return(0);
}
void OnStart()
{
Print( func() );
}
In früheren Versionen wurde der folgende Fehler während der Kompilierung zurückgegeben:
'func' - ambiguous call to overloaded function with the same parameters
could be one of 2 function(s)
int func()
int func()
Anstelle des Fehlers wird nun standardmäßig die integrierte MQL5-Funktion mit höherer Priorität verwendet. Die importierte Funktion kann
durch explizite Angabe des
Namensraumes aufgerufen werden:
void OnStart()
{
Print( lib::func() );
}
- Die Angabe der Zeit in den Nachrichten des Wirtschaftskalenders wurde korrigiert. Jetzt werden Ereignisse unter
Berücksichtigung der Zeitzone des Handelsservers, mit dem das Terminal verbunden ist, anstelle der lokalen Computerzeitzone
ausgegeben.
- Korrigiert wurde ein übermäßiger Speicherbedarf in den Funktionen CopyTicks
und CopyTicksRange.
Signale
- Die Darstellung von Signalcharts bei der Arbeit auf Wine (Mac OS und Linux) wurde korrigiert.
Tester
- Großes Update des Strategietesters. Neue Startseite, neu gestaltete Einstellungsseite, verbesserte Nutzerfreundlichkeit.
Startseite
Jetzt, nach dem Start des Testers, sieht der Benutzer anstelle mehrerer Einstellungen eine Liste von
Standardaufgaben, indem er auswählt, welche er schnell testen kann. Das neue Design ist in erster Linie für unerfahrene Anwender
gedacht.
Wir haben die häufigsten Strategietest- und Optimierungsaufgaben ausgewählt und der Startseite hinzugefügt. Darüber
hinaus kann eine der zuvor ausgeführten Aufgaben von der Startseite aus neu gestartet werden. Wenn Sie viele Aufgaben ausgeführt
haben und sie nicht in die Startseite passen, verwenden Sie die Suchleiste. Sie können einen Test anhand eines beliebigen Parameters
finden: Programmname, Symbol, Zeitrahmen, Modellierungsmodus, etc.
Ausblenden irrelevanter Parameter
Nach der Auswahl einer Aufgabe fährt der Benutzer mit weiteren
Testparametern fort: Auswahl eines Expert Advisors, Symbol, Testzeitraum, etc. Alle irrelevanten Parameter, die für die
ausgewählten Aufgaben nicht benötigt werden, sind auf der Setup-Seite ausgeblendet. Wenn beispielsweise mathematische
Berechnungen ausgewählt werden, sollten nur zwei Parameter angegeben werden: das zu testende Programm und der Optimierungsmodus.
Die Einstellungen für Testzeitraum, Verzögerung und Tick-Erzeugung werden ausgeblendet.
Komfortabler Testaufbau
Aus Gründen der Übersichtlichkeit wurden einige der Parameter auf der Setup-Seite
neu angeordnet. Für die Verzögerungs- und Visualisierungsparameter wurden erweiterte Erläuterungen hinzugefügt. Darüber hinaus
können Testeinstellungen nun gespeichert und manuell hochgeladen werden, so dass ein Händler schnell zu früheren Einstellungen
zurückkehren kann.
Über die gleiche Registerkarte können Sie das Programm zur Bearbeitung im MetaEditor ohne Umwege öffnen.
Profitberechnung in Pips
Mit den Einstellungen können Sie die Gewinnermittlung in Pips aktivieren. Dieser Modus
beschleunigt das Testen, da es nicht notwendig ist, den Gewinn neu zu berechnen, um die Währung mit Hilfe von Umrechnungskursen zu
verwenden (und somit ist es nicht notwendig, die entsprechende Preisentwicklung herunterzuladen). Swap- und
Provisionsberechnungen werden in diesem Modus nicht durchgeführt.
Bitte beachten Sie, dass bei der Berechnung des Gewinns in Pips das Positionsvolumen keine Rolle spielt. Für jede Position
wird nur die Anzahl der gewonnenen/verlorenen Pips berechnet. Auch die Margenkontrolle wird in diesem Modus nicht durchgeführt.
Verwenden Sie es nur für eine schnelle und grobe Strategieabschätzung und überprüfen Sie dann die erzielten Ergebnisse mit genaueren
Modi.
Allgemeine Verbesserungen
Die Start-/Stopptaste für das Testen und die Fortschrittsanzeige wurden in die
Registerkartenleiste verschoben. So kann der Benutzer den Prozess von jedem Abschnitt des Strategietesters aus steuern. Das Testen
von Start-/Stoppbefehlen wurde auch in die Kontextmenüs der Einstellungs- und Eingabebereiche aufgenommen.
- Die Optimierungsgrafik kann nun im Hauptarbeitsbereich des Terminals angezeigt werden, statt sie in einem eigenen Bereich des
Testers zu zeigen. Auf diese Weise steht viel mehr Platz für die Datenanalyse zur Verfügung. Auch das 3D-Visualisierungssystem wurde
aktualisiert.
- Speichern des Optimierungs-Cache
für den Modus "Alle
Symbole in der Marktübersicht" hinzugefügt.
- Speichern des Testcaches hinzugefügt.
In früheren Versionen wurden ausgeführte Aufgabenergebnisse nur
bei der Optimierung von Expert Advisors in Dateien gespeichert. Jetzt werden Cache-Dateien auch während einzelner Tests
gespeichert, so dass der Nutzer jederzeit zu früheren Berechnungen zurückkehren und Statistiken, Saldo-, Aktien- und
Drawdowngrafiken einsehen kann. In zukünftigen Versionen wird diese Option den Vergleich der Testergebnisse ermöglichen.
Um frühere Testergebnisse zu laden, verwenden Sie die neue Tester-Startseite: Klicken Sie auf "Vorherige Ergebnisse" und
wählen Sie den gewünschten Standort aus:
- Deutlich beschleunigtes Testen und Optimieren, einschließlich Operationen, die mit dem
MQL5 Cloud Network durchgeführt werden.
- Korrigierte und optimierte Arbeit mit Frames.
MetaEditor
- Es wurde die Möglichkeit zugefügt, den Code Styler zu konfigurieren.
Der MetaEditor enthält
einen integrierten
Code
Styler, der eine automatische Formatierung des Programmtextes gemäß dem angenommenen Standard ermöglicht. Jetzt können Sie
neben dem allgemeinen Stil auch andere gängige Standards verwenden. Öffnen Sie dazu die MetaEditor-Einstellungen und wählen Sie den
gewünschten Stil aus:
Folgende Parameter können für den Styler zusätzlich eingestellt werden:
Leerzeichen je Einzug
Legt die Anzahl der Leerzeichen fest, die beim Ausrichten von verschachtelten Konstruktionen verwendet werden:
if(condition)
{
}
Ersetzen der Tabulatoren durch Leerzeichen
Wenn diese Option aktiviert ist, ersetzt der Styler alle Registerkarten
im Code durch Leerzeichen. Die Anzahl der Zeichen pro Tabulator wird im Abschnitt Allgemein eingestellt.
Löschen von Leerzeilen
Wenn diese Option aktiviert ist, löscht der Styler alle Zeilen, die nur ein
Zeilenumbruch enthalten.
Eine Leerstelle nach einem Komma und Semikolon einfügen
Wenn diese Option aktiviert ist, trennt der
Styler Konstruktionen mit Elementaufzählungen optisch. Beispiel:
ParameterGetRange("InpX",enable,x_cur,x_start,x_step,x_stop);
ParameterGetRange("InpX", enable, x_cur, x_start, x_step, x_stop);
Leerstellen um Deklarationsoperatoren herum einfügen
Wenn diese Option aktiviert ist, fügt der Styler Leerzeichen
um die Zuweisung, Gleichheit, den Vergleich und andere Operatoren ein. Beispiel:
if(x==1&y!=2)
{
int a=0;
}
if(x == 1 & y != 2)
{
int a = 0;
}
- Der Befehl "Im Navigator anzeigen" wurde dem Kontextmenü der Datei-Lesezeichen hinzugefügt. So kann der Benutzer eine zur
Bearbeitung geöffnete Datei leicht in der Ordnerstruktur des Editors finden.
- Die Anzeige des Schlüsselwortes "union" in den Tooltips wurde korrigiert.
Die Benutzeroberfläche wurde zusätzlich in 18 weitere Sprachen übersetzt.
- Europäische Region — Schwedisch, Litauisch, Dänisch, Lettisch, Estnisch, Serbisch, Slowenisch, Slowakisch, Finnisch, Georgisch
- Asiatische Region — Javanisch, Marathi, Bengali, Punjabi, Tamilisch, Telugu
- Afrikanische Region — Suaheli, Hausa
Die Plattformoberfläche ist nun in 50 Sprachen verfügbar, die von mehr als 4 Milliarden Menschen gesprochen werden.
Um Ihre Sprache für die Benutzeroberfläche einzustellen, navigieren Sie zum Menü "Ansicht \ Sprache" oben im Terminal.
Die Dokumentation wurde aktualisiert.
Fehlerbehebungen auf Basis von Absturzberichten.
Die Aktualisierung wird über das Live-Update-System verfügbar sein.