MetaTrader 5 Plattform Beta Build 1995: Wirtschaftskalender, MQL5-Programme als Dienste und eine API für die Sprache R

 

Die Beta-Version der aktualisierten MetaTrader 5-Plattform wird am 15. Februar 2019 veröffentlicht. Wir laden die Händler ein, an den Tests teilzunehmen und die aktualisierten Plattformfunktionen zu bewerten, sowie Entwicklern bei der Fehlerbehebung zu helfen.

Um die MetaTrader 5 Plattform bis zum build 1995 zu aktualisieren, gehen Sie zu Hilfe \ Prüfen auf Desktop-Updates \ Aktuelle Beta-Version:


Der endgültige Release-Version der neuen MetaTrader 5 Plattform wird nach Abschluss des öffentlichen Beta-Tests veröffentlicht.

Die neue Version realisiert folgende Änderungen:


MetaTrader 5 Client Terminal build 1995

  1. Terminal: Komplett überarbeiteter, integrierter Wirtschaftskalender.

    Der Wirtschaftskalender ist unsere eigene Lösung. Er bietet Ihnen über 600 Finanznachrichten und Indikatoren der 13 größten Volkswirtschaften der Welt: USA, Europäische Union, Japan, Großbritannien, Kanada, Australien, China unter andere. Die relevanten Daten werden aus offenen Quellen in Echtzeit erhoben.

    Die neue Version bietet aktualisierte Inhalte und erweiterte Ereignisfilter: nach Zeit, Priorität, Währungen und Ländern.

    Die Möglichkeit, auf die Kalenderdaten aus MQL5-Programmen zuzugreifen, wird in Kürze implementiert.




  2. Terminal: Eine neue Art von MQL5-Anwendungen — Dienste. Dieser neue Typ ermöglicht die Erstellung von benutzerdefinierten Preisfeeds für das Terminal, d.h. die Bereitstellung von Preisen aus externen Systemen in Echtzeit, genau so wie sie auf den Handelsservern der Makler implementiert sind.

    Im Gegensatz zu Expert Advisors, Indikatoren und Skripten sind Dienste nicht an ein bestimmten Chart gebunden. Solche Anwendungen laufen im Hintergrund und werden beim Start des Terminals automatisch gestartet (es sei denn, eine solche Anwendung wurde erzwungenermaßen gestoppt).

    Dienste können von einem neuen Abschnitt im Navigatorfenster aus verwaltet werden:





    So erstellen Sie die Dienste
    Um die Vorlage eines Dienstes zu erstellen, verwenden Sie das entsprechende Element des MQL5 Wizards. Die Dienste haben einen Einstiegspunkt Onstart, ähnlich wie Skripte. Hier können Sie eine endlose Datenempfangs- und -bearbeitungsschleife mit Netzwerkfunktionen implementieren.

    So starten Sie die Dienste
    Um mehrere Kopien von Expert Advisors oder Indikatoren mit unterschiedlichen Parametern auszuführen, müssen diese auf verschiedenen Charts gestartet werden. In diesem Fall werden verschiedene Programminstanzen erstellt, die dann unabhängig voneinander arbeiten. Die Dienste sind nicht an einen Chart gebunden, daher wurde ein spezieller Mechanismus für das Erstellen einer Instanz eines Dienstes implementiert.

    Wählen Sie einen Dienst im Navigator aus und klicken Sie in dessen Kontextmenü auf "Dienst hinzufügen". Dies öffnet einen Standard-MQL5-Programmdialog, in dem Sie den Handel und den Zugriff auf Signale aktivieren/deaktivieren sowie die Parameter einstellen können.




    Die Instanz eines Dienstes kann über ein entsprechendes Menü gestartet und gestoppt werden. Um alle Instanzen zu verwalten, verwenden Sie das Menü der Dienste.

  3. Terminal: Ein Lernprogramm wurde implementiert.

    Jetzt können Anfänger leicht lernen, wie man mit der Plattform umgeht. Wir haben über 100 interaktive Tipps zu den wichtigsten Funktionen der Plattform hinzugefügt.

    • Tipps werden nahtlos als Fortschrittsbalken auf der Symbolleiste angezeigt und lenken den Benutzer nicht ab.
    • Tipps erscheinen nur für die Aktionen, die Sie noch nie auf der Plattform durchgeführt haben.
    • Alle Tipps enthalten interaktive Links, über die Sie zu den relevanten Elementen der Schnittstelle navigieren können. So kann beispielsweise ein Handelsdialog oder ein Menü mit dem gewünschten Programm direkt vom Tipp aus geöffnet werden.

    Der ausgefüllte Bereich des Fortschrittsbalkens erhöht sich, wenn Sie geeignete Aktionen durchführen und das Training fortsetzen.




  4. Terminal: Die Handelskontenhistorie kann als Positionen dargestellt werden. Die Plattform sammelt Daten über die Transaktionen (Deals), die sich auf die Position beziehen (Eröffnung, Volumenzunahme, teilweises oder vollständiges Schließen) und gruppiert die Informationen in einem einzigen Datensatz. So können Sie auf Positionsdetails zugreifen: Zeit der Eröffnung und des Schließens, Volumen, Preis und Ergebnis. Diese komfortable Präsentationsform steht nun in Verlaufsberichten zur Verfügung, die in Dateien exportiert werden.




  5. Terminal: Hinzugefügt wurde ein neues API, das das Abrufen MetaTrader 5 Terminaldaten durch Anwendungen ermöglicht, die die Sprache R verwenden.

    Wir haben das spezielle Paket MetaTraderR vorbereitet. Es enthält eine DLL, für die Interaktion zwischen R und dem MetaTrader 5 Terminal, inkl. Dokumentation und Hilfsdateien. Wir schließen die Paketregistrierung im CRAN Repository ab, danach wird es zum Download und zur Installation zur Verfügung stehen.




    Das Paket kann mit einem speziellen Befehl installiert werden:
    R CMD INSTALL --build MetaTraderR
    Die folgenden Befehle zur Datenanforderung sind nun verfügbar:

    • MT5Initialize initialisiert und stellt die Verbindung mit dem MetaTrader 5 Terminal her. Bei Bedarf wird das Terminal während der Befehlsausführung gestartet.
    • MT5Shutdown deinstalliert und trennt die Verbindung zum MetaTrader 5.
    • MT5Version ruft die Terminalversion MetaTrader 5 ab.
    • MT5TerminalInfo ruft den Status und die Parameter der Terminalverbindung zum Server eines Brokers ab (Kontonummer und Serveradresse).
    • MT5WaitTerminal setzt eine 2-minütige Wartezeit für das MetaTrader 5 Terminal, um sich mit dem Server eines Brokers zu verbinden.
    • MT5CopyTicksFrom(symbol, from, count, flags) kopiert die angegebene Anzahl von Ticks ab dem angegebenen Datum. Der Zeitpunkt wird in Millisekunden seit 01.01.1970 angegeben.
    • MT5CopyTicksRange(Symbol, from, to, flags) kopiert Ticks aus dem angegebenen Zeitraum. Die Zeitpunkte werden seit 01.01.1970 in Millisekunden angegeben.
    • MT5CopyRatesFrom(Symbol, timeframe, from, count) kopiert die angegebene Anzahl von Ein-Minuten-Balken ab dem angegebenen Datum. Der Zeitpunkt wird in Sekunden seit dem 01.01.1970 angegeben.
    • MT5CopyRatesFromPos(symbol, timeframe, start_pos, count) kopiert Ein-Minuten-Balken von der angegebenen Position relativ zum letzten Balken.
    • MT5CopyRatesFromRange(Symbol, timeframe, date_from, date_to) kopiert die entsprechenden Balken des angegebenen Zeitraums. Der Zeitpunkt wird in Sekunden seit dem 01.01.1970 angegeben.

    Die Liste der unterstützten Befehle wird weiter ergänzt.

  6. Terminal: Optimierter Dialog Close By zum Schließen einer Position durch eine entgegengesetzte Position. Nun wird der Dialog auch bei einer großen Anzahl von offenen Positionen nicht verlangsamt.
  7. Terminal: Behoben ein Berechnungsfehler bei synthetischen Symbolen, aufgrund derer Daten übersprungen werden konnten.
  8. Terminal: Wenn ein nutzerdefiniertes Symbol gelöscht wird, werden nun auch Dateien mit der Historie der Ticks und Balken gelöscht. Dadurch wird das Aufhäufen ungenutzter Daten auf der Festplatte vermieden.
  9. MQL5: Korrekturen und Verbesserungen der Betriebsgeschwindigkeit in Bezug auf die Historie von Ticks und Balken.
  10. MQL5: Korrekturen und signifikante Verbesserungen der Betriebsgeschwindigkeit im Zusammenhang mit Funktionen zur Änderung der Historie von Ticks und Balken von nutzerdefinierten Handelssymbolen, CustomTicks* und CustomRates*.
  11. MQL5: Neue Funktionen zur Datenkonvertierung.

    CharArrayToStruct weist einen Array vom Typ uchar einer POD-Struktur zu.
    bool  CharArrayToStruct(
       void&         struct_object,    // Struktur
       const uchar&  char_array[],     // Array
       uint          start_pos=0       // Startposition im Array
       );

    StructToCharArray weist einer POD-Struktur einem Array vom Typ uchar zu.
    bool  StructToCharArray(
       const void&  struct_object,     // Struktur
       uchar&       char_array[],      // Array
       uint         start_pos=0        // Startposition im Array
       );

  12. Hinzugefügt wurde die Funktion MathSwap, mit der Reihung der Bytes von ushort, uint und ulong zu ändern.
    ushort MathSwap(ushort value);
    uint   MathSwap(uint   value);
    ulong  MathSwap(ulong  value);

  13. MQL5: Hinzugefügt wurden Netzwerkfunktionen, um TCP-Verbindungen zu entfernten Hosts über System-Sockets herzustellen:

    • SocketCreate erstellt einen Socket mit angegebenen Flags und gibt dessen Handle zurück.
    • SocketClose schließt den Socket.
    • SocketConnect verbindet sich mit dem Server, inkl. einer Timeout-Steuerung.
    • SocketIsConnected prüft, ob der Socket aktuell verbunden ist.
    • SocketIsReadable ermittelt die Anzahl der Bytes, die aus dem Socket gelesen werden können.
    • SocketIsWritable prüft, ob das Schreiben von Daten auf diesen Socket zum aktuellen Zeitpunkt möglich ist.
    • SocketTimeouts setzt die Zeit eines Timeouts für den Empfang und das Senden von Daten für das Objekt eines System-Sockets.
    • SocketRead liest Daten von einem Socket.
    • SocketSend schreibt Daten in einen Socket.
    • SocketTlsHandshake initiiert eine sichere TLS (SSL) Verbindung mit dem angegebenen Host über das TLS Handshake Protokoll.
    • SocketTlsCertificate erhält Informationen über das Zertifikat, das für die sichere Netzwerkverbindung verwendet wird.
    • SocketTlsRead liest Daten von einer sicheren TLS-Verbindung.
    • SocketTlsReadAvailable liest alle verfügbaren Daten von einer sicheren TLS-Verbindung.
    • SocketTlsSend sendet Daten über eine sichere TLS-Verbindung.

    Die Adresse des Hosts, zu dem die Verbindung über Netzwerkfunktionen hergestellt wird, muss in den Terminaleinstellungen explizit zur Liste der zulässigen Adressen hinzugefügt werden.
    Neue Fehlercodes müssen für Operationen mit Netzwerkfunktionen hinzugefügt werden:

    • ERR_NETSOCKET_INVALIDHANDLE (5270): Ungültiges Socket-Handle an die Funktion übergeben.
    • ERR_NETSOCKET_TOO_MANY_OPENED (5271): Zu viele Sockets sind offen (maximal 128)
    • ERR_NETSOCKET_CANNOT_CONNECT (5272): Fehler bei der Verbindung zum entfernten Host
    • ERR_NETSOCKET_IO_ERROR (5273): Fehler beim Senden/Empfangen der Daten vom Socket
    • ERR_NETSOCKET_HANDSHAKE_FAILED (5274): Fehler beim sicheren Verbindungsaufbau (TLS Handshake)
    • ERR_NETSOCKET_NO_CERTIFICATE (5275): Keine Daten über das für die sichere Verbindung verwendete Zertifikat

  14. MQL5: Hinzugefügt wurden neue Funktionen für Zeichenkettenoperationen:

    StringReserve kehrt den Speicherpuffer der angegebenen Größe einer Zeichenkette um.
    bool  StringReserve(
       string&        string_var,          // Zeichenkette
       uint           new_capacity         // Puffergröße der Zeichenkette
       );
    StringSetLength legt die Anzahl der Buchstaben einer Zeichenkette fest.
    bool  StringSetLength(
       string&        string_var,          // Zeichenkette
       uint           new_length           // neu Länge der Zeichenkette
       );

  15. MQL5: Hinzugefügt wurden neue Funktionen für Arrays:

    ArrayRemove entfernt die angegebene Anzahl der Elemente aus dem Array ab dem angegebenen Index.
    bool  ArrayRemove(
       void&         array[],              // Array irgendeines Typs
       uint          start,                // der Index, ab dem entfernt werden soll
       uint          count=WHOLE_ARRAY     // Anzahl der Elemente
       );
    ArrayInsert fügt in das Empfängerarray ab dem angegebenen Index eine bestimmte Anzahl von Elementen aus einem Quellarray ein.
    bool  ArrayInsert(
       void&         dst_array[],          // Empfängerarray
       const void&   src_array[],          // Quellarray
       uint          dst_start,            // Index, ab dem eingetragen werden soll
       uint          src_start=0,          // Index, ab dem aus dem Quellarray kopiert werden soll
       uint          count=WHOLE_ARRAY     // Anzahl der einzutragenden Elemente
       );
    ArrayReverse kehrt in einem Array eine angegebene Anzahl von Elemente ab dem angegebenen Index um.
    bool  ArrayReverse(
       void&         array[],              // Array irgendeines Typs
       uint          start=0,              // Index, ab dem das Umkehren beginnen soll
       uint          count=WHOLE_ARRAY     // Anzahl der Elemente
       );

  16. MQL5: Den Funktionen CustomRatesUpdate, CustomRatesReplace, CustomTicksAdd und CustomTicksReplace wurde der neue Parameter "uint count" hinzugefügt. Er ermöglicht die Angabe der Anzahl der Elemente des übergebenen Arrays, die verwendet werden sollen. Der Wert WHOLE_ARRAY wird standardmäßig für den Parameter verwendet. Das bedeutet, dass das gesamte Array verwendet wird.
  17. MQL5: Hinzugefügt wurde die Funktion CustomBookAdd, um den Status der Markttiefe für ein benutzerdefiniertes Symbol zu übergeben. Die Funktion erlaubt die Übertragung der Markttiefe als ob die Preise vom Server des Brokers kommen.
    int  CustomBookAdd(
       const string        symbol,            // Symbolname
       const MqlBookInfo&  books[]            // ein Array mit den Beschreibungen der Elemente der DOM (Markttiefe)
       uint                count=WHOLE_ARRAY  // Anzahl der zu verwendenden Elemente
       );
  18. MQL5: Hinzugefügt wurde Überladungen der Funktion CustomSymbolCreate. Dies ermöglicht die Erstellung eines benutzerdefinierten Handelssymbols, das auf einem bestehenden Symbol basiert. Nach dem Erstellen kann jede Symboleigenschaft mit entsprechenden Funktionen bearbeitet werden.
    bool  CustomSymbolCreate(
       const string        symbol_name,       // nutzerdefinierter Symbolname
       const string        symbol_path="",    // Name der Gruppe, in der das Symbol erstellt werden soll
       const string        symbol_origin=NULL // Name des Symbols, auf dessen Basis das nutzerdefinierte Symbol erstellt werden soll
       );
    Der Name des Symbols, deren Eigenschaften für das nutzerdefinierte Symbol kopiert werden sollen, wird im Parameter "symbol_origin" angegeben.

  19. Die Funktion StringToTime, die die Zeichenkette mit Datum/Uhrzeit in einen Datumszeitwert umwandelt, wurde aktualisiert. Jetzt unterstützt sie folgenden Datumsformate:

    • yyyy.mm.dd [hh:mi]
    • yyyy.mm.dd [hh:mi:ss]
    • yyyymmdd [hh:mi:ss]
    • yyyymmdd [hhmiss]
    • yyyy/mm/dd [hh:mi:ss]
    • yyyy-mm-dd [hh:mi:ss]

  20. MQL5: Neue Eigenschaften der TERMINAL_VPS in der Enumeration ENUM_TERMINAL_INFO_INTEGER; sie zeigt, dass das Terminal auf dem Server MetaTrader Virtual Hosting (MetaTrader VPS) läuft. Wenn eine Anwendung auf einem Hosting-Server läuft, können Sie alle ihre visuellen Funktionen deaktivieren, da der virtuelle Server keine grafische Benutzeroberfläche hat.
  21. MQL5: Die neue Eigenschaft SYMBOL_EXIST in der Enumeration ENUM_SYMBOL_INFO_INTEGER bedeutet, dass das Symbol mit diesem Namen existiert.
  22. MQL5: Die Typisierung bei der Verwendung von vor-deklarierten Vorlagenfunktionen wurde korrigiert.
  23. MQL5: Hinzugefügt wurde einer Neu-Initialisierung der Indikatoren beim Wechsel des Handelskontos.
  24. MQL5: Optimierte StringSplit.
  25. MQL5: Fehler in der Standardbibliothek behoben.
  26. Tester: Hinzugefügt wurde die Funktion TesterStop — routinemäßige frühzeitiges Beenden eines Expert Advisors auf einen Testagenten. Jetzt können Sie ein Testende erzwingen, nachdem eine angegebene Anzahl von Verlustpositionen, ein vorgegebener Drawdownwert oder andere Kriterien erreicht wurden.

    Der mit dieser Funktion beendete Tests gelten als erfolgreich. Nach dem Funktionsaufruf wird die während des Tests erhaltene Handelshistorie und alle Handelsstatistiken an das Terminal übergeben.

  27. Tester: Deaktivierte wurde die Möglichkeit, Expert Advisors in der MQL5 Cloud Network im Modus anhand realer Ticks zu testen und zu optimieren. Dieser Modus kann nur von lokalen Agenten und lokalen Netzwerkfarmen verwendet werden.
  28. Tester: Verbesserte Arbeit mit Indikatoren bei der visuellen Prüfung. Jetzt werden Preisdiagramm und Indikatorlinien synchron gezeichnet, auch bei maximaler Visualisierungsgeschwindigkeit.
  29. Tester: Optimiertes und deutlich beschleunigtes Testen und Optimieren.
  30. Tester: Das Debugging von Indikatoren mit historischen Daten wurde korrigiert. Nun können die Funktionen OnInit und OnDeinit eines Indikators korrekt debuggt werden.
  31. Tester: Schnellerer Zugriff auf historische Daten beim Testen von Expert Advisors mit verschiedenen Währungen.
  32. Tester: Behoben wurde ein gelegentliches Einfrieren des visuellen Testers während des Debuggens mit historischen Daten.
  33. Tester: Schnellerer Start der Optimierungsläufe bei der Bearbeitung eines Aufgabenpakets durch einen Agenten.
  34. Tester: Die Richtlinie zur Verteilung von Aufgabenpaketen an die Testagenten wurde geändert. Die Paketgröße wurde erhöht und damit die Belastung des Netzwerkes deutlich reduziert.
  35. Tester: Das Verhalten der Optionen, die die Verwendung von lokalen, Netzwerk- und Cloud-Agenten ermöglichen, wurde geändert. Wenn Sie nun die Optionen ausschalten, wird die Bearbeitung der erhaltenen Aufgaben normal beendet, aber neuen Aufgaben werden nicht mehr übergeben. In früheren Versionen war das Verhalten ähnlich dem Befehl "Disable", der den Agentenbetrieb sofort beendete.




  36. MetaEditor: Hinzugefügt wurde die Unterstützung von Nicht-ANSI-Zeichen im Debugger. Jetzt werden die Ausdrücke korrekt angezeigt, auch wenn der Variablenname in Kyrillisch angegeben ist.
  37. Die Übersetzung der Benutzeroberfläche ins Kroatische wurde hinzugefügt.
  38. Die Dokumentation wurde aktualisiert.

Die Aktualisierung wird über das Live-Update-System verfügbar sein.

Grund der Beschwerde: