MetaTrader 5 Build 1860: Funktionen für die Arbeit mit Balken in MQL5 und Verbesserungen im Strategietester

Was ist neu im MetaTrader 5

15 Juni 2018

Terminal

  1. Der Dialog der Kontoeröffnung wurde komplett überarbeitet. Nun wählen Sie zuerst den gewünschten Broker aus, und danach den Kontotyp, den Sie eröffnen wollen. Dank dieser Änderung ist die Liste der Broker kompakter geworden, denn nun werden Unternehmensnamen angezeigt und nicht alle verfügbaren Server.

    Um die Suche zu erleichtern, wurden der Liste die Logos der Unternehmen hinzugefügt. Wenn der gewünschte Broker nicht in der Liste vorhanden ist, geben Sie den Namen des Unternehmens oder die Adresse des Servers in der Suche ein und klicken Sie auf "Find your broker".




    Um angehenden Händlern zu helfen, wurden dem Dialog Beschreibungen für Kontotypen hinzugefügt. Aufgrund der Aktualisierung der Allgemeinen Datenschutzrichtlinie (DSGVO) kann der aktualisierte Dialog der Kontoeröffnung Links zu verschiedenen Vereinbarungen und Richtlinien von Brokerunternehmen enthalten:




    Die Möglichkeiten für die Eröffnung von Real-Konten wurden wesentlich erweitert. Die Funktion zum Hochladen von Dokumenten für den Identitätsnachweis und die Bestätigung der Adresse, die früher in mobilen Terminals eingeführt wurde, ist nun auch in der Desktopversion verfügbar. Die von MiFID-regulierten Broker können nun alle benötigten Informationen für die Identifizierung des Kunden, einschließlich der Daten über Beschäftigung, Einkommen, Handelserfahrung usw. abfragen. Dies erlaubt es, reale Konten einfacher und schneller zu eröffnen, ohne unnötige Bürokratie.




  2. Nun werden die Werte von Stop Loss und Take Profit in der Historie der Abschlüsse angezeigt. Bei der Eröffnung und Umkehrung werden sie entsprechend den Werten von Stop Loss und Take Profit der Orders gesetzt, die diese Abschlüsse initiiert haben. Beim Ausstieg werden die Werte von Stop Loss und Take Profit der entsprechenden Positionen zum Zeitpunkt der Schließung verwendet. Letzteres erlaubt es, die Informationen über den Wert von Stop Loss und Take Profit einer Position zum Zeitpunkt ihrer Schließung zu speichern und anzuzeigen. In früheren Versionen wurden solche Informationen nicht gespeichert, denn Positionen verschwinden nach dem Schließen, und die Historie der Positionen wird basierend auf Abschlüssen gebildet.




  3. Nun werden die Werte von Stop Loss und Take Profit in der Historie der Positionen angezeigt. Für solche Positionen werden die Werte von Stop Loss und Take Profit der Abschlüsse angegeben, die die entsprechenden Positionen eröffnen und schließen.




  4. Nun wird das aktuelle Volumen von Pending Orders statt des ursprünglich abgefragten auf dem Chart angezeigt.




  5. Die Anzeige der Markttiefe im erweiterten Modus mit der aktivierten Anzeige des Spreads wurde optimiert und wesentlich beschleunigt.
  6. Die Verarbeitung der Ergebnisse der Ausführung von Handelsanfragen wurde optimiert. In einigen Fällen kann dies die Verarbeitung wesentlich beschleunigen.
  7. Es wurde ein Fehler des Trailing Stops behoben, der in einigen Fällen zum Senden mehrerer Anfragen hinsichtlich der Änderung des Stop Loss Levels einer und derselben Position führte.
  8. Es wurde das Setzen des minimalen und maximalen Volumens sowie des Schritts des Volumens in den Eigenschaften benutzerdefinierter Symbole korrigiert.
  9. Es wurde ein Fehler behoben, wegen dessen die Option "Fix Scale" bei der Anwendung eines Templates an den Chart des Handelsinstruments ignoriert wurde.
  10. Es wurde ein Fehler behoben, der in einigen Fällen dazu führte, dass die Tick-Historie falsch gespeichert wurde.

MQL5

  1. Die Geschwindigkeit der MQL5-Programme wurde durch eine zusätzliche Optimierung des Quellcodes bei der Kompilierung erhöht. Um von der erhöhten Geschwindigkeit zu profitieren, kompilieren Sie Ihre Programme in der neuen Version des MetaEditor.
    Leider führte die zusätzliche Optimierung dazu, dass neue Programme mit den älteren Versionen des Terminals nicht kompatibel sind. Alle Programme, die in MetaEditor Version 1860 und höher kompiliert wurden, können nicht in den Versionen des Terminals älter als 1860 gestartet werden. Dabei werden die Programme, die in den älteren MetaEditor Versionen kompiliert wurden, in neuen Terminals laufen.

  2. Es wurden die Funktionen iTime, iOpen, iHigh, iLow, iClose, iVolume, iBars, iBarShift, iLowest, iHighest, iRealVolume, iTickVolume und iSpread hinzugefügt. Diese Funktionen sind gleich den in MQL4 verwendeten Funktionen. Auf diese Weise ist es einfacher für Nutzer, den Code von Handelsprogrammen auf die Plattform der fünften Generation zu übertragen.

    Früher konnten die meisten Aufgaben dieser Funktionen mithilfe der Funktion Copy* erfüllt werden. Aber für die Suche nach maximalen/minimalen Werten auf dem Chart und für die Suche nach Balken nach Zeit, mussten Nutzer eigene Funktionen implementieren. Nun kann man das ganz einfach mithilfe der Funktionen iHighest, iLowest und iBarShift ausführen.

    iTime
    Gibt den Zeitpunkt der Eröffnung eines Balkens (der mithilfe des Parameters shift vorgegeben wurde) des entsprechenden Charts zurück.
    datetime  iTime(
       string           symbol,          // Symbol
       ENUM_TIMEFRAMES  timeframe,       // Zeitrahmen
       int              shift            // Verschiebung
       );

    iOpen
    Gibt den Open-Preis des Balkens (der durch den Parameter shift vorgegeben wurde) des entsprechenden Charts zurück.
    double  iOpen(
       string           symbol,          // Symbol
       ENUM_TIMEFRAMES  timeframe,       // Zeitrahmen
       int              shift            // Verschiebung
       );

    iHigh
    Gibt den High-Preis des Balkens (der durch den Parameter shift vorgegeben wurde) des entsprechenden Charts zurück.
    double  iHigh(
       string           symbol,          // Symbol
       ENUM_TIMEFRAMES  timeframe,       // Zeitrahmen
       int              shift            // Verschiebung
       );

    iLow
    Gibt den Low-Preis des Balkens (der durch den Parameter shift vorgegeben wurde) des entsprechenden Charts zurück.
    double  iLow(
       string           symbol,          // Symbol
       ENUM_TIMEFRAMES  timeframe,       // Zeitrahmen
       int              shift            // Verschiebung
       );

    iClose
    Gibt den Close-Preis des Balkens (der durch den Parameter shift vorgegeben wurde) des entsprechenden Charts zurück.
    double  iClose(
       string           symbol,          // Symbol
       ENUM_TIMEFRAMES  timeframe,       // Zeitrahmen
       int              shift            // Verschiebung
       );

    iVolume
    Gibt den Wert des Tick-Volumens des Balkens (der durch den Parameter shift vorgegeben wurde) des entsprechenden Charts zurück.
    long  iVolume(
       string           symbol,          // Symbol
       ENUM_TIMEFRAMES  timeframe,       // Zeitrahmen
       int              shift            // Verschiebung
       );

    iBars
    Gibt die Anzahl der Balken in der Historie nach dem entsprechenden Symbol und Zeitrahmen zurück.
    int  iBars(
       string           symbol,          // Symbol
       ENUM_TIMEFRAMES  timeframe        // Zeitrahmen
       );

    iBarShift
    Suche nach Balken nach Zeit. Die Funktion gibt den Index des Balkens zurück, der der angegebenen Zeit entspricht.
    int  iBarShift(
       string           symbol,          // Symbol
       ENUM_TIMEFRAMES  timeframe,       // Zeitrahmen
       datetime         time,            // Zeit
       bool             exact=false      // Modus
       );

    iLowest
    Gibt den Index des kleinsten gefundenen Wertes (Verschiebung hinsichtlich des aktuellen Balkens) des entsprechenden Charts zurück.
    int  iLowest(
       string           symbol,          // Symbol
       ENUM_TIMEFRAMES  timeframe,       // Zeitrahmen
       int              type,            // Identifikator der Zeitreihe
       int              count,           // Anzahl der Elemente
       int              start            // Index
      );

    iHighest
    Gibt den Index des größten gefundenen Wertes (Verschiebung hinsichtlich des aktuellen Balkens) des entsprechenden Charts zurück.
    int  iHighest(
       string           symbol,          // Symbol
       ENUM_TIMEFRAMES  timeframe,       // Zietrahmen
       int              type,            // Indentifikator der Zeitreihe
       int              count,           // Anzahl der Elemente
       int              start            // Index
      );

    iRealVolume
    Gibt den Wert des echten Volumens des Balkens (der durch den Parameter shift vorgegeben wurde) des entsprechenden Charts zurück.
    long  iRealVolume(
       string           symbol,          // Symbol
       ENUM_TIMEFRAMES  timeframe,       // Zeitrahmen
       int              shift            // Verschiebung
       );

    iTickVolume
    Gibt den Wert des Tick-Volumens des Balkens (der durch den Parameter shift vorgegeben wurde) des entsprechenden Charts zurück.
    long  iTickVolume(
       string           symbol,          // Symbol
       ENUM_TIMEFRAMES  timeframe,       // Zeitrahmen
       int              shift            // Verschiebung
       );

    iSpread
    Gibt den Wert des Spreads des Balkens (der durch den Parameter shift vorgegeben wurde) des entsprechenden Charts zurück.
    long  iSpread(
       string           symbol,          // Symbol
       ENUM_TIMEFRAMES  timeframe,       // Zeitrahmen
       int              shift            // Verschiebung
       );
  3. Es wurde die Funktion TesterHideIndicators hinzugefügt. Sie setzt das Anzeigen/Ausblenden von Indikatoren, die im Expert Advisor verwendet werden. Die Funktion dient zur Verwaltung der Sichtbarkeit der verwendeten Indikatoren nur beim Testen. Geben Sie das Flag true an, wenn die erstellten Indikatoren ausgeblendet werden müssen, andernfalls false.
    void  TesterHideIndicators(
       bool      hide     // Flag
       );
  4. Es wurde die Erzeugung des Ereignisses CHARTEVENT_CLICK beim Klicken mit der Maus auf Handelslevels des Charts hinzugefügt.
  5. Es wurde die Arbeit der Funktionen CopyTicks korrigiert und optimiert.
  6. Es wurde der Wert korrigiert, den die Funktion SymbolInfoDouble für die Eigenschaft SYMBOL_TRADE_LIQUIDITY_RATE zurückgab.
  7. Es wurde der Fehler des Kopierens von String-Arrays mit einem sich überschneidenden Speicherbereich behoben.
  8. Es wurde der Fehler der Zuweisung eines String-Arrays in der Funktion FileReadArray behoben.
  9. Es wurde eine Reihe von Fehlern in der Standardbibliothek MQL5 behoben.

Tester

  1. Das System für die Arbeit mit dem Cache der Optimierung wurde aktualisiert. Cache speichert Daten über die früher berechneten Durchläufe einer Optimierung. Der Strategietester speichert sie, um die Optimierung nach einer Pause fortzusetzen und um die bereits berechneten Durchläufe des Testens nicht neu zu berechnen.

    Änderungen im Speicherformat des Cache der Optimierung
    Früher wurde der Cache der Optimierung als eine XML-Datei gespeichert. Dieser Datei wurden alle Durchläufe der Optimierung eines Expert Advisors mit den vorgegebenen Einstellungen des Testens hinzugefügt. In einer und derselben Datei wurden die Ergebnisse der Optimierung mit verschiedenen Eingabeparametern gespeichert.
    Nun wird der Cache der Optimierung als binäre Dateien separat für jeden Set der zu optimierenden Parameter gespeichert. Durch die Änderung des Formats und Reduzierung der Dateigröße wurde die Arbeit des Testers mit dem Cache der Optimierung wesentlich beschleunigt. Diese Beschleunigung wird besonders deutlich, wenn man eine früher gestoppte Optimierung fortsetzt.

    Anzeige der Ergebnisse früher durchgeführter Optimierungen
    Nun können Sie sich die Ergebnisse der früher durchgeführten Optimierungen anschauen, ohne sich mit riesigen XML-Dateien in Drittprogrammen beschäftigen zu müssen. Öffnen Sie den Reiter "Optimierungsergebnisse", wählen Sie einen Expert Advisor und eine Datei mit dem Cache der Optimierung aus:



    In der Liste werden alle Dateien des Cache der Optimierung angezeigt, die für den ausgewählten Expert Advisor vorhanden sind. Für jede Datei werden Optimierungsdatum, Testeinstellungen (Symbol, Zeitrahmen, Datum) sowie Informationen über die Eingabeparameter angezeigt. Darüber hinaus können Sie die Optimierungsergebnisse nach Handelsserver filtern, auf welchem sie abgefragt wurden.

    Neuberechnung des Optimierungskriteriums während des Testens
    Ein Optimierungskriterium ist eine Kennzahl, deren Wert die Qualität des zu testenden Sets der Eingabeparameter definiert. Je größer der Wert des Optimierungskriteriums ist, desto besser wird das Ergebnis des Testens mit diesem Parameterset eingestuft.

    Früher wurde bei der Optimierung nur ein Kriterium berechnet, das vor dem Beginn der Optimierung ausgewählt wurde. Nun können Sie das Optimierungskriterium während des Testens ändern, der Strategietester wird alle Werte neu berechnen.




    Wie der Cache der Optimierung manuell verwendet wird
    Früher wurde der Cache der Optimierung in einer XML-Datei gespeichert, die man auch in Drittsoftware öffnen und analysieren konnte. Nun wird er in geschlossenen Binärdateien gespeichert. Um Daten im XML-Format zu erhalten, exportieren Sie sie über das Kontextmenü des Reiters "Optimierungsergebnisse".

  2. Es wurde die Option hinzugefügt, die Kontowährung und den Hebel für das Testen und für die Optimierung manuell zu setzen. Früher wurde die Kontowährung in Übereinstimmung mit dem aktuell verbundenen Konto gesetzt. Dementsprechend musste man zu den anderen Konten wechseln, um die Parameter zu ändern. Der Hebel konnte auch nur aus einer vordefinierten Liste ausgewählt werden, nun können Sie beliebige Werte angeben.

    Bitte beachten Sie, dass für korrekte Tests Kreuzkurse für die Umwandlung des Profits und der Margin in die angegebene Kontowährung verfügbar sein müssen.




  3. Es wurde das Verbot für die Verwendung von OpenCL in Testagenten aufgehoben. Früher konnten OpenCL-Devices nur beim Testen auf lokalen Agenten verwendet werden. Nun dürfen Agenten alle verfügbaren OpenCL-Devices (Prozessor, Grafikkarte) bei der Arbeit im lokalen Netz und in MQL5 Cloud Network verwenden.

MetaEditor

  1. Das Arbeiten mit dem MQL5 Storage wurde optimiert und beschleunigt.
  2. Ausführung des Debuggings nach einer Pause in der MQH-Datei korrigiert.
  3. Es wurden die Fehler des Hervorhebens des Quellcodes im Editor behoben.
  4. Die Navigation durch Testergebnisse wurde korrigiert.
  5. Massenweise Textersetzung korrigiert. In einigen Fällen wurde nur das erste Vorkommen einer Folge statt allen ersetzt.

Die Dokumentation wurde aktualisiert.