Was ist neu im MetaTrader 5

Die Aktualisierungen der Plattformen für den Desktop, Mobile und Web

26 Februar 2021
MetaTrader 5 build 2815: Zugriff auf die Markttiefe von Python, überarbeiteter Debugger und Verbesserungen des Profilers

Terminal

  1. Es wurde die Möglichkeit hinzugefügt, über die Python API auf Daten der Markttiefe (Depth of Market) zuzugreifen.
    Drei neue Funktionen ermöglichen die schnelle Abfrage von Daten für statistische Berechnungen und Aufgaben des maschinellen Lernens, die mit einer Fülle von Out-of-the-Box-Python-Bibliotheken implementiert werden können.
    • market_book_add — abonniert das MetaTrader 5-Terminal, um Ereignisse in Bezug auf Änderungen der Markttiefe für das angegebene Symbol zu erhalten.
    • market_book_get — gibt ein Tupel von BookInfo zurück, das die Depth of Market-Datensätze für das angegebene Symbol enthält.
    • market_book_release — bricht das MetaTrader 5 Terminal-Abonnement für Ereignisse ab, die mit Änderungen der Depth of Market für das angegebene Symbol zusammenhängen.

  2. Die maximale Länge von Push-Nachrichten wurde von 256 auf 1024 Zeichen erhöht. Jetzt können Sie mehr Informationen aus Ihren MQL5-Programmen auf mobilen Geräten senden.
  3. Es wurde eine vorläufige Version des Task-Managers hinzugefügt, der durch Drücken der F2-Taste aufgerufen werden kann.
    Der Task-Manager ermöglicht die Überwachung der von der Plattform verbrauchten Ressourcen. Sie können den von den Charts verbrauchten Speicher, die von den Expert Advisors genutzten CPU-Ressourcen und andere Leistungsmetriken anzeigen. Wenn die Leistung Ihrer Plattform nachlässt, können Sie das Problem leicht erkennen und beheben.



  4. Erweiterter Abonnementsdienst. Es wurde eine spezielle Anzeige für Symbole mit verzögerten Kursen hinzugefügt:
    • Symbole in der Marktübersicht werden mit einem Uhrensymbol gekennzeichnet, und der Verzögerungswert wird im Tooltip angezeigt
    • Die Benachrichtigung über die Datenverzögerung wird in Charts angezeigt



  5. Die Anzeige der Abonnementsliste wurde korrigiert, wenn keine Verbindung zum Handelskonto besteht.
  6. Links in E-Mails und Newslettern wurden korrigiert. Alle Links werden jetzt im Standardbrowser geöffnet. Zuvor wurden Links nur im Internet Explorer geöffnet.
  7. Korrigierte Verbindungen der Funktion WebRequest zu Hosts mit IPv6-Adressen und Cloudflare-Schutz.
  8. Verbesserte Funktionsweise und Reaktionsfähigkeit des VPS-Dienstes.
  9. Verbesserter Betrieb unter Wine und MacOS/Crossover, einschließlich der Version für macOS Big Sur mit dem M1-Prozessor.

MQL5

  1. Fehler in der Funktion ArrayPrint behoben. Die Funktion konnte gelegentlich beim Drucken von Arrays versagen.
  2. Optimierte Dateioperationen, die von File* Funktionen ausgeführt werden. Lese- und Schreiboperationen von Dateien laufen jetzt viel schneller.
  3. Die Einschränkung, dass die Größe für die zweite, dritte und vierte Dimension eines dynamischen Arrays angegeben werden muss, wenn das Array als Funktionsparameter verwendet wird, wurde entfernt. Dies erhöht die Wiederverwendung von Code und die Flexibilität.
    void func(int &arr[ ][ ][ ][ ])
      {
      }
  4.  Die Bedienung der Funktion ArrayBsearch wurde korrigiert. Die Funktion konnte bei einer binären Suche einen falschen Index des gefundenen Elements zurückgeben.

MetaEditor

  1. Im überarbeiteten Debugger sind weitere neue Funktionen verfügbar.
    • Arrays werden jetzt im Beobachtungsfenster entsprechend der mit ArraySetAsSeries eingestellten Sortierung angezeigt.
    • Unterstützung für lokale statische Variablen wurde hinzugefügt.
    • Die Anzeige des angegebenen Array-Elementwertes wurde korrigiert.
    • Korrigierte Behandlung von 'statischen' Klassenfeldern.
    • Weitere Verbesserungen für eine genauere und zuverlässigere Fehlersuche.

  2. Option "Optimierungen bei der Profilerstellung aktivieren" hinzugefügt.
    Der Code-Optimierungsmodus kann deaktiviert werden, um mehr Details in den Profiling-Bericht aufzunehmen. Die Codegeschwindigkeit ohne Optimierung kann um ein Vielfaches langsamer sein, aber dieser Modus bietet eine breitere Codeabdeckung. Bitte beachten Sie, dass mit der Optimierung Code-Engpässe unpräzise sein können.
    Ein milderer Profiling-Modus kann durch Deaktivieren von "Optimierung in der Profilerstellung aktivieren" (Enable inlining in profiling) eingestellt werden.


    Die Option zur Optimierungsverwaltung wurde auch zu den Projekteinstellungen hinzugefügt.
    • Wenn die Optimierung im Projekt deaktiviert ist, dann wird die neue Option ignoriert, und somit wird die Optimierung für die Profilerstellung (einschließlich Inlining-Operationen) immer deaktiviert sein.
    • Wenn die Optimierung im Projekt aktiviert ist, dann wird die neue Option bei der Kompilierung des Profils berücksichtigt.

  3. Logging für Debugging- und Profiling-Prozesse wurde hinzugefügt. Umgebungseinstellungen werden beim Start des Vorgangs protokolliert; die Statistik der gesammelten Daten wird beim Stoppen des Vorgangs protokolliert.
    MQL5 profiler    Start von 'ExpertMACD.ex5' mit Historie und den Parametern:
    MQL5 profiler       Symbol: 'EURUSD'
    MQL5 profiler       Period: 'H1'
    MQL5 profiler       Datum von: '2021.01.01'
    MQL5 profiler       Datum bis: '2021.02.22'
    MQL5 profiler       Tick-Modus: 'jeder Tick'
    MQL5 profiler       Ausführungsverzögerung: 0 ms
    MQL5 profiler       Einlage: 10000
    MQL5 profiler       Währung: 'USD'
    MQL5 profiler       Hebel: 1:100
    MQL5 profiler       Gewinn in Pips: NO
    MQL5 profiler    Profildaten erhalten (4640 bytes)
    MQL5 profiler    758 Messungen insgesamt, 0/0 Fehler, 470 kb Stapelspeicher analysiert
    MQL5 profiler    7782 Funktionsrahmen insgesamt gefunden (1929 mql5 Code, 342 integriert, 1403 andere, 4108 System)

Tester

  1. Die Angabe von Nicht-Handelszeiten in den erweiterten Testeinstellungen wurde korrigiert.

Aktualisierte Dokumentation.
15 Januar 2021
MetaTrader 5 Plattform-Build 2755: Popup-Preise-Fenster und Debugger-Verbesserungen

Terminal

  1. Überarbeitetes Fenster der Popup-Preise, das die Anzeige von Preisen für Finanzsymbole auf jeder Bildschirmgröße ermöglicht.

    Das Fenster unterstützt jetzt die mehrspaltige Darstellung, was eine effiziente Nutzung des Platzes auf dem Bildschirm ermöglicht. Um den Anzeigemodus umzuschalten, verwenden Sie den Dialog für die Fenstereigenschaften.


    Die weiteren Verbesserungen in diesem Fenster sind wie folgt
    • Das Menü zur Spaltenauswahl wurde hinzugefügt. Das Menü verfügt über die gleichen Symboleigenschaften, die auch in der Marktübersicht verfügbar sind.
    • Optimierter Betrieb mit einer großen Anzahl von Finanzinstrumenten. Die Leistung des Fensters ist jetzt für 10 und für 1000 Instrumente gleich hoch.
    • Anzeige von kurzen Instrumenteninformationen in einem Tooltip hinzugefügt.
    • Die Anwendung der Farbeinstellungen für die Anzeige von steigenden und fallenden Kursen wurde korrigiert.

  2. Anzeige von Transaktionen im Tick-Chart der synthetischen Markttiefe hinzugefügt.

    Synthetische Markttiefe wird für die Symbole verwendet, für die keine Preise der Ebene 2 bereitgestellt werden. In diesem Fall werden die Ebenen automatisch in Abständen, die einem Preisänderungsschritt entsprechen, ausgehend von den besten Preisen für Bid und Ask aufgebaut. Wenn nun für ein Symbol die Daten des letzten Geschäftspreises und des Volumens vorliegen, werden die entsprechenden Daten im Tick-Chart angezeigt. Die Informationen werden als Kreise angezeigt:
    • Rote Kreise zeigen Verkaufstransaktionen an.
    • Blaue Kreise zeigen Kauftransaktionen an.
    • Grüne Kreise erscheinen, wenn die Richtung der Transaktion undefiniert ist.

    Je größer der Kreis ist, desto größer ist das Volumen der Transaktion.



  3. Die Berechnung der griechischen Parameter in der Optionsleiste wurde korrigiert. Es konnte ein Fehler auftreten, wenn der Basiswert der Option einen Last-Deal-Preis von Null hatte.
  4. Wir setzen die Implementierung des neuen Dienstes "Abonnements" fort, der die Bereitstellung von zusätzlichen Handelsdiensten ermöglicht. Kürzlich haben wir die Anzeige von abhängigen Abonnements festgelegt. Solche Abonnements werden für gebündelte Dienste verwendet.
  5. Verbessertes Verhalten der Plattform auf Wine.

MQL5

  1. Erweitert wurden die Ereignisse der ChartEvent mit dem Loslassen der rechten und mittleren Maustaste. Dieses Ereignis kann beim Erstellen von grafischen Panels verwendet werden. Um die Ereignisse zu aktivieren, deaktivieren Sie das Kontextmenü des Charts über die Eigenschaft CHART_CONTEXT_MENU.
  2. Es wurde ein Fehler behoben, der einen erheblichen Fehler der Wartezeit der Sleep-Funktion verursachte.

MetaEditor

  1. Wir haben das globale Update des Debuggers eingeleitet. Das Fenster der beobachteten Ausdrücke wurde deutlich verbessert. Es ermöglicht jetzt die Anzeige des Inhalts von Arrays und Objekten als Dropdown-Listen sowie von Zeigerwerten.



    Um ein Array oder Objekt anzuzeigen, machen Sie im Beobachtungsfenster auf ihnen einen Doppelklick.

  2. Das Einfrieren beim Öffnen einiger Projekte wurde behoben.

Die Dokumentation wurde aktualisiert.
26 November 2020
MetaTrader 5 Build 2715: Allgemeine Verbesserungen

Terminal

  1. Korrigiert wurde das Einfrieren der Plattform bei Verwendung der Optionentafel. Das Einfrieren könnte durch eine Null-Tick-Größe verursacht werden, die in den Einstellungen des Handelsgeschäftes angegeben ist.
  2. Behoben wurde ein UI-Anzeigefehler auf HiDPI-Bildschirm.

MQL5

  1. Korrektur der Umwandlung von Zeichenkette in Zeit durch die Funktion StringToTime. Ein Fehler konnte auftreten, wenn die Zeit in der Form "yyyyymmdd [hhmiss]" angegeben wurde.
  2. Die Operation des impliziten Kopieroperators für Objekte, die dynamische Arrays enthalten, wurde korrigiert. Die Operation reduziert jetzt die Größe des Zielobjekts auf die Größe des kopierten Objekts.
    struct MyStruct
    {
      string Array[];
    };
    
    void OnStart()
    {
      MyStruct a1,a2;
      ArrayResize(a1.Array,3);
      ArrayResize(a2.Array,1);
      a1=a2;
    }
    Früher war die Array-Größe von "a1" nach dem Funktionsaufruf gleich 3. Jetzt ist die Größe 1.

MetaTester

  1. Aktualisierter Algorithmus zur Berechnung des Ratings der Testagenten für MQL5 Cloud Network. Das Rating wird jetzt genauer bestimmt und weniger häufig geändert.

Die Dokumentation wurde aktualisiert.
12 November 2020
MetaTrader 5 build 2690: Verbesserungen des MetaEditors

Terminal

  1. Korrigiert wurde die Anzeige der Funktion synthetische Markttiefe. Zuvor konnte diese Funktion für einige Symbole nicht verfügbar sein.

    Synthetische Markttiefe wird für die Symbole verwendet, für die keine Preise der Ebene 2 bereitgestellt werden. In diesem Fall werden die Ebenen automatisch in Abständen, die einem Preisänderungsschritt entsprechen, ausgehend von den besten Preisen für Bid und Ask aufgebaut. Dies ist ein praktisches Werkzeug, um Aufträge schnell und mit maximaler Klarheit zu platzieren, zu ändern und zu löschen.



MQL5

  1. Optimierter und stark beschleunigter Zugriff auf Last, dem letzten Preis, aus MQL5-Programmen mit der Funktion SymbolInfoTick.
  2. Korrektur des Rücksetzens des Indikators Ichimoku Kinko Hyo aus der Dialogbox.



  3. Korrektur der Funktionen Copy*, die bei einer nicht vorhandenen Historie des Handelsinstruments einfrieren konnte.
  4. Weitere Verbesserungen innerhalb des Gesamtupdates des Code-Profilers. Zusätzlich zu den vorgestellten Neuerungen von build 2650 wurden folgende Verbesserungen umgesetzt:
    • Eine verbesserte Datenpräsentation
    • Kürzere Spaltennamen werden jetzt im Bericht verwendet
    • Die Fähigkeit, Profilberichte in einer Datei zu speichern
    • Hinzugefügt wurde die Anzeige eines Tooltips mit einer Zeilennummer für Funktionen im Bericht.



MetaEditor

  1. Hinzugefügt wurde die Möglichkeit, die Kontrolle der Zwischenablage zu deaktivieren und ihren Verlauf zu löschen.

    Die Funktion zur Kontrolle der Zwischenablage verbessert die Verwendbarkeit des Quellcodes, indem sie einen schnellen Zugriff auf kürzlich verwendete Daten ermöglicht. Drücken Sie Alt+V an einer beliebigen Quellcodeposition, wählen Sie eine der früher kopierten Zeilen aus dem Menü aus, und die Zeile wird an der ausgewählten Position eingefügt.

    Verwenden Sie die entsprechenden Symbolleistenbefehle oder Editoreinstellungen, um die Kontrolle zu aktivieren/deaktivieren.




  2. Korrektur der Berechnung beobachteter Ausdrücke beim Debuggen eines Programms.

MetaTester

  1. Der Handel ist jetzt für Expert Advisors, die im Strategie-Tester im Modus Frame-Erhalt laufen, verboten.
  2. Korrektur des Imports der Optimierungsergebnisse im Strategietester. Ein Fehler konnte die Werte der Zeitrahmen falsch importieren.

Die Dokumentation wurde aktualisiert.
9 Oktober 2020
Die neue MetaTrader 5 Plattform build 2650: Verbesserungen beim Laden von Hintergrundcharts und des MQL5-Code-Profilers

Terminal

  1. Die Registerkarte Optionen bietet eine neue Einstellung mit dem Titel "Chartdaten für offene Positionen und Orders vorab laden".

    Um Datenverkehr zu sparen, lädt die Handelsplattform die Historie der Symbolpreise nur dann herunter, wenn die entsprechenden Daten angefordert werden, z.B. beim Öffnen des Preischarts oder beim Start von Tests. Bei aktiv verwendeten Symbolen ist dies jedoch nicht immer sinnvoll. Wenn Sie die neue Option aktivieren, werden die Charts der Symbole, für die Sie offene Positionen oder Pending Orders haben, im Hintergrundmodus aktualisiert, sobald Sie die Plattform starten. Auf diese Weise müssen Sie nach der Chart-Eröffnung nicht auf das Herunterladen der Daten warten, und die relevanten Daten stehen sofort zur Analyse zur Verfügung.




  2. Korrektur der Generierung von Tagesbars nach Wochenenden.
  3. Korrektur der Aktualisierung von Charts. Nach dem zusätzlichen Herunterladen von aktualisierten Preisdaten konnte es gelegentlich vorkommen, dass die Charts nicht aktualisiert wurden.
  4. Optimierte Aktualisierung des Caches der Konto-Handelshistorie. Die Optimierung ermöglicht die Reduzierung von Datenverzögerungen bei der Verwendung der Funktionen History*.
  5. Korrektur der Darstellung der Kommentarspalte bei Anzeige Handelshistorie als Positionen.
  6. Die Anzeige der Schaltfläche SignalAbonnementserneuerung wurde korrigiert.

MQL5

  1. Weitere Verbesserungen innerhalb des Gesamtupdates des Code-Profilers. Die folgenden Funktionen wurden zusätzlich zu den in build 2615 vorgestellten Neuerungen implementiert:

    Neue Parameter wurden hinzugefügt
    Wir haben bereits früher die Anwendung der Beispielmethode für den neuen Profiler angekündigt. Der Profiler macht Pausen in der MQL-Programmoperation (~1000 Mal pro Sekunde) und sammelt Statistiken darüber, wie viele Pausen in bestimmten Codesegmenten durchgeführt wurden. Dazu gehört auch die Analyse von Aufrufstapeln, um den Anteil jeder Funktion an der gesamten Code-Operationszeit zu bestimmen. Nach dem Profiling erhalten die Nutzer Statistiken darüber, wie oft die Operation angehalten wurde und wie oft jede der Funktionen im Aufrufstapel erschien:

    • Gesamt-CPU [Einheit,%] — wie oft die Funktion im Aufrufstapel erschien.
    • Eigen-CPU [Einheit,%] — die Anzahl der "Pausen", die direkt innerhalb der angegebenen Funktion aufgetreten sind. Diese Variable ist entscheidend für die Erkennung von Engpässen: Laut Statistik treten Pausen häufiger auf, wenn mehr Prozessorzeit benötigt wird.


    Hinzugefügt wurde die Möglichkeit, die Funktion Inlining während des Profiling zu deaktivieren
    Bei der Kompilierung von MQL-Programmen werden Funktionen inlined, d.h. der Funktionscode wird direkt der Funktionsaufrufseite hinzugefügt. Dies ermöglicht eine erhebliche Beschleunigung. Allerdings erschwert dieses Verfahren das Profiling von Funktionen. Um einen Bericht "rein" über die Funktionen zu erhalten, können Sie Inlining in den Einstellungen des MetaEditors deaktivieren:




    Aktualisierter Berichtsentwurf
    Wir haben den Bericht über das Profiling und die Darstellung der Informationen über das Profiling im Quellcodefenster neu gestaltet. Das modernisierte Design wird den Nutzern von Visual Studio vertrauter sein.




  2. Korrektur der Funktion CopyTicksRange. Die Funktion konnte manchmal unvollständige Daten zurückgeben.
  3. Neuer Fehlercode TRADE_RETCODE_HEDGE_PROHIBITED — Eröffnung einer Position oder Platzierung einer Pending Order ist nicht erlaubt, da Hedge-Positionen nicht möglich sind. Der Fehler wird zurückgegeben, wenn ein Nutzer versucht, eine Handelsoperation auszuführen, falls das Hedging für das Konto deaktiviert ist und der Nutzer bereits eine entgegengesetzte Order oder Position für dasselbe Symbol hat.
  4. Die Möglichkeit zum Aufruf von MessageBox beim Debuggen von Indikatoren wurde entfernt. MessageBox kann nicht von Indikatoren aus aufgerufen werden, da sie die Thread-Ausführung für die gesamte Zeit aussetzt, während sie auf die Antwort des Benutzers wartet.
  5. Optimierte und signifikant beschleunigte Aufnahme von Handelsinstrumenten in den Market Watch mit der Funktion SymbolSelect.
  6. Korrektur der Funktion ArrayInsert für Array mit fixer Größe. Jetzt entspricht das Verhalten der Beschreibung in der Dokumentation: Beim Einfügen von Elementen ändert sich die Größe des Ziel-Arrays nicht und die Elemente rechts von der Einfügeposition werden nach rechts verschoben (die letzten 'count'-Elemente werden "fallengelassen"), während die Elemente von der Quelle auf den freigewordenen Platz kopiert werden.

Tester

  1. Korrektur der Arbeit mit nutzerdefinierten Handelsbedingungen-Einstellungen während des Testens; der Einstellungsdialog wurde überarbeitet.

    • Die Berechnung der nutzerdefinierten Provisionen wurde korrigiert. Um Provisionen zu aktivieren, reicht es jetzt aus, den Symbolnamen statt des gesamten Pfades anzugeben.
    • Neu arrangierte Registerkarten für einen effizienteren Betrieb.
    • Das Dialogfeld und die Option zur Aktivierung nutzerdefinierter Einstellungen wurden umbenannt.
    • Optimierte Spaltenbreite in den Einstelltabellen.
    • Wenn die Option "Nutzerdefinierte Einstellungen verwenden" deaktiviert ist, sind alle anderen Einstellungen im Dialogfeld deaktiviert. Zuvor blieben die Einstellungen editierbar, und Nutzer könnten fälschlicherweise annehmen, dass die Einstellungen während des Testens angewendet werden.




  2. Ein gelegentlicher Fehler im Zusammenhang mit dem Empfang von Orders aus der Handelsgeschichte per Ticket wurde behoben.

MetaEditor

  1. Es wurden Voreinstellungen für das Farbschema des Code-Editierfensters hinzugefügt: hell (Standard), dunkel und blau. Sie können den Editor anpassen, ohne die Editor-Ansicht manuell konfigurieren zu müssen.

    Zusätzlich ist es jetzt möglich, die Randfarbe für die Tooltips der Funktion anzupassen.



     
  2. Alle Symbole in den Symbolleisten wurden aktualisiert, um HiDPI-Monitore zu unterstützen.

Die Dokumentation wurde aktualisiert.

17 September 2020
MetaTrader 5 Build 2615: Grundlegende Analyse und komplexe Kriterien im Strategietester

Terminal

  1. Erweiterte Möglichkeiten für eine Fundamentalanalyse.
    Neue Handelsinstrument-Eigenschaften hinzugefügt, die eine genauere Kategorisierung der Symbole ermöglichen:
    • Sektor — der Wirtschaftssektor, zu dem der Vermögenswert gehört, wie z.B. Energie, Finanzen, Gesundheitswesen und andere.
    • Industrie — der Industriezweig, zu dem der Vermögenswert gehört, wie z.B. Sportbekleidung, Zubehör, Automobilherstellung, Gaststättengewerbe und andere.
    • Land — das Land des Unternehmens, dessen Aktien an der Börse gehandelt werden.
    Basierend auf diesen Eigenschaften wurde in Market Watch ein separates System implementiert, das effiziente Operationen mit Symbolen ermöglicht. Wählen Sie eine Kategorie aus dem Menü aus, und alle verfügbaren Instrumente werden einer Liste für eine eingehende Analyse hinzugefügt:



    Relevante Eigenschaften wurden den Vertragsspezifikationen hinzugefügt:



    Zudem können Fundamentaldaten zu Handelssymbolen nun direkt von der Plattform aus geöffnet werden. Links zu den größten Aggregatoren wurden dem Kontextmenü von Market Watch hinzugefügt:



    Die Verfügbarkeit von erweiterten Daten wird vom Broker kontrolliert. Wir haben jedoch die Standardverfügbarkeit der erweiterten Informationen für die maximale Anzahl von Instrumenten sichergestellt. Sobald die Broker ihre Server auf die neue Version aktualisieren, erscheinen die entsprechenden Länder-, Branchen- und Industriedaten in Ihren Plattformen.
  2.  Verbesserte Darstellung der Signale und des Marktes. Die Schaltflächen für Miete und Abonnement wurden auf der linken Seite hinzugefügt:



    Weitere Verbesserungen betreffen die Bereichsgestaltung. Dazu gehören hellere Tastenfarben, größere MQL5-Anmeldeschaltflächen und andere Verbesserungen.

  3. Die potentiellen Gewinn-/Verlustberechnung für Stop-Loss- und Take-Profit-Chartebenen wurden korrigiert.



  4. Fehler bei der Berechnung von synthetische Instrumente behoben. Die Fehler konnten gelegentlich zu einem Einfrieren der Plattform beim Start führen.
  5. Die Darstellung der Werte des integrierten Fraktalindikators im Datenfenster wurde korrigiert.
  6. Alle Icons in den Symbolleisten der Plattform wurden aktualisiert, um HiDPI-Monitore zu unterstützen.
  7. Positionsvolumenanpassung für kopierte Handelssignale wurde korrigiert. Der Anpassungsvorgang konnte manchmal aufgrund falsch angewandter Stopp-Level fehlschlagen, was den Fehler "ungültige Stopps" verursachte.
  8. Optimierte Neuerstellung der Kurshistorie nach relevanten Änderungen auf dem Server.
  9. Korrektur der Darstellung von Tooltips auf Handelsebene in Charts. In einigen Fällen wurden Tooltips in Charts angezeigt, auch wenn die Anzeige der Handelsebenen deaktiviert war.
  10. Korrektur der Option "Auf Charts anzeigen \ Automatisches Update" im Kontextmenü von Orders und Positionen im Abschnitt "Werkzeuge\Handel". Wenn diese Option jetzt nicht angekreuzt ist, wird die Anzeige der Handelshistorie für alle offenen Charts deaktiviert.

MQL5

  1. Die Funktion MathClassify wurde hinzugefügt. Sie bestimmt den Typ einer reellen Zahl und gibt ein Ergebnis als Wert aus der neuen Enumeration ENUM_FP_CLASS zurück.
    ENUM_FP_CLASS  MathClassify(
       double  value      // reelle Zahl
       );
    Die Enumeration verfügt über folgende Werte:
    • FP_SUBNORMAL — eine anormale Zahl, die näher Null ist, als die kleinst mögliche normale Zahl DBL_MIN 2.2250738585072014e-308
    • FP_NORMAL — ein normale Zahl im Bereich von 2.2250738585072014e-308 bis 1.7976931348623158e+308
    • FP_ZERO — eine positive oder negative Null
    • FP_INFINITE — eine Zahl, die nicht durch einen entsprechenden Typ dargestellt werden kann, Minus- oder Plus-Unendlich
    • FP_NAN — keine Zahl

    Verwenden Sie Folgendes, um die Gültigkeit einer Zahl zu prüfen:
    if(MathClassify(value)>FP_ZERO)
      {
       Print("Der Wert ist keine gültige Zahle");
      }
  2. Es wurden Symboleigenschaften hinzugefügt, die mit den Funktionen SymbolInfoString abgefragt werden können:
    • SYMBOL_COUNTRY — das Land des Unternehmens, dessen Aktien an der Börse gehandelt werden.
    • SYMBOL_SECTOR_NAME — der Wirtschaftssektor, zu dem der Vermögenswert gehört, wie z.B. Energie, Finanzen, Gesundheitswesen und andere.
    • SYMBOL_INDUSTRY_NAME — die Industrie, zu der der Vermögenswert gehört, wie z.B. Sportbekleidung, Zubehör, Automobilherstellung, Gaststättengewerbe und andere.

    Die Eigenschaften werden in Textform zurückgegeben.

    Der Sektor und die Branche, zu der das Handelsinstrument gehört, kann als Wert einer Enumeration ermittelt werden. Dazu können die folgenden Eigenschaften mit der Funktion SymbolInfoInteger abgefragt werden:
    • SYMBOL_SECTOR
    • SYMBOL_INDUSTRY

    Für die Arbeit mit diesen Eigenschaften wurden die Enumerationen ENUM_SYMBOL_SECTOR und ENUM_SYMBOL_INDUSTRY hinzugefügt.

  3. Ein neuer Speicherverwaltungsmechanismus wurde in MQL5-Programme implementiert. Er ermöglicht eine bis zu 3-mal schnellere Speicherzuweisung und vermeidet potenzielle Speicherzugriffsfehler.
  4. Optimierte und beschleunigte Operationen mit der Konto-Tick-Historie über die Funktionen Historie*.
  5. Der Aufruf von WebRequest von der Funktion OnDeinit wurde korrigiert. In früheren Versionen konnte der Funktionsaufruf nicht implementiert werden, wenn ein Expert Advisor angehalten worden war.
  6. Die Funktionsaufrufe von WebRequest von den Diensten wurde korrigiert. In früheren Versionen konnte ein Funktionsaufruf nach einem Neustart des Dienstes fehlschlagen.
  7. Prüfung auf Unterstützung für Werte vom Typ double auf einem Gerät bei Verwendung von OpenCL hinzugefügt. Der Typ float kann aufgrund übermäßiger Rundung nicht in Finanzberechnungen verwendet werden. Daher verlangt die Plattform explizit eine Unterstützung von 'doubles' für die Berechnungen. Wenn der Typ double nicht unterstützt wird, wird eine entsprechende Meldung in das Plattformprotokoll geschrieben: Gerät '<name>' unterstützt den Typ 'double' nicht. Früher wurde in solchen Fällen nur eine allgemeine Fehlermeldung angezeigt.
  8. Erheblich beschleunigte Ausführung der Funktion AccountInfoDouble mit den Parametern ACCOUNT_EQUITY und ACCOUNT_BALANCE.
  9. Korrigiert wurde die Anwendung von Vorlagen auf ein Chart durch die Funktion ChartApplyTemplate.
  10. Korrigiert wurde der Funktionsaufruf ChartSetInteger mit dem Parameter CHART_BRING_TO_TOP.
  11. Der integrierten Bibliothek Alglib wurde eine neue Methode Conjugate hinzugefügt. Diese Methode ermöglicht die konjugierte Zahlenberechnung für komplexe Zahlen. Die Bibliothek befindet sich in MQL5\Include\Math\Alglib.
  12. Vollständig überarbeitet wurde der Code-Profiler. Der neue Profiler arbeitet mit einer höheren Genauigkeit und mit einer höheren Geschwindigkeit.
    • Die Analyse basiert jetzt auf dem Code, der ähnlich wie bei der Kompilierung der Release-Version eines Programms optimiert wird. Dies ermöglicht eine genauere Bestimmung der Code-Ausführungsgeschwindigkeit, da während der Programmausführung exakt derselbe Code verwendet wird.
    • Der neue Profiler verwendet die Profiling-Methode "Sampling". Diese leichtgewichtige und genaue Methode sammelt Statistiken zur Anwendungsleistung, indem sie Daten zum Aufrufstapel sammelt und die Leistung in regelmäßigen Abständen berechnet.
    • Im Gegensatz zu den vorherigen Versionen nimmt der neue Profiler keine Änderungen am analysierten Code vor. Die zuvor verwendete Instrumentationsmethode fügte dem Code bestimmte Konstrukte hinzu, die zur Messung der Funktionsgeschwindigkeit verwendet wurden. Dies könnte sich auf die endgültige Codegeschwindigkeit auswirken.

    Die Entwicklung des Profiler wird fortgesetzt. Weitere Verbesserungen werden in kommenden Plattformversionen verfügbar werden.

Tester

  1. Optimierte Operationen mit dem MQL5-Cloud-Netzwerk. Das Laden von Expert Advisors auf Agenten wurde korrigiert.
  2. Ein neues Optimierungskriterium "Komplexes Kriterium max" hinzugefügt. Dies ist ein integrales und komplexes Maß für die Qualität eines Testdurchlaufs. Es misst mehrere Parameter:
    • Anzahl der Deals
    • Drawdown
    • Erholungsfaktor
    • Erwartetes Ergebnis
    • Sharpe Ratio

    Der höchste Wert eines Parameters (zum Beispiel des Gewinns) ist nicht immer die beste Option im Hinblick auf die komplexe Analyse. Das komplexe Kriterium wählt nach und nach die besten Durchläufe aus: Zunächst nach der Anzahl der Deals, dann nach dem Expected Payoff, dem Erholungsfaktor und so weiter. Die neue Option ermöglicht den Erhalt der besten Optimierungsdurchläufe in Abhängigkeit von allen Parametern. Außerdem können Sie den optimalen Durchlauf auf der Grundlage des gewünschten Parameters auswählen, wie z.B. den höchsten Gewinn.

    Wählen Sie das neue Kriterium in den Einstellungen des Strategietesters und starten Sie die Optimierung.



    Der Wert "Komplexes Kriterium max" wird in einem separaten Register "Ergebnis" in den Optimierungsergebnissen angezeigt. Die Durchläufe können nach dieser Spalte sortiert werden. Das neue Kriterium unterstützt farbige Kennzeichnungen, um die besten Durchläufe visuell hervorzuheben. Werte unter 20 werden rot hervorgehoben, und Werte über 80 werden dunkelgrün dargestellt.



  3. Korrektur der Berechnung der nutzerdefinierten Kommission im Strategietester.

MetaEditor

  1. Wir haben die globale Überarbeitung Funktionen für das intelligente Code-Management (IntelliSense) initiiert.
    • Hinweise zeigen jetzt neben dem Namen auch die vollständige Funktionssignatur an.
    • Die Schriftart für die Hinweise wird jetzt gemäß den Einstellungen des MetaEditors eingestellt.
    Weitere Verbesserungen werden in kommenden Plattformversionen verfügbar werden.

Aktualisierte Dokumentation.
24 Juli 2020
MetaTrader 5 build 2560: Verbessertes integriertes Schulungssystem

Terminal

  1. Im vorherigen Plattform-Update haben wir ein vollständig überarbeitetes Schulungssystem vorgestellt. In der neuesten Version wurden weitere Verbesserungen implementiert:
    • Der Fortschrittsbalken ist deutlicher sichtbar geworden
    • Der Text von ein paar Empfehlungen wurde bearbeitet
    • Die Berechnung des Lernfortschritts wurde korrigiert
    Schließen Sie alle Lektionen ab, um die Möglichkeiten der Plattform bis zum Maximum auszureizen.




  2. Optimierte und erheblich beschleunigte Verarbeitung großer Tickströme (mit mehr als Zehntausenden von Ticks pro Minute).
  3. Fehler bei der Berechnung von Preisänderungen im Vergleich zum Schlusskurs der vorherigen Sitzung behoben. Um diese Variable anzuzeigen, aktivieren Sie die Spalte "Tägliche Änderungen" im Kontextmenü von Market Watch.

MQL5

  1. Optimierter und beschleunigter Zugriff auf numerische Charteigenschaften über die Funktion ChartGetInteger.
  2. Die Suche nach nutzerdefinierten Indikatoren wurde korrigiert, wenn ein solcher Indikator von einem MQL5-Programm über die Funktion iCustom angefordert wird.

MetaEditor

  1. Hinzugefügt wurde das Kompilieren von C/C++ Programmen in Projects.

Tester

  1. Signifikat verbesserte Leistung des MQL5 Cloud Network. Aufgrund der verbesserten Effizienz der Agentensuche kann das Netzwerk Aufgaben schneller verteilen und Berechnungsergebnisse zurückgeben.
Aktualisierte Dokumentation.

10 Juli 2020
MetaTrader 5 Build 2530: Sortierung in Market Watch und erweiterte Operationen mit Optimierungsergebnissen

Terminal

  1. Im Fenster Market Watch kann nun sortiert werden:
    • Klicken Sie auf einen Spaltennamen, um die Liste nach den gewünschten Daten zu sortieren, z.B. nach dem Symbolnamen, dem Schlusskurs, der täglichen Änderung oder anderen Variablen. Verwenden Sie das neue Menü mit den beliebtesten Sortieroptionen. Die Sortierung nach dem höchsten Wachstum und Rückgang auf der Grundlage einer täglichen Symbolpreisänderung kann beim Handel mit Börseninstrumenten nützlich sein.
    • Verwenden Sie das neue Menü mit den am häufigsten verwendeten Sortieroptionen. Die Sortierung nach dem höchsten Wachstum und Rückgang auf der Grundlage einer täglichen Symbolpreisänderung kann beim Handel mit Börseninstrumenten nützlich sein.


  2. Neu gestaltetes und verbessertes integriertes Lernsystem.
    Alle interaktiven Hinweise sind zur leichteren Navigation in verschiedenen Kategorien gruppiert. Für jede Kategorie wird die Anzahl der abgeschlossenen und verbleibenden Hinweise angezeigt.



    Jeder Hinweis ist jetzt mit einer Checkliste versehen, die die Schlüsselaktion angibt, die der Benutzer ausführen sollte, um die Schulung abzuschließen.
    Wir haben das Design des Lernsystems überarbeitet und Fehler in der Berechnung des Gesamtfortschritts behoben.

  3. Es wurde eine automatische Berechnung der vorherigen Sitzungsschlusszeit und der aktuellen Sitzungsöffnungszeit eines Symbols hinzugefügt. Wenn die entsprechenden Daten nicht direkt vom Broker zur Verfügung gestellt werden, berechnet das Terminal die Werte auf der Grundlage der ersten und der letzten Kurse in einer Sitzung. Die relevanten Informationen können im Market Watch-Fenster angezeigt werden: Aktivieren Sie die entsprechenden Spalten im Abschnitt "Symbole" oder navigieren Sie zum Abschnitt "Details".



  4. Optimierte und beschleunigte Anwendung von Preisen offener Positionen. Wenn neue Ticks im Terminal ankommen, werden Preise, Gewinn und Margenanforderungen schneller aktualisiert.
  5. Korrigierte Berechnung des integrierten Stochastischer Oszillators. Bei einer begrenzten Anzahl von Balken, die in Diagrammen angezeigt wurden, konnte ein Fehler auftreten.

MQL5

  1. Optimierte und beschleunigte Funktion AccountInfo*, die Zugang zu Handelskontoeigenschaften bietet.
  2. Optimierter und beschleunigter Zugriff auf numerische Charteigenschaften über die Funktion ChartGetInteger.

MetaEditor

  1. Die folgenden Kontextmenübefehle wurden die Registerkarten der Codebearbeitung für effiziente Operationen mit der MQL5-Speicherung hinzugefügt:
    • Vergleichen einer Arbeitskopie einer Datei mit der aktuellen Revision
    • Änderungen rückgängig machen
    • Datei-Änderungshistorie anzeigen



  2. Das Hervorheben der passenden Klammern wurde geändert. Das Hervorheben wird jetzt auf Klammern und nicht auf den Hintergrund angewendet. Das Hervorheben ist standardmäßig deaktiviert. Sie kann unter Editoreinstellungen aktiviert werden.



  3. Verbesserte Such- und Ersetzungsfunktionen:
    • Wenn Sie einen Text in der Datei auswählen und das Suchfeld aufrufen, wird der Text automatisch im Feld "Suchen" ersetzt. Wenn kein Text ausgewählt ist, wird ein Text aus der Zwischenablage in das Feld "Suchen" eingefügt. Wenn die Zwischenablage leer ist, wird der Fokus im Suchfeld auf das Feld "Suchen" gesetzt.
    • Ein ähnliches Verhalten ist für das Ersetzen-Fenster implementiert: Der ausgewählte Text wird in das Suchfeld eingefügt, und der Cursor wird in das Feld "Ersetzen durch" bewegt. So können Sie sofort den gewünschten neuen Text eingeben.
    • Die Such- und Ersetzungsergebnisse werden jetzt im Protokoll anstelle des zuvor verwendeten separaten Dialogfensters angezeigt. Wenn das Toolbox-Fenster aktiviert ist, wird darin automatisch die Registerkarte Journal ausgewählt. Sie müssen also nicht mehr mit zusätzlichen Fenstern arbeiten.

  4. Korrigierte Suche im Dateivergleichsfenster bei der Arbeit mit dem MQL5-Speicher.
  5. Es wurde die Möglichkeit zum Suchen und Ersetzen in Dateien hinzugefügt, die mit der aktuellen Datei über die Direktive #include verbunden sind.
    Die neue Option ermöglicht schnellere Operationen mit Projekten, die aus mehreren Dateien bestehen. Um z.B. einen Text in allen Dateien zu ersetzen, müssen Sie deren Verzeichnisse nicht manuell angeben, während der Editor sie automatisch über die #include-Direktiven finden kann.



Tester

  1. Wir haben Optimierungskriterien überarbeitet, die zwei Variablen enthalten, von denen eine der Saldo (Balance) ist. Jetzt berücksichtigen die Kriterien nur noch die zweite Variable und ignorieren den Saldo. Die neuen Optimierungskriterien sind einfacher zu analysieren.

    • Saldo + Maximaler Gewinn -> Maximaler Gewinn
    • Saldo + maximal Erwartetes Ergebnis (Expected Payoff) -> maximal Erwartetes Ergebnis
    • Saldo + Minimale Inanspruchnahme (Drawdown) -> Minimale Inanspruchnahme
    • Saldo + Maximaler Erholungsfaktor (Recovery Factor) -> Maximaler Erholungsfaktor
    • Saldo + Maximales Sharpe Ratio -> Maximales Sharpe Ratio


  2. Im Untermenü "Optimierungsparameter" haben wir Befehle zum schnellen Ein- oder Ausblenden aller Eingabespalten in der Tabelle mit den Optimierungsergebnissen hinzugefügt:



  3. Färbung für die Tabelle und das Diagramm der Optimierungsergebnisse für eine bequemere visuelle Analyse hinzugefügt.
    Das Diagramm wird je nach dem Wert des Optimierungskriteriums mit einem Gradienten von grün nach rot eingefärbt. Folgende Farben werden für die Tabelle verwendet:
    • Saldo: Werte über der Ersteinlage sind blau gefärbt, Werte unter der anfänglichen Einlage sind rot dargestellt.
    • Gewinn: Blau wird für Werte über Null verwendet, und rot für Werte unter Null.
    • Erwartetes Ergebnis (Expected Payoff): Blau wird für Werte über Null verwendet, und rot für Werte unter Null.
    • Inanspruchnahme (Drawdown): von grün (0-5%) bis rot (über 30%).
    • Sharpe Ratio: von Grün (über 2) nach Rot (unter 0).
    • Erholungsfaktor (Recovery Factor): von grün (über 2) nach rot (unter 1).



  4. Hinzugefügt wurden Filter in der Optimierungsergebnistabelle. Verwenden Sie Filter, um erfolglose Durchläufe aus der Liste auszublenden:
    • Durchläufe ohne Handel
    • Verlustbringende Durchläufe
    • Durchläufe mit einer Inanspruchnahme (Drawdown) von über 50%.
    • Durchläufe mit einem Erholungsfaktor unter 1
    • Durchläufe mit einem Sharpe-Ratio unter 0,5



  5. Optimierte Arbeit des MQL5-Cloud-Netzwerks. Wenn nun eine Optimierung für denselben Expert Advisor gestartet wird, versucht das Netzwerk, die gleichen Test-Agenten zu verwenden, die während des vorherigen Optimierungsdurchlaufs verwendet wurden, da das erforderliche Marktumfeld, einschließlich der Handelshistorie, auf solchen Agenten bereits verfügbar ist.

Aktualisierte Dokumentation.
5 Juni 2020
MetaTrader 5 build 2485: iCustom-Verbesserungen und Gesamtoptimierung in MQL5

Terminal

  1. Optimierte und erheblich beschleunigte Bearbeitung der Balkenhistorie für kundenspezifische Finanzinstrumente. Die Verbesserung betrifft auch die Funktion CustomRatesUpdate.
  2. Der Export von nutzerdefinierten Symboleinstellungen in eine JSON-Datei wurde korrigiert.
  3. Fehler in den Absturz-Logs behoben.

MQL5

  1. Diese Version enthält einen überarbeiteten Algorithmus zum Laden nutzerdefinierter Indikatoren über iCustom.

    Wenn der Backslash '\' vor dem Namen des nutzerdefinierten Indikators angezeigt wird, wird die EX5-Indikator-Datei relativ zum MQL5-Stammordner durchsucht. Bei einem Aufruf von iCustom(Symbol(), Periode(), "\FirstIndicator"...) wird daher der Indikator MQL5\FirstIndicator.ex5 geladen. Wenn die Datei unter diesem Pfad nicht gefunden wird, wird der Fehler 4802 (ERR_INDICATOR_CANNOT_CREATE) ausgeworfen.

    Wenn der Pfad nicht mit einem Backslash '\' beginnt, wird der Indikator auf der Grundlage der folgenden Reihenfolge von Aktionen gesucht und geladen:

    • Die EX5-Datei wird im gleichen Ordner gesucht, in dem sich auch die EX5-Datei des aufrufenden Programms befindet. Beispielsweise befindet sich der CrossMA.EX5 Expert Advisor unter MQL5\Experts\MyExperts. Er enthält den folgenden Aufruf: iCustom(Symbol(), Periode(), "SecondIndicator"...). In diesem Fall wird der Indikator unter MQL5\Experts\MyExperts\SecondIndicator.ex5 gesucht.
    • Wenn der Indikator nicht gefunden wird, wird eine Suche relativ zum Stammverzeichnis des Indikators durchgeführt: MQL5\Indikatoren. Es wird also die Datei MQL5\Indicators\SecondIndicator.ex5 gesucht. Wenn der Indikator nicht gefunden wird, gibt die Funktion INVALID_HANDLE zurück und der Fehler 4802 (ERR_INDICATOR_CANNOT_CREATE) wird ausgeworfen.

    Wenn der Indikatorpfad in einem Unterverzeichnis wie MyIndicators\ThirdIndicator gesetzt ist, beginnt die Suche im Ordner des aufrufenden Programms (der Expert Advisor befindet sich im Ordner MQL5\Experts\MyExperts) unter dem folgenden Pfad: MQL5\Experts\MyExperts\MyIndicators\ThirdIndicator.ex5. Im Falle eines Fehlschlags wird der Ordner MQL5\Indicators\MyIndicators\ThirdIndicator.ex5 durchsucht. Bitte beachten Sie, dass das Pfad-Trennzeichen als doppelter Backslash '\\' angegeben werden sollte. Zum Beispiel: iCustom(Symbol(), Period(), "MyIndicators\\ThirdIndicator"...)

    Außerdem, wenn ein nutzerdefinierter Indikatoraufruf über iCustom im Programmcode gefunden wird, fügt der Compiler implizit die Direktive "#property tester_indicator XXX" hinzu, wenn sie nicht angegeben ist.

  2. Optimierte und erheblich beschleunigte Funktion HistorySelect, die es erlaubt, die Historie von Geschäften und Aufträgen abzufragen.
  3. Ein gelegentlicher Fehler bei der Tick-Anforderung über die Funktion CopyTicksRange wurde behoben. Der Fehler führte dazu, dass der Bereichsanfang auf den Tagesanfang und nicht auf die angegebene Zeit gesetzt wurde.
  4. Optimierte und signifikant beschleunigte Anzeige von Warnhinweisen mit der Funktion Alert.
  5. Neue Eigenschaft SYMBOL_TIME_MSC für die letzte Tick-Zeit des Symbols in Millisekunden. Die Eigenschaft kann mit der Funktion SymbolInfoInteger abgerufen werden.
29 Mai 2020
MetaTrader 5 build 2470

Terminal

  • Ein Fehler wurde behoben, der dazu führte, dass finanzielle Symbole mit '-', '=', '_' und '+' im Namen nicht in der Marktübersicht eingefügt werden konnten.

MQL5

MetaEditor

  • Korrektur der erweiterten Suche nach den Zeilenende-Zeichen '\n' und '\r'.
Aktualisierte Dokumentation.
22 Mai 2020
MetaTrader 5 build 2450: Abonnement-Service, UI-Verbesserungen und überarbeitete Funktionen im MetaEditor

Terminal

  1. Wir haben den brandneuen Abonnementsdienst freigegeben. Abonnements bieten zusätzliche Dienste, die Sie beim Handel unterstützen können. So können Sie beispielsweise hochwertige Marktdaten von bekannten Anbietern abonnieren, empfangene Daten analysieren und neue Handelsstrategien entwickeln. Optional können Sie persönliche Managerdienste anfordern, die Ihnen beim Erlernen der Handelsgrundlagen oder bei der Beherrschung Ihrer Fähigkeiten zur Nutzung der Plattform helfen.

    Der Dienst befindet sich derzeit in der Entwicklung und wird in den nächsten Versionen zur Verfügung stehen.

    Wie es funktioniert
    Im Navigator wurde ein neuer Abschnitt Abonnements hinzugefügt. Alle verfügbaren Dienste werden unter diesem Abschnitt angezeigt. Die Liste der Dienste wird auf der Broker-Seite konfiguriert und hängt somit vom Server ab, mit dem Sie verbunden sind. Die Abonnements sind in Kategorien eingeteilt, um das Suchen zu erleichtern.


    Wählen Sie einen Dienst, um sich seine detaillierte Beschreibung anzeigen zu lassen. Klicken Sie dann auf Abonnieren. Alle Ihre aktiven Abonnements werden in einem separaten Abschnitt angezeigt.


    Wenn Sie Marktdaten abonnieren, stehen Ihnen im Market Watch die geeigneten Handelsinstrumente zur Auswahl. Sie können als reguläre Symbole verwendet werden: Anzeigen von Kursen im Market Watch, Öffnen von Charts und deren Analyse anhand von Objekten und Indikatoren sowie Ausführen von Expert Advisors im Strategietester. Handelsoperationen für diese Symbole werden nicht unterstützt.

    Wie man für Abonnements bezahlt
    Sie können die Dienstleistungen mit den Mitteln Ihres Handelskontos bezahlen. Es ist nicht notwendig, andere Websites zu besuchen, da die Zahlung direkt von der Plattform aus vorgenommen werden kann.

    Bald werden wir die Möglichkeit hinzufügen, Marktdaten-Abonnements zu erwerben, indem wir uns mit MetaQuotes-Demo
    verbinden. Wir planen, Abonnements für Marktdaten von verschiedenen Börsen in der ganzen Welt einzurichten. Mit nur wenigen Klicks können Sie Echtzeitkurse von Nasdaq, CME, NYSE, BOVESPA und anderen Börsen erhalten. Sie können die Abonnements mit einem MQL5.community-Konto bezahlen, ähnlich wie beim Kauf von Market, Signals und Hosting.

  2. Die neue Option "Ticker anzeigen" wurde in den Chart-Einstellungen hinzugefügt. Die Option blendet die Zeile ein/aus, die den Namen des Handelssymbols, den Zeitrahmen und einen nutzerdefinierten Kommentar enthält.



  3. Hinzugefügt wurde die Option "Handelshistorie anzeigen" in den Terminal-Einstellungen und in den Chart-Einstellungen. Die Möglichkeit, Marktein- und -ausgänge in Charts anzuzeigen, war in früheren Versionen verfügbar, wurde aber über den Abschnitt "Toolbox \ Historie" verwaltet. Die neue Option ermöglicht eine komfortablere Einstellung der Darstellung der Historie. Sie können sie für alle Charts auf einmal konfigurieren oder separat für bestimmte Charts einstellen.




    Darüber hinaus können Sie über das Chart-Kontextmenü schnell die Anzeige der Handelshistorie und der Handelsebenen aktivieren:



  4. Hinzugefügt wurde ein neues "Farbe auf Weiß"-Schema in den Charteinstellungen hinzugefügt.


  5. Den Positions- und Auftragskontextmenüs wurden neue Befehle hinzugefügt, die ein schnelles Öffnen der Markttiefe und des Charts des entsprechenden Symbols ermöglichen:



  6. Hinzugefügt wurden das Hervorheben des Chartrahmens. Dies wird Ihnen helfen, das gewünschte Symbolchart zu finden, wenn mehrere Charts im Terminal geöffnet sind. Wählen Sie ein Symbol in der Marktbeobachtung, eine Order- oder Positionslinie im Handels- oder Historienabschnitt oder einen Alarm aus, und der Rahmen des entsprechenden Symbolcharts blinkt dreimal.



  7. Verbesserte Anzeige der Handelsebenen auf dem Chart.
    • Tickets werden nicht mehr für Positionen, Aufträge und Levels angezeigt, um den Chart sauber zu halten.
    • Bildunterschriften erscheinen zur besseren Lesbarkeit in Großbuchstaben
    • Volumina werden ohne Dezimalstellen angezeigt, wenn diese Null sind.
    • Die Ebenen werden ausgeblendet, wenn die Diagrammhöhe weniger als 80 Pixel beträgt.



  8. Eine Anzeige der Symbolbeschreibung (falls vorhanden) wurde in der linken oberen Diagrammecke zusätzlich zum Symbolnamen hinzugefügt.





  9. In der Liste der offenen Aufträge und Positionen wurden neue Spalten hinzugefügt:
    • Veränderung - Handelsgewinn in Prozent
    • Wert - Marktwert der Position
    • Magic — der vom Expert Advisor bei der Eröffnung von Aufträgen und Positionen angegebene Identifikator (Magicnummer)

    Die neuen Spalten können über das Kontextmenü ein-/ausgeblendet werden.


    Die Spalten "Positionswert" und "Magic" wurden ebenfalls zum Abschnitt "Handelshistorie" hinzugefügt.

    Darüber hinaus wird das Gewinnfeld in den Abschnitten "Offene Positionen" und "Historie" in Abhängigkeit vom Ergebnis der Operation hervorgehoben.

  10. Hinzugefügt wurde die Unterstützung für negative Preise. Dies ermöglicht einen ordnungsgemäßen Plattformbetrieb in Situationen, die dem jüngsten Rückgang der Ölpreise unter Null gleichen. Dies beinhaltet:
    • Die Anzeige der Kurse im Market Watch
    • Die Anzeige von Charts und Markttiefe
    • Ausführung von Handelsgeschäften
    • Berechnung von Gewinnen und Sicherheiten

  11. Die maximale Anzahl von Symbolen, die gleichzeitig im Market Watch aktiviert werden können, wurde auf 5000 erhöht.
  12. Das Sortieren nach dem Datum der letzten Aktualisierung in chats wurde korrigiert.
  13. Optimierter und beschleunigter Betrieb mit einer großen Anzahl von Handelssymbolen (50.000 und mehr).
  14. Ein Fehler wurde behoben, durch den es unmöglich war, eine Position zu schließen, wenn ihr aktuelles Volumen nicht zu der Änderungsschrittweite des Volumens des Symbols entsprach.

MQL5

  1. Optimierte und beschleunigte Operationen der Tick-Historie.
  2. Hinzugefügt wurden neue Funktionen für die Arbeit mit Datenbanken:
    • DatabaseReset — setzt die Anfrage in den Anfangszustand zurück, ähnlich wie der Aufruf von DatabasePrepare. Die Funktion ist für das mehrfache Ausführen einer Anfrage mit verschiedenen Parameterwerten bestimmt. Wenn der Tabelle z.B. mit dem INSERT-Befehl massenweise Daten hinzugefügt werden, sollte für jeden Eintrag ein vom Nutzer selbst definierter Satz von Feldwerten gebildet werden.
    • DatabaseBind — setzt einen Parameterwert in einer Anfrage. Die Funktion wird verwendet, wenn eine SQL-Anfrage parametrisierbare Werte der Form "?" oder "?N" enthält, wobei N den Parameterindex (beginnend mit Eins) bedeutet.
    • DatabaseBindArray — legt ein Array als Parameterwert fest.

  3. Hinzugefügt wurde das Flag FSD_FILE_MUST_EXIST für die Funktion FileSelectDialog. Es zeigt an, dass die ausgewählten Dateien existieren müssen.
  4. Hinzugefügt wurden Werte zur Beschreibung von Optionen wurden zur Enumeration ENUM_SYMBOL_INFO_DOUBLE:
    • SYMBOL_PRICE_CHANGE — Änderung des aktuellen Preises relativ zum Ende des vorangegangenen Handelstages in %.
    • SYMBOL_PRICE_VOLATILITY — Preisvolatilität in %.
    • SYMBOL_PRICE_THEORETICAL — theoretischer Optionspreis.
    • SYMBOL_PRICE_DELTA — Option/Optionsschein-Delta. Zeigt den Wert, um den sich der Optionspreis ändert, wenn sich der Preis des zugrunde liegenden Vermögenswerts um 1 ändert.
    • SYMBOL_PRICE_THETA — Option/Optionsschein-Theta. Anzahl der Punkte, die der Optionspreis jeden Tag aufgrund einer vorübergehenden Auflösung, d.h. wenn sich das Verfallsdatum nähert, verlieren soll.
    • SYMBOL_PRICE_GAMMA — Options-/Optionsschein-Gamma. Zeigt die Änderungsrate des Deltas — wie schnell oder langsam sich die Optionsprämie ändert.
    • SYMBOL_PREIS_VEGA — Options-/Optionsschein-Vega Zeigt die Anzahl der Punkte, um die sich der Optionspreis ändert, wenn sich die Volatilität um 1% ändert.
    • SYMBOL_PREIS_RHO — Option/Optionsschein rho. Gibt die Sensitivität des theoretischen Optionspreises auf die Zinsänderung um 1% an.
    • SYMBOL_PREIS_OMEGA — Options-/Optionsschein-Omega. Optionselastizität — eine relative prozentuale Änderung des Optionspreises um die prozentuale Änderung des zugrunde liegenden Vermögenspreises.
    • SYMBOL_PRICE_SENSITIVITY — Options-/Optionsschein-Sensitivität. Zeigt an, um wie viele Punkte sich der Preis des zugrundeliegenden Vermögenswerts der Option ändern sollte, so dass sich der Preis der Option um einen Punkt ändert.

  5. Hinzugefügt wurde der Export von BLOB-Feldern im HEX-Format in der Funktion DatabaseExport.
  6. Die neue Eigenschaft CHART_SHOW_TICKER wurde zu ENUM_CHART_PROPERTY_INTEGER hinzugefügt — sie zeigt einen Symbol-Ticker in der oberen linken Ecke. Wenn die Eigenschaft CHART_SHOW_TICKER auf false gesetzt ist, wird auch CHART_SHOW_OHLC auf false gesetzt und somit OHLC ausgeblendet.   
  7. Die Qualität des vom Compiler generierten Codes wurde verbessert. Dadurch konnte seine Ausführungsgeschwindigkeit erhöht werden.
  8. Die Fehler im Zusammenhang mit der Kompilierung und Ausführung von Template-Funktionen und -Klassen wurden behoben. Das sind:
    • Fehler bei den Prioritäten von überladenen Vorlagenfunktionsaufrufen
    • Fehler beim Erstellen der Vorlagen von Methoden bzw. Klassen
    • Ein Fehler beim Versuch, auf die interne Klasse für den Template-Parameter der Template-Funktion zuzugreifen
    • Fehler beim Erstellen des Codes einer Vorlagenklasse, der durch die Verwendung einer internen Klasse verursacht wurde.
    • Fehler bei der Verwendung des Vorlagenobjekts B<int> vor B<void*>
    • Fehler beim Erstellen komplexer Objekte mit dem internen Typ C, die mehrfach umgebrochen sind
    • Fehler beim Übertragen des Funktionszeiger-Arguments als const ref-Vorlage
    • Fehler bei der Übergabe einer internen Struktur an eine Funktion einer Vorlage
    • Prioritätsfehler bei der Ausführung von Vorlagenfunktionen
    • Falsche Klammerzählung in for- und do-while-Schleifen
    • Falsche Klammeranzahl in der Klassenstrukturbeschreibung
    • Verlangsamung beim Hinzufügen eines einzelnen Elements mit ArrayResize
    • Fehler bei der Auswahl einer passenden überladenen Funktion

  9. Gelegentliche Fehler in der Funktion CustomTicksReplace behoben.
  10. Korrigiert wurde die Auswahl des Anzeigezeitraums für die Historie von Handelsaufträgen. Der Bereich basiert jetzt auf dem Ausführungsdatum des Auftrags anstelle des zuvor verwendeten Erstellungsdatums.

Python

  1. Hinzugefügt zur Methode initialize wurde der Pfadparameter — der Pfad zu metatrader.exe oder metatrader64.exe. Wird der Pfad nicht angegeben, versucht das Modul die ausführbaren Dateien selber zu finden.
  2. Die folgenden neuen Methoden wurden hinzugefügt:
    • symbols_get — erhält alle finanziellen Symbole vom MetaTrader 5 Terminal.
    • symbols_total — erhält die Anzahl aller Finanzsymbole im MetaTrader 5 Terminal.

  3. Hinzugefügt wurde die Filterung nach Symbolgruppen für die folgenden Funktionen: orders_get, positions_get, history_orders_get and history_deals_get. Verwenden Sie Aufrufe mit dem Parameter "group".
  4. Der Rückgabewert von order_send und order_check wird nun mit dem Feld 'request' übergeben, das die vollständige Beschreibung der ursprünglichen Anfrage enthält. Zum Beispiel:
    ...
    comment=Request executed
    request_id=55
    retcode_external=0
    request=TradeRequest(action=1, magic=234000, order=0, symbol='USDJPY', volume=0.1, price=108.018, stoplimit=0.0, ...
        traderequest: action=1
        traderequest: magic=234000
        traderequest: order=0
        traderequest: symbol=USDJPY
        traderequest: volume=0.1
        traderequest: price=108.018
        traderequest: stoplimit=0.0
    ...
  5. Wenn Python-Skripte auf einem Diagramm gestartet werden, erhalten sie jetzt das Symbol des Diagramms und den Zeitraum (in Minuten) als Argumente.
    import sys
    
    chart_symbol='unknown'
    chart_tf=1
    
    if len(sys.argv) == 3:
        chart_symbol, chart_tf = sys.argv[1:3];
    
    print("Hello world from", chart_symbol, chart_tf)
    
    >> Hello world from T.NYSE 15

MetaEditor

  1. Hinzugefügt wurde der Befehl "Einen bestehenden Ordner hinzufügen". Das ermöglicht ein stapelweises Hinzufügen aller unterstützten Dateien aus dem ausgewählten Verzeichnis in das Projekt.


  2. Erweiterte Such- und Ersetzungsoptionen.

    Hinzugefügt wurde erweiterte Suchfunktionen mit teilweiser Unterstützung für reguläre Ausdrücke. Sie können jetzt \r, \n, \t für Zeilenvorschub- und Tabulatorzeichen in Suchanfragen angeben. Dialoge zum Suchen und Ersetzen wurden zu einem einzigen Dialog mit mehreren Registern zusammengefasst.


    Eine separate Registerkarte für die Suche in Gemeinschaft der Programmierer wurde hinzugefügt. Dazu gehören MQL5.community, sowie GitHub, MSDN und Stack Overflow.

    Suchergebnisse aus externen Ressourcen werden im Fenster der MetaEditor-Toolbox angezeigt:



    Außerdem können Sie die Quelldateien sofort von GitHub herunterladen. Die Dateien werden in ein separates Unterverzeichnis des Ordners Projekte heruntergeladen, das entsprechend dem GitHub-Projektnamen benannt ist.

    Suchergebnisse können zusätzlich nach Datum sortiert werden.

  3. Hinzugefügt wurde die Möglichkeit die Schriftgröße im Code-Editierfenster schnell zu ändern. Um die Schriftgröße zu ändern, drücken Sie Strg und bewegen Sie das Mausrad.
  4. Hinzugefügt wurde die Möglichkeit, Tabellen aus CSV-Dateien in Datenbanktabellen zu importieren. Die folgenden Parameter können während des Imports eingestellt werden:
    • Tabellenname in der Datenbank
    • Automatische oder manuelle Erkennung der Dateikodierung
    • Typ des Datenseparators
    • Überspringen der angegebenen Anzahl von Zeilen am Anfang
    • Kommentar-Präfix
    • Wenn die Datei Spaltennamen hat
    • Wie Zeilenumbrüche bestimmt werden
    • Ob die Daten zu einer neuen Tabelle oder zu einer bestehenden Tabelle hinzugefügt werden sollen
    • Welche Anführungszeichen für Zeichenketten zu verwenden sind


  5. Hinzugefügt wurden Kurzbefehle zum Einfügen von Zeit und Farbe in den Programm-Quellcode hinzugefügt. Wählen Sie die gewünschten Werte aus dem interaktiven Kalender und der Palette aus, und der Editor fügt sie im entsprechenden Format ein.



  6. Die MQL4-Unterstützung wurde deaktiviert, da jetzt nur noch 64-Bit-Code generiert wird.
  7. Korrigiert wurde die Operation der Klassen-Snippets.
  8. Korrigierte Unterstützung für absolute Pfade in Projekten.
Aktualisierte Dokumentation.
    6 März 2020
    MetaTrader 5 build 2360: Erweiterte Integration von SQLite
    1. MQL5: Ausführungsfehler der SQLite Datenbank können nun mit den standardmäßigen Hilfsmitteln von MQL5 analysiert werden. Folgende Fehlermeldungen wurden ergänzt:

      • ERR_DATABASE_ERROR — allgemeiner Fehler.
      • ERR_DATABASE_INTERNAL — SQLite, Fehler der internen Logik.
      • ERR_DATABASE_PERM — Zugriff verweigert.
      • ERR_DATABASE_BUSY — Datei der Datenbank ist blockiert.
      • ERR_DATABASE_LOCKED — Tabelle der Datenbank ist blockiert.
      • ERR_DATABASE_NOMEM — Nicht genügend Speicherplatz, die Operation zu beenden.
      • ERR_DATABASE_READONLY — Versuch, in eine schreibgeschützte Datenbank zu schreiben.
      • ERR_DATABASE_IOERR — E/A-Fehler der Festplatte.
      • ERR_DATABASE_CORRUPT — Das Festplattenabbild der Datenbank ist beschädigt.
      • ERR_DATABASE_FULL — Das Einfügen ist fehlgeschlagen, weil die Datenbank voll ist.
      • ERR_DATABASE_CANTOPEN — Die Datei der Datenbank kann nicht geöffnet werden.
      • ERR_DATABASE_PROTOCOL — Fehler im Sperrprotokoll der Datenbank.
      • ERR_DATABASE_SCHEMA — Ausschließlich für den internen Gebrauch.
      • ERR_DATABASE_TOOBIG — Zeichenkette oder BLOB überschreitet die Größenbeschränkung.
      • ERR_DATABASE_CONSTRAINT — Abbruch wegen Verletzung der Einschränkungen.
      • ERR_DATABASE_MISMATCH — Nicht übereinstimmende Datentypen.
      • ERR_DATABASE_MISUSE — Fehlerhafte Verwendung der Bibliothek.
      • ERR_DATABASE_AUTH — Authentifizierung ist fehlgeschlagen.
      • ERR_DATABASE_RANGE — Parameterfehler bei der Einbindung, Indexfehler
      • ERR_DATABASE_NOTADB — Geöffnete Datei ist keine Datenbankdatei.

    2. MQL5: Korrigierte Ausführung der Funktion DatabaseImport, die den Datenimport aus einer Datei in eine Datenbanktabelle ermöglicht.
    3. MetaEditor: Korrigierte Ausgabe von Zeichenketten mit mehr als 32Kb in die Logs.
    4. MetaEditor: Die gelegentliche fehlerhafte Kodierung von Nachrichten, die von der Python-Konsole (stdout, stderr) im Fehlerabschnitt des Editors gesendet wurden, wurde behoben.
    5. Aktualisierte Dokumentation.
    21 Februar 2020
    MetaTrader 5 Plattform build 2340: Verwaltung von Kontoeinstellungen im Tester und erweiterte Integration mit Python

    MetaEditor

    1. Es wurden neue Funktionen für die Arbeit mit SQLite-Datenbanken hinzugefügt.

      Im vorherigen Plattform-Update haben wir die Unterstützung für Operationen mit SQLite-Datenbanken direkt aus MQL5 eingeführt. Die Hauptfunktionen sind über die Benutzeroberfläche des MetaEditor geworden:

      • Erstellen und Verbinden von Datenbanken
      • Tabellen anzeigen und schnelle Datenabfragen durchführen
      • Erstellen und Ausführen von SQL-Abfragen, Rollback-Änderungen

      Wie es funktioniert
      Die Funktionen zur schnellen Datenbankerstellung sind über den MQL5-Assistenten verfügbar. Sie können auf einfache Weise Ihre erste Tabelle erstellen und ihre Felder definieren.



      Bei der Erstellung der Datenbank werden Sie zu einem neuen Abschnitt des Navigators weitergeleitet, der Befehle zur Verwaltung der Daten enthält.

      Die Datenbanktabellen werden im linken Fenster angezeigt. Mit einem Doppelklick auf den Tabellennamen können die ersten 1.000 Datensätze schnell abgefragt werden. In diesem Navigatorteil können Sie auch andere Datenbanken erstellen und öffnen sowie mit Tabellen arbeiten.

      Die Datenbank kann im Hauptfenster des Editors verwaltet werden. Hier können Sie die Tabelle ausfüllen, Daten suchen und auswählen, SQL-Abfragen eingeben und andere Operationen ausführen:



      Für weitere Details über MetaTrader 5 Operationen mit Datenbanken lesen Sie bitte den Artikel "SQLite": Natives Arbeiten mit SQL-Datenbanken in MQL5".

    2. Erweiterte Unterstützung für mehrsprachige Projekte. Dieses Update bietet erweiterte Möglichkeiten für die Arbeit mit Python-Skripten:

      • Solche Skripte können jetzt mit dem MQL5-Assistenten erstellt werden, während Sie die erforderlichen Bibliotheksabhängigkeiten sofort in den Code einfügen können.
      • Spezielle Symbole wurden im Navigator hinzugefügt, und die entsprechende Syntax ist im Editor verfügbar.
      • Wenn ein Skript über MetaEditor ausgeführt wird, erscheinen Meldungen von der Python-Konsole (stdout, stderr) unter dem Abschnitt Fehler.


      Klicken Sie im Editor auf "Kompilieren", um das Skript auszuführen:


      Um mit Python zu arbeiten, vergessen Sie nicht, dessen Pfad im Abschnitt Einstellungen \ Compiler im MetaEditor anzugeben. Um die Verwendung der MetaTrader 5-Bibliothek zu ermöglichen, installieren Sie sie mit dem folgenden Befehl:
      pip install MetaTrader5
      Für Details zur Python-Integration lesen Sie bitte die entsprechende Dokumentation.
    3. MetaEditor: Anzeige von SQLite-Datenbankdateien (*.db;*.sdb;*.sqlite;*.db3;*.s3db;*.sqlite3) im Navigator hinzugefügt.
    4. MetaEditor: Fehler beim Speichern der Projekteigenschaften behoben.

    MQL5

    1. Vollständig überarbeitete Python-Integration. Das Update beinhaltet viele neue Funktionen und neue Befehlsbenennungen.

      Neue Benennung
      Die bestehenden Befehle wurden wie folgt umbenannt:
      MT5Initialize       -> initialize
      MT5Shutdown         -> shutdown
      MT5TerminalInfo     -> terminal_info
      MT5Version          -> version
      MT5CopyRatesFrom    -> copy_rates_from
      MT5CopyRatesFromPos -> copy_rates_from_pos
      MT5CopyRatesRange   -> copy_rates_range
      MT5CopyTicksFrom    -> copy_ticks_from
      MT5CopyTicksRange   -> copy_tick_range

      Neue Befehle
      Die Liste der unterstützten Befehle wurde erweitert. Es wurden Handelsfunktionen sowie Funktionen für die Arbeit mit der Handelshistorie und die Beschaffung von Informationen über Finanzsymbole und das laufende Konto hinzugefügt.

      • account_info() erhält Informationen über das laufende Konto. Ein Analogon von AccountInfoInteger, AcountIndoDouble und AccountInfoString.
      • positions_total() erhält die Anzahl der offenen Positionen. Ein Analogon von PositionenGesamt.
      • positions_get(symbol, ticket) erhält die offenen Positionen nach Symbol oder Ticket.
      • orders_total() erhält die Anzahl der Orders. Ein Analogon von OrdersTotal.
      • orders_get(symbol, ticket) erhält die offenen Orders nach Symbol oder Ticket.
      • history_orders_total(from, to) ruft die Anzahl der Aufträge im angegebenen historischen Zeitrahmen ab.
      • history_orders_get(from, to, position, ticket) ruft die Orders aus dem angegebenen historischen Zeitrahmen, nach Ticket oder gefiltert nach Position ab.
      • history_deals_total() erhält die Anzahl der Transaktionen in der Historie. Ein Analogon von HistoryDealsTotal.
      • history_deals_get(from, to, position, ticket) ruft die Orders aus dem angegebenen historischen Zeitrahmen, nach Ticket oder gefiltert nach Position.
      • symbol_info(symbol) erhält Informationen über ein Finanzinstrument. Ein Analogon von SymbolInfoInteger, SymbolInfoDouble, SymbolInfoString.
      • symbol_info_tick(symbol) erhält den letzten Tick nach Symbol. Ein Analogon von SymbolInfoTick.
      • symbol_select(symbol, enable) aktiviert/deaktiviert ein Symbol im Market Watch. Ein Analogon von SymbolSelect.
      • order_check(request) prüft die Marge der Order. Ein Analogon von OrderCheck.
      • order_send(request) sendet eine Order an den Server. Ein Analogon von OrderSend.
      • order_calc_margin(action, symbol, volume, price) berechnet die Marge für eine Order. Ein Analogon von OrderCalcMargin.
      • order_calc_profit(action, symbol, volume, price_open, price_close) berechnet den Gewinn. Ein Analogon von OrderCalcProfit.

      Python-Skripte auf einem Chart ausführen
      Python-Skripte können direkt auf Plattform-Charts ausgeführt werden, ähnlich wie bei regulären MQL5-Programmen. Diese Skripte sind im Navigator mit speziellen Symbolen gekennzeichnet.


      Skriptnachrichten werden unter dem Abschnitt "Werkzeuge \ Experten" angezeigt. Wenn eine MetaTrader 5-Bibliothek in einem Skript verwendet wird, kann das Skript Handelssymbol- und Kontodaten empfangen sowie Handelsoperationen durchführen.

      Python-Skripte können auf demselben Chart parallel zu anderen MQL5-Skripten und Expert Advisors ausgeführt werden. Um ein Skript, das eine Schleife ausführt, zu stoppen, entfernen Sie es vom Chart.

      Zusätzlicher Schutz
      Um zusätzlichen Kontoschutz bei der Verwendung von Python-Bibliotheken von Drittanbietern zu aktivieren, können Sie die Option "Automatisierten Handel über externe Python-API deaktivieren" in den Terminal-Einstellungen verwenden.


      Python-Skripte können nur Handelsoperationen ausführen, wenn diese Option deaktiviert ist.

    2. Deutlich beschleunigter Neustart von MQL5-Programmen und Neuerstellung von benutzerdefinierten Indikatoren aus MQL5-Programmen. In einigen Fällen werden die Operationen 100 Mal schneller ausgeführt.
    3. Es wurden Funktionen für die Arbeit mit Datenbanken hinzugefügt:

      DatenbankImport
      Importiert Daten aus einer Datei in eine Tabelle.
      lang DatenbankImport(
         int           database,          // Datenbank-Handle empfangen in DatabaseOpen
         const string  table,             // Tabellenname für das Einfügen der Daten
         const string  filename,          // Dateiname zum Importieren der Daten
         uint          flags,             // Kombination der Flags
         const string  separator,         // Trennzeichen der Daten
         ulong         skip_rows,         // Anzahl der ersten zu überspringenden Zeilen
         const string  skip_comments      // Reihe der Zeichen, die Kommentare kennzeichnen
         );

      DatabaseExport
      Exportiert eine Tabelle oder das Ergebnis einer SQL-Anfrage in eine CSV-Datei. Die erstellte Datei ist in UTF-8 encodiert.
      long  DatabaseExport( 
         int           database,           // Datenbank-Handle empfangen in DatabaseOpen 
         const string  table_or_sql,       // Tabellenname oder SQL-Anfrage
         const string  filename,           // Name der CSV-Datei für den Export
         uint          flags,              // Kombination der Flags
         const string  separator           // Trennzeichen der Daten in der CSV-Datei
         );

      DatabasePrint
      Druckt die Tabelle oder das Ergebnis der SQL-Anfrage im Experten-Journal aus.
      long  DatabasePrint(
         int           database,          // Datenbank-Handle empfangen in DatabaseOpen
         const string  table_or_sql,      // Tabellenname oder SQL-Anfrage
         uint          flags              // Kombination der Flags
         );

    4. Hinzugefügt wurde die Funktion FileSelectDialog, die den Systemdialog zum Erstellen/Öffnen einer Datei oder eines Ordners aufruft.
      int  FileSelectDialog(
         string   caption,              // Fenstertitel
         string   initial_dir,          // Anfangsverzeichnis
         string   filter,               // Erweiterungsfilter
         uint     flags,                // Kombination der Flags
         string&  filenames[],          // Array mit den Dateinamen
         string   default_filename      // Standard-Dateiname
         );
      Die neue Funktion ermöglicht die effiziente Benutzerinteraktion mit dem MQL5-Programm.

    5. Ein neuer Wert, DEAL_FEE, in der Aufzählung ENUM_DEAL_PROPERTY_DOUBLE. Er wird für eine Deal-Gebühr verwendet. Der Wert gibt einen separaten Provisionstyp an, der vom Makler erhoben wird.

    Tester

    1. Zusätzliche Funktionen zum Festlegen von nutzerdefinierten Handelskontoeinstellungen während des Strategietests, wie z.B. Handelsbeschränkungen, Margin-Einstellungen und Provisionen. Die neuen Funktionen bieten erweiterte Möglichkeiten zur Modellierung verschiedener Handelsbedingungen.



      Allgemeine Einstellungen
      In diesem Abschnitt können Sie die maximale Anzahl offener Orders und Positionen festlegen, die gleichzeitig auf dem Konto existieren dürfen. Zusätzlich können Sie Zeiten konfigurieren, in denen das Programm nicht handeln darf.

      Marge
      Der Teil ermöglicht die Konfiguration von Regeln der Reservierung für die Marge und von Positionsabrechnungssystemen, die beim Testen verwendet werden können:

      • Risikomanagement — Risikomanagementmodell: OTC- und Börsenmodell, Netting und Hedging-Systeme. Für Einzelheiten lesen Sie bitte die Hilfe.
      • Margin-Call-Level — wenn dieses Level erreicht ist, wechselt das Konto in den Status Margin-Call.
      • Stop-Out-Level — wenn dieses Level erreicht ist, werden alle Aufträge storniert und alle Handelspositionen geschlossen. Diese Levels können in Prozent und in Geld angegeben werden. Im ersteren Fall werden sie durch den Vermögenswert auf dem Konto bestimmt. Wenn "In Prozent" gewählt wird, werden die Level als der Wert des Kontos "Margin-Level" (Geldmittel/Margin*100) definiert.
      • Unrealisierter Gewinn — berücksichtigt den aktuellen schwankenden Gewinn/Verlust in der freien Marge:
        • Keine Verwendung der nicht realisierten Gewinne/Verluste — Gewinn/Verlust der offenen Positionen werden nicht in die Berechnung einbezogen.
        • Nicht realisierte Gewinne/Verluste verwenden — Gewinne/Verluste der offenen Positionen werden in die Berechnung einbezogen.
        • Nicht realisierte Gewinne verwenden — nur die Gewinne einbeziehen.
        • Nicht realisierte Verluste verwenden — nur die Verluste berücksichtigen.
      • Täglich fixierter Gewinn — berücksichtigt den täglich fixierten Gewinn/Verlust des Kunden in der freien Marge:
        • Täglich fixer Gewinn/Verlust verwenden — Gewinne und Verluste, die während eines Handelstages erhalten wurden, werden in die freie Marge einbezogen.
        • Täglich fixierter Verlust — berücksichtigt nur den während des Handelstages erhaltenen Verlust. Während des Tages wird der erhaltene Gewinn im Feld Sonderkonto ("Gesperrt") gesammelt. Am Ende des Handelstages wird der kumulierte Gewinn freigegeben (auf Null gesetzt) und dem Kontostand hinzugefügt (in der freien Marge enthalten).
      • Festen Gewinn am Ende des Tages freigeben — diese Option wird nur dann verfügbar, wenn die Option "Festen Tagesverlust verwenden" gewählt wird. Wenn sie aktiviert ist, wird der kumulierte Gewinn am Ende des Tages aufgelöst (und somit in die freie Marge einbezogen). Andernfalls bleibt dieser Gewinnbetrag gesperrt.

      Provisionen
      Dieser Abschnitt bietet die Kontrolle über die Kommissionen, die für alle Handelsoperationen erhoben werden.

      • Die Provision kann einstufig und mehrstufig sein, d.h. unabhängig vom Dealvolumen/Umsatz sein oder von deren 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.
      • Getrennte Provisionen können je nach Deal-Richtung erhoben werden: Eingang, Ausgang oder beide Typen.
      • Die Provision kann pro Los oder pro Deal berechnet werden.
      • Die Provision kann in Geld, Prozentsatz oder Punkten berechnet werden.


    2. Optimierte und beschleunigte Arbeit im Market-Scanner-Modus, bei dem mehrere Testdurchgänge für alle in der Market Watch verfügbaren Symbole durchgeführt werden.
    3. Deal- oder das Positionsvolumina werden jetzt bei der Berechnung des Gewinns in Pips berücksichtigt. Zuvor wurde die Berechnung nur für ein Los durchgeführt.
    4. Verbesserte Kontrolle über das Diagramm der Optimierungsergebnisse. Die Bildlaufoption wurde für ein gezoomtes Optimierungsdiagramm hinzugefügt. Durch Doppelklicken auf einen Diagrammpunkt wird das entsprechende Ergebnis in der Durchgangstabelle ausgewählt.
    Aktualisierte Dokumentation.
    13 Dezember 2019
    MetaTrader 5 Platform Build 2280

    Terminal

    1. Es wurde ein Fehler behoben, der dazu führte, dass ein Expert Advisor nicht aus dem Chart ohne Daten gelöscht werden konnte.
    2. Die Anzeige der Chart-Kopfzeilen unter Wine wurde korrigiert.

    MQL5

    1. Verbesserte Lade- und Kompilierungsgeschwindigkeit von MQL5-Programmen.
    2. Ein Doppelklick auf ein Chart wird nun als Ereignis mit einem Klick an ein MQL5-Programm übergeben. Vorher wurde auf ein solches Ereignis nicht reagiert.
    3. Behoben wurde ein Fehler bei der Funktionsausführung von StringTrimRight.
    4. Hinzugefügt wurden die DirectX-Funktionen für 3D-Darstellungen.

    Tester

    1. Es wurde ein Fehler behoben, der dazu führte, dass das Testsymbol in den Einstellungen leer blieb. Der Fehler kann auch das Ergebnis eines Wechsels zwischen Handelskonten mit unterschiedlichen Handelsinstrumenten sein. Das neue Verhalten: Wird das zuvor ausgewählte Symbol nicht auf dem aktuell verbundenen Handelskonto gefunden, wird stattdessen automatisch das erste verfügbare Symbol im Fenster der Marktübersicht ausgewählt.

    MetaEditor

    1. Das Laden der Anwendungssymbole beim erneuten Öffnen von Projekteigenschaften wurde korrigiert.
    Aktualisierte Übersetzungen der Nutzerschnittstellen.
    Fehlerbehebungen auf Basis von Absturzberichten.
    6 Dezember 2019
    MetaTrader 5 Build 2265: DirectX-Funktionen für 3D-Darstellungen in MQL5 und Symboleinstellungen im Strategietester

    Terminal

    1. Jetzt sind weitere Spalten in der Marktübersicht verfügbar. Im Hauptbereich stehen nun 40 zusätzliche Symbolparameter zur Verfügung, die bisher nur über die Registerkarte Details verfügbar waren.




    2. Hinzugefügt wurde die Hervorhebung des aktuell verbundenen Kontos und des aktuellen Servers im Navigator. Die Funktion ist nützlich, wenn Sie mehrere Konten bei verschiedenen Brokern haben.




    3. Aktualisiertes Rahmendesign der Charts. Die Rahmen sind kleiner geworden und damit steht nun mehr Platz für nützliche Informationen zur Verfügung.




    4. Modifizierter Algorithmus zur Berechnung der Handelssummen bei der Anzeige der Handelshistorie als Positionen. Die Werte werden nun auf Basis von Ist-Sätzen berechnet.

      Um die Handelshistorie in Form von Positionen anzuzeigen, verwendet das Terminal Informationen über die im angeforderten Zeitraum abgeschlossenen Deals. Nur die Positionen, die in diesem Zeitraum geschlossen wurden, werden in der Historie angezeigt. Wenn die Position noch offen ist oder ihre Schließzeit nicht innerhalb des gewählten Zeitraums liegt, wird sie in der Historie nicht angezeigt. Daher können sich die gesamten Gewinne und Provisionen im Modus "Positionen" von denen im Modus "Orders/Deals" unterscheiden.

      Sie schauen sich beispielsweise den Verlauf der vergangenen Woche an. In diesem Zeitraum wurden 100 Deals durchgeführt, von denen 98 beim Eröffneten und 20 Positionen geschlossen wurden. Die letzten beiden Deals eröffneten neue Positionen, die bisher nicht geschlossen wurden. In diesem Fall enthält die Historie der Deals 100 Datensätze und entsprechende Gesamtwerte, die auf der Grundlage dieser Deals berechnet werden. Wenn Sie sich die Historie als Positionen anzeigen lassen, sehen Sie 20 Datensätze, die auf 98 Deals basieren. Nur diese Daten werden bei der Berechnung der Gesamtwerte berücksichtigt. Wenn der Broker bei der Eröffnung eines Deals Gebühren erhebt, unterscheidet sich der endgültige Provisionswert in der Deal-Historie von den in der Positionshistorie angezeigten Provisionen, da die beiden letzten Deals im letzteren Fall ignoriert werden.

    5. Ein schnellerer Start von MQL5-Programmen wurde implementiert.
    6. Für die Terminal-Installationsdatei wurde ein neuer /beta-Schlüssel hinzugefügt, der den Download der Beta-Version ermöglicht. Im Normalmodus sollte zuerst die Release-Version installiert werden, die dann bis zu einer Beta-Version aktualisiert werden kann. Wenn Sie diesen Schritt überspringen, können Sie Zeit und Traffic sparen. Beispiel für einen Installationsstart:
      C:\mt5setup.exe /beta
    7. Die Darstellung der Margenanforderungen für Instrumente mit dem Typ "Exchange Stocks" wurde korrigiert.
    8. Beschleunigte Ausführung aller Plattformkomponenten durch den Einsatz des Clang/LLVM-Compilers. In einigen Fällen ist die Kompilierung 20% schneller.

    MQL5

    1. Neue Funktionen und Shader von DirectX 11 für die 3D-Visualisierung wurden hinzugefügt. Jetzt können leistungsstarke dreidimensionale Grafiken direkt in MQL5 erstellt werden.

      Die neue Klasse CCanvas3D ist eine Erweiterung der Klasse CCanvas Custom Graphic. Sie befinde sich im Verzeichnis \MQL5\Include\Canvas\. Die Klasse verfügt über Funktionen zur Darstellung dreidimensionaler Objekte über das DirectX-API.

      • Create — erstellt eine Szene.
      • Attach — verbindet eine Szene mit einem Chart.
      • Destroy — zerstört eine Szene.
      • ObjectAdd — fügt der Szene ein von der Basisklasse CDXObjekt abgeleitetes Objekt hinzu.
      • Render — die vollständige Renderschleife mit Pufferclearing und Rendering aller CDX-Objekte, die über die Methode ObjectAdd hinzugefügt wurden.
      • RenderBegin — startet das Rendern der Szenen, füllt den Renderpuffer mit der angegebenen Farbe (wenn das Flag DX_CLEAR_COLOR gesetzt ist) und den Tiefenpuffer (bei Verwendung von DX_CLEAR_DEPTH) und setzt den Szenenpuffer DXInputScene für den Standard-Shader.
      • RenderEnd — schließt das Rendering der Szenen ab und empfängt ein Ergebnis in einem internen Puffer. Wenn redraw==true, wird das Bild auf dem Chart angezeigt, auf dem es gerade läuft.
      • ViewMatrixGet — empfängt eine Ansichtsmatrix.
      • ViewMatrixSet — setzt eine Ansichtsmatrix. Die Matrix ist nicht kompatibel mit den Methoden ViewPositionSet, ViewRotationSet, ViewTargetSet und ViewUpDirectionsSet.
      • ViewPositionSet — stellt die Kameraposition ein.
      • ViewRotationSet — setzt die Kamera-Rotationsmatrix.
      • ViewTargetSet — setzt den Punkt, auf den die Kamera zeigt. Zusammen mit ViewUpDirectionsSet ist es eine Alternative zu ViewRotationSet.
      • ViewUpDirectionsSet — stellt die vertikale Position der Kamera ein. Zusammen mit ViewTargetSet ist es eine Alternative zu ViewRotationSet.
      • ProjectionMatrixGet — Empfängt eine Projektionsmatrix.
      • ProjectionMatrixSet — Setzt eine Projektionsmatrix.

      Eine ausführliche Dokumentation der neuen Bibliothek wird in Kürze veröffentlicht.




    2. Hinzugefügt wurde die Unterstützung für die Arbeit mit SQLite-Datenbanken direkt aus MQL5. Dies ermöglicht eine einfache Ausführung von SQL-Abfragen, ohne komplexe Anweisungen zu erstellen. Der interne Betrieb wird durch die neue Standardbibliothekserweiterung realisiert.

      Es stehen folgende Funktionen zur Verfügung:
      >
      • DatabaseOpen — öffnet oder erstellt eine Datenbank in der angegebenen Datei
      • DatabaseClose — schließt eine Datenbank
      • DatabaseTableExists — prüft, ob es eine Tabelle in der Datenbank gibt
      • DatabaseExecute — führt eine Abfrage bei der angegebenen Datenbank durch
      • DatabasePrepare — erstellt das Handle für die Anfrage, das mit DatabaseRead() weiter ausgeführt werden kann
      • DatabaseRead — springt zum nächsten Datensatz im Abfrageergebnis
      • DatabaseFinalize — löscht eine Abfrage, die in DatabasePrepare() erstellt wurde
      • DatabaseTransactionBegin — startet die Ausführung einer Transaktion
      • DatabaseTransactionCommit — schließt die Ausführung einer Transaktion ab
      • DatabaseTransactionRollback — Zurücksetzen einer Transaktion
      • DatabaseColumnsCount — empfängt die Anzahl der Felder in einer Abfrage
      • DatabaseColumnName — empfängt den Feldnamen nach Nummer
      • DatabaseColumnType — empfängt Feldtyp nach Nummer
      • DatabaseColumnSize — empfängt Feldgröße in Bytes
      • DatabaseColumnText — empfängt den Feldwert als Zeichenkette aus dem aktuellen Datensatz
      • DatabaseColumnInteger —  empfängt einen Integer-Wert aus dem aktuellen Datensatz
      • DatabaseColumnLong — empfängt einen Long-Wert aus dem aktuellen Datensatz
      • DatabaseColumnDouble — empfängt einen Double-Wert aus dem aktuellen Datensatz
      • DatabaseColumnBlob — empfängt ein Array von Feldwerten aus dem aktuellen Datensatz

      Die folgenden Fehlernummern wurden für die Funktionen hinzugefügt:

      • ERR_MQL_DATABASE_INTERNAL (5120) — interner Datenbankfehler
      • ERR_MQL_DATABASE_INVALID_HANDLE (5121) — ungültiges Datenbankhandle
      • ERR_MQL_DATABASE_TOO_MANY_OBJECTS (5122) maximale Anzahl der Datenbankobjekte überschritten
      • ERR_MQL_DATABASE_CONNECT (5123)Datenbankverbindungsfehler
      • ERR_MQL_DATABASE_EXECUTE (5124) Ausführungsfehler der Anfrage
      • ERR_MQL_DATABASE_PREPARE (5125) Fehler bei der Erstellung von Anfragen
      • ERR_MQL_DATABASE_NO_MORE_DATA (5126) — keine Daten mehr zum Lesen
      • ERR_MQL_DATABASE_STEP (5127) Fehler beim Wechsel zum nächsten Abfragedatensatz
      • ERR_MQL_DATABASE_NOT_READY (5128) Daten zum Lesen von Abfrageergebnissen sind noch nicht bereit
      • ERR_MQL_DATABASE_BIND_PARAMETERS (5129) SQL-Abfrage Auto-Substitutionsfehler

    3. Hinzugefügt wurden neue Eigenschaft von MQL5-Programmen, die die Auswahl einer Standard-Visualisierungsmethode ermöglicht.
      #property optimization_chart_mode "3d,InpX,InpY"
      Die Eigenschaft ermöglicht die Bestimmung des Chart-Typs, der sich am Ende der Optimierung öffnet, sowie der Programmparameter für die X- und Y-Achse.
      Die Eigenschaft legt nur die Standardsicht des Charts fest. Sie kann über das Kontextmenü jederzeit manuell geändert werden.

    4. Die neue Funktion MathArctan2. Liefert das Bogenmaß des Winkels, dessen Tangente gleich dem Verhältnis der beiden angegebenen Zahlen ist.
      double  MathArctan2(
         double  y      // die Y-Koordinate des Punktes
         double  x      // die X-Koordinate des Punktes
         );
    5. Wir haben die allgemeine Optimierung von Programmen zur Leistungssteigerung und Reduzierung des Ressourcenverbrauchs durchgeführt.
    6. Beispiele für mathematische Berechnungen, die im Strategie-Tester durchgeführt werden können, wurden hinzugefügt. Sie befinden sich im Verzeichnis \MQL5\Experts\Examples\Math 3D\Math.
    7. Es wurde eine strengere Kontrolle der namespaces (Namensräume) eingeführt.
    8. Das Laden von verknüpften Bibliotheken bei der Verwendung von .NET-Bibliotheken in MQL5-Programmen wurde hinzugefügt. Wenn die verwendete Bibliothek .NET andere Bibliotheken für den Betrieb benötigt, versucht der Compiler, die benötigten Bibliotheken automatisch aus \MQL5\Libraries zu laden.
    9. Feste Zeitoperationen im MetaTrader-Modul für die Python-Integration. Nun verwenden alle Ausgabedaten die Zeit des Handelsservers, mit dem das Terminal verbunden ist.

    Tester

    1. Eine Fülle von neuen Funktionen und Verbesserungen:


      Nutzereinstellungen für Finanzinstrumente
      Nun können Sie die Einstellungen des Haupthandelsinstruments ändern, für das eine Test/Optimierung durchgeführt wird. Fast alle Spezifikationsparameter können überschrieben werden: Volumen, Handelsmodi, Margenanforderungen, Ausführungsmodus und andere Einstellungen. Wenn Sie also einen Expert Advisor unter verschiedenen Bedingungen überprüfen müssen, ist es nicht erforderlich, ein separates nutzerdefiniertes Symbol zu erstellen und dessen Historie zu erstellen. Dies kann durch Ändern der Standardsymbol-Einstellungen geschehen.



      Wenn die Symbolspezifikation angepasst ist, werden das Zahnradsymbol und das Symbolsymbol mit einem Sternchen gekennzeichnet. Dies zeigt, dass für den aktuellen Test nutzerdefinierte Parameter verwendet werden.




      Letzte Einstellungen/Expert Advisors/Charts
      Mit den neuen Kontextmenübefehlen können Sie schnell testen oder optimieren. Wählen Sie die zuletzt verwendeten Testeinstellungen, die letzten Charts oder Anwendungen:




    MetaEditor

    1. Es wurde die Möglichkeit zugefügt, mit C/C++- und Python-Projekten direkt aus dem MetaEditor zu arbeiten. Jetzt können mehrsprachige Projekte mit dem integrierten Editor verwaltet werden.

      Wenn auf Ihrem PC entsprechende Compiler installiert sind, erkennt MetaEditor diese und fügt sie zu den Einstellungen hinzu. Optional können Sie auf der Registerkarte Compiler Pfade zu den erforderlichen Komponenten angeben. Über die gleiche Registerkarte können Sie die Komponenten laden, indem Sie auf Installieren neben dem entsprechenden Feld klicken.




      Danach können Sie mit C/C++- und Python-Projekten ähnlich wie mit MQL5-Programmen arbeiten.

    2. Hinzugefügt wurde eine Unterstützung für Teilprojekte im Verzeichnis der gemeinsamen Projekte, die für die gemeinsame Projektentwicklung über MQL5 Storage bestimmt sind. Bisher konnten auf der obersten Ebene nur einzelne Projekte angelegt werden.
    3. Eingebaute Debugger-Updates.
    4. Das Hinzufügen eines Funktionskopfes bei Verwendung eines Code Stylers wurde korrigiert.
    5. Die Befehle 'Zur vorherigen/nächsten Cursorposition springen' sind nun nicht nur im Menü Ansicht, sondern auch in der Symbolleiste verfügbar.
    6. Leerzeichen können nun auch in Projektnamen verwendet werden.

    Android

    1. Es wurde die Möglichkeit zugefügt, direkt zu den Ein-/Auszahlungsseiten auf der Broker-Website zu wechseln.

      Sie müssen nicht mehr nach geeigneten Funktionen im Händlerraum auf der Website Ihres Brokers suchen. Befehle für eine direkte Navigation sind direkt in den Terminals verfügbar: Aus den Bereichen Konten und Handel kann der Nutzer direkt auf Ein- und Auszahlungsseiten wechseln:



      • 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.

    2. Positionen in der Historie werden nun nach dem Datum der Positionsschließung sortiert.
    3. Hinzugefügt wurde das Markieren von Positionen, die durch Stop-Loss oder Take-Profit geschlossen wurden, mit roten und grünen vertikalen Linien im Abschnitt History.
    4. Hinzugefügt wurden neue Felder in der Spezifikation eines Handelssymbols:

      • Kategorie — die Eigenschaft 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. Die Kategorie wird nur angezeigt, wenn der Broker die entsprechenden Informationen zur Verfügung stellt.
      • Börse — der Name der Börse an der das Wertpapier gehandelt wird. Die Kategorie wird nur angezeigt, wenn der Broker die entsprechenden Informationen zur Verfügung stellt.

    5. Hinzugefügt wurde eine Statusanzeige bezüglich eines Margin-Calls im Handelsbereich. Bei Eintreten dieser Situation werden die Parameter Marge, Freie Marge und Margenstufe rot dargestellt.
    6. Die Anzeige der OTP-Sektion Öffnungsknopf in Tabletten wurde korrigiert.
    7. Andere Korrekturen und Verbesserungen.

    iPhone/iPad

    1. Es wurde die Möglichkeit zugefügt, schnell zu den Ein-/Auszahlungsseiten auf der Broker-Website zu wechseln. Weitere Informationen finden Sie in der Liste What's New von MetaTrader 5 für Android.



    2. Unterstützung für den Dunkelmodus für iOS/iPadOS hinzugefügt.
    3. Der Bereich Einmal-Passwort ist jetzt in der iPad-Version verfügbar.
    4. Die Positionen, die durch Stop-Loss oder Take-Profit geschlossen werden, sind im Abschnitt Historie mit roten und grünen vertikalen Linien markiert.
    5. Positionen in der Historie werden nun nach dem Datum der Positionsschließung sortiert. Wenn die Position noch nicht geschlossen wurde, wird ihr Öffnungsdatum für die Sortierung verwendet.
    6. Weitere Korrekturen und Verbesserungen.


    18 Oktober 2019
    MetaTrader 5 build 2190

    Terminal

    1. Die Anzeigereihenfolge der MQL5-Programme im Navigator wurde korrigiert.

    MQL5

    1. Fehler bei der Kompilierung wurden behoben, die mit der Verwendung lokaler statischer Variablen in Programmen mit der Deklaration input group verbunden waren.

    VPS

    1. Korrigierte Anforderung von Hosting Journalen.

    Tester

    1. Verbesserte Darstellung der dreidimensionalen Optimierungsdiagramme.
    2. Der Empfang von Frames während der Vorwärtsoptimierung wurde korrigiert. Nun stehen alle Frames aus der Haupt- und Vorwärtsoptimierung in der Funktion OnTesterDeinit zur Verfügung.
    3. Die Bildung eines Symbolbaums in den Einstellungen des Strategy Tester wurde korrigiert.

    Übersetzung der Benutzeroberfläche in Punjabi (Indien) hinzugefügt.

    Die Dokumentation wurde aktualisiert.

    Fehlerbehebungen auf Basis von Absturzberichten.

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

    5 Oktober 2019
    MetaTrader 5 Plattform Build 2170: MQL5 Umgebung, globaler Strategietester und Updates des integrierten Virtual Hostings

    Terminal

    1. 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.




    2. 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.
    3. 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



    4. 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

    5. 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:




    6. Das Fadenkreuz des Charts zeigt nun zusätzlich zu den bisher verfügbaren Kernen den Abstand zwischen den Preisniveaus in Prozent an:




    7. 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:




    8. 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

    1. 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;  // korrekte Deklaration der Struktur item der Klasse CBar
      Item       item;  // falsche Deklaration
      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();
        }
      //+------------------------------------------------------------------+
      //| Script program start function                                    |
      //+------------------------------------------------------------------+
      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

    2. Die neue Version bietet einen schnelleren Zugriff auf die Daten von Zeitreihen mit folgender Funktion: iTime, iOpen, iHigh, iLow, iClose, iVolume, iTickVolume, iSpread.

    3. Ergänzt wurde die Unterstützung des Attributs "=delete". Damit kann die Verwendung bestimmter Klassenmethoden verhindert werden.
      class A
        {
         void              operator=(const A &)=delete;    // prohibit object copying operator
        };
      
      class B : public A
        {
        };
      
      //+------------------------------------------------------------------+
      //| Script program start function                                    |
      //+------------------------------------------------------------------+
      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&)'

    4. 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.

    5. 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.

    6. 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;         // Bollinger Bands period
      input double          ExtBBDeviation =2.0;        // deviation
      input ENUM_TIMEFRAMES ExtSignalTF    =PERIOD_M15; // BB timeframe
      
      input group           "Trend"
      input int             ExtMAPeriod    =13;         // Moving Average period
      input ENUM_TIMEFRAMES ExtTrendTF     =PERIOD_M15; // MA timeframe
      
      input group           "ExitRules"
      input bool            ExtUseSL       =true;       // use StopLoss
      input int             Ext_SL_Points  =50;         // StopLoss in points
      input bool            ExtUseTP       =false;      // use TakeProfit
      input int             Ext_TP_Points  =100;        // TakeProfit in points
      input bool            ExtUseTS       =true;       // use Trailing Stop
      input int             Ext_TS_Points  =30;         // Trailing Stop in points
      
      input group           "MoneyManagement"
      sinput double         ExtInitialLot  =0.1;        // initial lot value
      input bool            ExtUseAutoLot  =true;       // automatic lot calculation
      
      input group           "Auxiliary"
      sinput int            ExtMagicNumber =123456;     // EA Magic Number
      sinput bool           ExtDebugMessage=true;       // print debug messages
      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.




    7. 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);
        }
      //+------------------------------------------------------------------+
      //| Script program start function                                    |
      //+------------------------------------------------------------------+
      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() );
        }
    8. 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.
    9. Korrigiert wurde ein übermäßiger Speicherbedarf in den Funktionen CopyTicks und CopyTicksRange.

    Signale

    1. Die Darstellung von Signalcharts bei der Arbeit auf Wine (Mac OS und Linux) wurde korrigiert.

    Tester

    1. 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.




    2. 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.




    3. Speichern des Optimierungs-Cache für den Modus "Alle Symbole in der Marktübersicht" hinzugefügt.
    4. 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:




    5. Deutlich beschleunigtes Testen und Optimieren, einschließlich Operationen, die mit dem MQL5 Cloud Network durchgeführt werden.
    6. Korrigierte und optimierte Arbeit mit Frames.

    MetaEditor

    1. 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:
      // vorher
      ParameterGetRange("InpX",enable,x_cur,x_start,x_step,x_stop);
      // nachher
      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:
      // vorher
      if(x==1&y!=2)
        {
         int a=0;
        }
      // nachher
      if(x == 1 & y != 2)
       {
        int a = 0;
       }

    2. 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.




    3. 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.

    12 Juni 2019
    MetaTrader 5 Plattform build 2085: Integration mit Python und Verbesserungen des Strategietesters

    Terminal

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

      Python ist eine moderne High-Level-Programmiersprache zur Entwicklung von Skripten und Anwendungen. Es enthält mehrere Bibliotheken für maschinelles Lernen, Prozessautomatisierung sowie Datenanalyse und Visualisierung.

      Das MetaTrader-Paket für Python wurde für das effiziente und schnelle Abrufen von Austauschdaten über das Interprozessorkommunikation direkt vom MetaTrader 5 Terminal aus entwickelt. Die so erhaltenen Daten können für statistische Berechnungen und maschinelles Lernen weiterverwendet werden.



      Verbindung

      1. Laden Sie die letzte Pythonversion von https://www.python.org/downloads/windows
      2. Beim Installieren von Python prüfen Sie "Add Python X.X to PATH%", damit Sie die Python-Skripts aus der Kommandozeile heraus starten können.
      3. Installieren des MetaTrader 5 Moduls aus der Kommandozeile
        pip install MetaTrader5
      4. Fügen Sie die Pakete matplotlib und pytz hinzu
        pip install matplotlib
        pip install pytz

      Funktionen

      • MT5Initialize stellt eine Verbindung mit dem MetaTrader 5 Terminal her
      • MT5Shutdown schließt die vorher hergestellte Verbindung zu MetaTrader 5 Terminal wieder
      • MT5TerminalInfo ruft den Status und die Parameter des verbundenen MetaTrader 5 Terminals ab
      • MT5Version gibt die Version des MetaTrader 5 Terminals zurück
      • MT5WaitForTerminal wartet, bis sich MetaTrader 5 Terminal mit dem Handelsserver verbindet
      • MT5CopyRatesFrom ruft die Bars vom MetaTrader 5 Terminal, beginnend mit dem angegebenen Datum ab
      • MT5CopyRatesFromPos ruft die Bars vom MetaTrader 5 Terminal, beginnend mit dem angegebenen Index ab
      • MT5CopyRatesRange ruft die Bars der angegebenen Zeitspanne vom MetaTrader 5 Terminal ab
      • MT5CopyTicksFrom ruft die Ticks vom MetaTrader 5 Terminal, beginnend mit dem angegebenen Datum ab
      • MT5CopyTicksRange ruft die Ticks der angegebenen Zeitspanne vom MetaTrader 5 Terminal ab


    2. Die Bereiche Market und Signal wurden optimiert. Jetzt läuft das Angebot von Produkten und Signalen bis zu siebenmal schneller und bietet daher eine verbesserte Sucherfahrung.




    3. Hinzugefügt wurde die Unterstützung von "Markt", "Signale" und "Suche" auf Wine. Nutzer von Linux und Mac OS können jetzt auf den größten Markt von Handelsprogrammen und dem Kopieren des Handels zugreifen.




    4. Das integrierte Lernprogramm wurde in mehr als 30 Sprachen übersetzt, einschließlich Spanisch, Chinesisch, Portugiesisch und Deutsch und vielen anderen. Um die interaktiven Hinweise in der gewünschten Sprache zu erhalten, wechseln Sie sie in die Sprachschnittstelle über das Menü Ansicht.




    5. Neue Optionen ermöglichen die Überprüfung von Telefonnummern und E-Mails, die Händler beim Eröffnen von Demo- und Vorkonten angeben.

      Die verwendete Art der Verifikation wird vom Broker festgelegt. Wenn die Option aktiviert ist, werden bei der Kontoanfrage automatisch Bestätigungscodes an den Händler gesendet und es erscheinen spezielle Codefelder im Dialogfenster:




      Der Bestätigungscode ist gültig für mehrere Minuten. Wenn der Code nicht innerhalb dieser Zeit in das Feld eingegeben wird, muss der Händler den Vorgang wiederholen.
      Vor dem Senden des Codes prüft das System, ob die angegebene Telefonnummer/E-Mail zuvor bestätigt wurde. Wenn der Händler die Überprüfung von seinem Computer aus bereits bestanden hat, wird das Konto ohne zusätzliche Bestätigung eröffnet. Somit gibt es keine zusätzlichen Schwierigkeiten für Händler bei der Kontoanfrage.

    6. Die Zahlungsmöglichkeiten der MQL5.community über das System PayPal wurden erweitert. Mit diesem System können Käufe nun mit einem Klick durchgeführt werden.

      Wie es funktioniert
      Nachdem Sie sich für einen Kauf über Ihr PayPal-Konto eingeloggt haben, werden Sie aufgefordert, weitere Zahlungen an unser Unternehmen zu erlauben:





      Mit der Bestätigung dieser Option, können Sie danach mit einem Klick auf die Schaltfläche des vorher gesicherten Kontos einkaufen:




      Wenn Sie auf "Abbrechen und zu MetaQuotes Software Corp. zurückkehren" klicken, tätigen Sie Zahlungen auf normale Weise, indem Sie die PayPal-Kontoinformationen für jeden Kauf manuell eingeben.
      Die Website MQL5.com und die Plattform MetaTrader 5 speichern Ihre Zahlungsdaten nicht. Wenn Sie Geld einzahlen, einen Kauf auf dem Market tätigen oder ein Signal abonnieren, werden die Daten auf Seiten des Zahlungssystems überprüft. Sie können jederzeit den Link zu Ihrem PayPal-Konto entfernen.

    7. Verbesserungen und Optimierungen des Strategietesters.

      Wir haben eine Vielzahl von versteckten Verbesserungen und Fehlerbehebungen durchgeführt, um den Betrieb des Strategietesters zu optimieren. Das Update ermöglicht ein viel schnelleres Testen einiger der Aufgabentypen und eine höhere Betriebsstabilität. Zu den wichtigsten Verbesserungen gehören:

      Operationen mit Frames
      Der Betrieb mit Frames auf lokalen, Netzwerk- und Cloud-Agenten wurde optimiert. Solche Operationen werden nun schneller verarbeitet und nie übersprungen.

      Verteilung von Aufgaben an Agenten
      Der Tester kann nun während des Optimierungsprozesses Aufgaben an Agenten weitergeben. Wenn ein neuer Agent verfügbar ist (oder einer der zuvor verwendeten freigegeben wurde), erstellt der Tester automatisch ein neues Aufgabenpaket mit denjenigen, die zuvor auf andere Agenten verteilt worden war. Aufgaben können auch neu verteilt werden, wenn langsame Agenten erkannt werden. Aufgaben solcher Agenten werden an andere Agenten weitergeleitet, um die Optimierung schneller zu beenden.

      Die Aufgabenverteilung im mathematischen Berechnungsmodus ist schneller geworden.

      Optimierungsstatistik im Journal
      Das Optimierungsprotokoll wurde erweitert: Es enthält neben anderem detaillierte Statistiken über die Nutzung des MQL5 Cloud Netzwerks, über die Aktivierung und Deaktivierung von Cloud-Agenten.

      Betrieb im Log-Modus der kompletten Optimierung
      Für einen optimalen Ressourcenverbrauch werden nicht alle Meldungen der Agenten in das Protokoll des Testers geschrieben. Um an alle Protokolleinträge zu gelangen, können Sie über das Kontextmenü des Testerprotokolls die Option "Full optimization logs" aktivieren. Bisher hat dieser Modus den Optimierungsprozess deutlich verlangsamt. Die Berechnungszeit wird nun nicht mehr beeinflusst.

      MQL5 Cloud Netzwerk
      Optimierter Betrieb der Testagenten der Cloud. Jetzt werden Berechnungsaufgaben effizienter verteilt.

    8. Der integrierte Kalender enthält Veröffentlichungen von mehr als 900 Indikatoren der 18 größten Volkswirtschaften der Welt, darunter den USA, der Europäische Union, Japan, Großbritannien und anderen. Die relevanten Daten werden aus offenen Quellen in Echtzeit erhoben. Durch die regelmäßige Überprüfung dieser Nachrichten bleiben Händler über die neuesten globalen Nachrichten informiert und können fundierte Handelsentscheidungen treffen.

      Der Wirtschaftskalender ist für Desktop-Terminals und Websites sowie für mobilen Geräten verfügbar. Die Anwendung kann über das Kontextmenü Kalender im Terminal geöffnet werden:




      Wählen Sie Ihre Plattform aus und laden Sie die Tradays-Apps herunter:


      Neben den für die Desktop-Plattform verfügbaren Kalenderfunktionen bietet die mobile Version Ereignis-Erinnerungen und den Zugriff auf eine vollständige Historie der Indikatoren in Form von Charts und Tabellen.

    9. Beim Import der Tick-Historie wurde eine automatische Generierung der benutzerdefinierten Symbolleistenhistorie hinzugefügt. Wenn sich nun die Tickdaten eines benutzerdefinierten Symbols ändern, werden die entsprechenden Balken automatisch neu berechnet:

      • So bleiben einheitliche Daten auf der Plattform erhalten.
      • Nach dem Import von Tick-Daten (sofern genügend Daten vorhanden sind) entfällt der Import von Balken, da diese vom Terminal automatisch berechnet werden.

      Die Änderungen betreffen den Import von Ticks, die über die Terminalschnittstelle durchgeführt werden, sowie das Update von Ticks, die aus MQL5-Anwendungen mit der Funktion CustomTicks* durchgeführt werden. Jede Änderung der Tickdaten führt zur Neuberechnung der entsprechenden 1-Minuten-Balken des benutzerdefinierten Symbols.

    10. Die Datenaktualisierung im Datenfenster wurde korrigiert, wenn ein Fadenkreuz auf einem losgelösten Diagramm verwendet wurde.
    11. Das Speichern des Verlaufs der Tick-Historie wurde korrigiert. In früheren Versionen konnten mehrere Ticks innerhalb einer Millisekunde in einer falschen Reihenfolge gespeichert werden.
    12. Die Generierung von Charts basierend auf einer zu kurzen Kurshistorie (weniger als einen Tag), die auf dem Server verfügbar ist, wurde korrigiert.

    MQL5

    1. Es wurde die Debuggingoption MQL5 service hinzugefügt. Diese Anwendungen können nun ähnlich wie Expert Advisor und Indikatoren getestet werden.
    2. Neue Berechnungsmethoden für Gewinn und Marge wurden zur Enumeration ENUM_SYMBOL_CALC_MODE hinzugefügt:

      • SYMBOL_CALC_MODE_EXCH_BONDS — Berechnung börsengehandelter Anleihen.
      • SYMBOL_CALC_MODE_EXCH_STOCKS_MOEX — Berechnung für Aktien der Moskauer Börse.
      • SYMBOL_CALC_MODE_EXCH_BONDS_MOEX — Berechnung für Anleihen der Moskauer Börse.

    3. Die neue Funktion TesterDeposit emuliert Kontotransaktionen während des Testens. Diese Funktion kann beim Testen von Strategien des Geldmanagements hilfreich sein.
      bool  TesterDeposit(
         double money      // Höhe der Kontogutschrift
         );
    4. Während der Ausführung der Methode OnDeinit empfängt die Anwendung MQL5 keine Ereignisse vom Terminal. Bisher konnten Anwendungen aufgrund des Empfangens anderer Ereignisse gelegentlich die Deinitialisierung nicht abschließen (z.B. alle angelegten Objekte löschen).
    5. Es wurden gelegentlich auftretende Fehler behoben, die nach einer Änderung in der Tick-Historie des benutzerdefinierten Symbols für den aktuellen Tag auftreten konnten.
    6. Es wurde eine gelegentlich auftretende Verlangsamung der Anwendung bei der Verwendung einer großen Anzahl (Zehntausende) von grafischen Objekten behoben.
    7. Behoben wurde das Einfrieren des Terminals bei häufigen Aufrufen des Trading-Verlaufs aus MQL5-Programmen.
    8. Behoben wurde ein Fehler der Funktion iBarShift. Mit dem Flag "exact=false" und der Anforderung außerhalb der Daten gab die Funktion die älteste Barnummer statt der neuesten zurück.

    Tester

    1. Die Bestimmung der Kernnummer wurde auf Computern mit Prozessoren mit mehreren NUMA-Knoten korrigiert.
    2. Hinzugefügt wurde die Möglichkeit einen Testdurchlauf und Optimierung mit einem Anfangskapital von Null durchzuführen, da jetzt Kontotransaktionen mit der neuen Funktion TesterDeposit während des Tests emuliert werden können.

    MetaEditor

    1. Der Befehl code styler kann nun der Symbolleiste für den schnellen Zugriff hinzugefügt werden.
    2. Die Umschaltung auf die Parameterdefinition und die Anzeige der zugehörigen Daten bei Verwendung von Nicht-Unicode-Zeichen in Funktions- und Variablennamen wurde korrigiert.

    Die Dokumentation wurde aktualisiert.

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

    21 Februar 2019
    MetaTrader 5 Plattform Build 2005: Wirtschaftskalender, MQL5-Programme als Dienste und eine API für die Sprache R

    Terminal

    1. 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 Daten des Kalenders können jetzt aus MQL5 Programmen abgerufen werden. Bitte sehen Sie weiter unten die Details.




    2. Es gibt eine neue Art von MQL5-Anwendungen — Dienste. Dieser neue Typ ermöglicht die Erstellung von benutzerdefinierten Preisfeeds für das Terminal, d.h. die Integration 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 die entsprechende Option des MQL5 Assistenten. 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 standardmäßigen 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. Ein Lernprogramm wurde implementiert.

      Die neuen Merkmale helfen Anfängern dabei zu lernen, was man mit der Plattform alles machen kann. 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 gestartet werden.

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




    4. 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 effiziente Präsentationsform steht nun in Berichten der Historie zur Verfügung, die in Dateien exportiert werden.




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

      Wir haben ein spezielles Paket für MetaTrader 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 MetaTrader

      Die folgenden Befehle zur Datenanforderung sind 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 vom 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 wartet auf 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. 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. Behoben wurde ein Berechnungsfehler bei synthetischen Symbolen, aufgrund dessen Daten gelegentlich übersprungen werden konnten.
    8. 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. Korrigiert wurde die Darstellung der Suchergebnisse auf Bildschirmen mit hoher DPI-Auflösung.

    MQL5

    1. Integrierter Zugriff auf die Daten des Wirtschaftskalenders aus MQL5-Programmen.

      Neue Funktionen

      CalendarCountryById — Anrufen der Länderbeschreibung auf Grund des Identifikators.
      bool CalendarCountryById(
         const long           country_id,    // Länder-ID
         MqlCalendarCountry&  country        // Länderbeschreibung
         );
      
      CalendarEventById — Abrufen der Ereignisbeschreibung auf Grund des Identifikators.
      bool CalendarEventById(
         const long           event_id,      // Ereignis-ID
         MqlCalendarEvent&    event          // Ereignisbeschreibung
         );
      
      CalendarValueById — Abrufen der Wertbeschreibung des Ereignisses auf Grund des Identifikators.
      bool CalendarValueById(
         const long           value_id,      // Werte-ID
         MqlCalendarValue&    value          // Wertbeschreibung
         );
      
      CalendarEventByCountry — Abrufen eines Arrays der verfügbaren Ereignisse eines Landes.
      bool CalendarEventByCountry(
         string               country_code,  // Länder-Code
         MqlCalendarEvent&    events[]       // Array der Ereignisse
         );
      
      CalendarEventByCurrency — Abrufen eines Arrays der verfügbaren Ereignisse, die eine Währung beeinflussen.
      bool CalendarEventByCurrency(
         string               currency,      // Währung
         MqlCalendarEvent&    events[]       // Array der Ereignisse
         );
      
      CalendarValueHistoryByEvent — Abrufen eines Arrays mit den Werten einer angegebenen Zeitspanne, nach dem Ereignis-Identifikator.
      bool CalendarValueHistoryByEvent(
         ulong                event_id,      // Ereignis-ID
         MqlCalendarValue&    values[],      // Array der Werte
         datetime             datetime_from, // Anfangszeitpunkt der Zeitspanne
         datetime             datetime_to=0  // Endzeitpunkt der Zeitspanne
         );
      
      CalendarValueHistory — Abrufen eines Arrays von Werten der angegebenen Zeitspanne mit allen Ereignissen, gefiltert nach Land und/oder Währung.
      bool CalendarValueHistory(
         MqlCalendarValue&    values[],          // Array der Werte
         datetime             datetime_from,     // Anfangszeitpunkt der Zeitspanne
         datetime             datetime_to=0,     // Endzeitpunkt der Zeitspanne
         string               country_code=NULL, // Länder-Code
         string               currency=NULL      // Währung
         );
      
      CalendarValueLastByEvent — Abrufen eines Array der letzten Ereigniswerte nach Identifikator. Diese Funktion ermöglicht das Abrufen der Werte, die seit der letzten Anforderung erschienen sind. Für diesen Vorgang wird zusätzlich der In/Out-Parameter "change_id" verwendet.

      Bei jeder Änderung der Kalenderdatenbank wird die Eigenschaft "change_id" (die letzte Änderungskennung) aktualisiert. Bei der Datenanfrage geben Sie "change_id" an und das Terminal gibt Ereignisse zurück, die nach dieser Zeit aufgetreten sind, sowie den aktuellen Wert "change_id", der für die nächste Anfrage verwendet werden kann. Geben Sie beim ersten Funktionsaufruf für "change_id" Null an: Die Funktion gibt keine Ereignisse zurück, sondern die aktuelle "change_id" für weitere Anfragen.
      bool CalendarValueHistory(
         ulong                event_id,          // Ereignis-ID
         ulong&               change_id,         // letzte Änderungs-ID des Kalenders
         MqlCalendarValue&    values[]           // Array der Werte
         );
      
      CalendarValueLast — Abrufen eines Arrays der letzten Werte aller Ereignisse, gefiltert nach Land und/oder Währung. Diese Funktion ermöglicht das Abrufen der Werte, die seit der letzten Anforderung erschienen sind. Ähnlich wie bei CalendarValueLastByEvent wird die Eigenschaft "change_id" für die Anforderung verwendet.
      bool CalendarValueHistory(
         ulong                event_id,          // Ereignis-ID
         ulong&               change_id,         // letzte Änderungs-ID des Kalenders
         MqlCalendarValue&    values[],          // Array der Werte
         string               country_code=NULL, // Länder-Code
         string currency=NULL                    // Währung
         );
      

      Neue Strukturen

      MqlCalendarCountry — Beschreibung der Länder.
      struct MqlCalendarCountry
        {
         ulong             id;                        // Länder-ID in ISO 3166-1
         string            name;                      // Text-Name des Landes
         string            code;                      // Code-Name des Landes in ISO 3166-1 alpha-2
         string            currency;                  // Währungscode des Landes
         string            currency_symbol;           // Symbol/Zeichen der Landeswährung
         string            url_name;                  // Ländername, der in der URL von mql5.com verwendet wird
        };
      
      MqlCalendarEvent — Ereignisbeschreibung
      struct MqlCalendarEvent
        {
         ulong                          id;           // Ereignis-ID
         ENUM_CALENDAR_EVENT_TYPE       type;         // Ereignis-Typ
         ENUM_CALENDAR_EVENT_SECTOR     sector;       // Sektor, zu dem das Ereignis gehört
         ENUM_CALENDAR_EVENT_FREQUENCY  frequency;    // Häufigkeit der Ereignisveröffentlichung
         ENUM_CALENDAR_EVENT_TIMEMODE   time_mode;    // Zeitmodus der Ereignisveröffentlichung
         ulong                          country_id;   // Länder-ID
         ENUM_CALENDAR_EVENT_UNIT       unit;         // Einheit der Ereigniswerte
         ENUM_CALENDAR_EVENT_IMPORTANCE importance;   // Wichtigkeit des Ereignisses
         ENUM_CALENDAR_EVENT_MULTIPLIER multiplier;   // Multiplikator der Wichtigkeit des Ereignisses
         uint                           digits;       // Dezimalstellen des Ereigniswertes
         string                         source_url;   // URL der Quelle
         string                         event_code;   // Ereignis-Code
         string                         name;         // Text-Name des Ereignisses in der Sprache des Terminals
        };
      
      MqlCalendarValue — Wertbeschreibung des Ereignisses.
      struct MqlCalendarValue
        {
         ulong             id;                        // Werte-ID
         ulong             event_id;                  // Ereignis-ID
         datetime          time;                      // Datum und Zeit des Ereignisses
         datetime          period;                    // Zeitperiode, für den das Ereignis veröffentlicht wird
         int               revision;                  // Revision des veröffentlichten Indikators in Relation zur Berichtsperiode
         long              actual_value;              // aktueller Ereigniswert
         long              prev_value;                // vorheriger Ereigniswert
         long              revised_prev_value;        // revidierter, vorheriger Ereigniswert
         long              forecast_value;            // prognostizierter Ereigniswert
         ENUM_CALENDAR_EVENT_IMPACRT impact_type;     // mögliche Auswirkung auf den Währungskurs
        };
      

      Neue Enumerationen

      enum ENUM_CALENDAR_EVENT_FREQUENCY
        {
         CALENDAR_FREQUENCY_NONE            =0,   // nicht bekannt
         CALENDAR_FREQUENCY_WEEK            =1,   // wöchentlich
         CALENDAR_FREQUENCY_MONTH           =2,   // monatlich
         CALENDAR_FREQUENCY_QUARTER         =3,   // vierteljährlich
         CALENDAR_FREQUENCY_YEAR            =4,   // jährlich
         CALENDAR_FREQUENCY_DAY             =5,   // täglich
        };
      
      enum ENUM_CALENDAR_EVENT_TYPE
        {
         CALENDAR_TYPE_EVENT                =0,   // Ereignis (Sitzung, Rede etc.)
         CALENDAR_TYPE_INDICATOR            =1,   // Indikator
         CALENDAR_TYPE_HOLIDAY              =2,   // Feiertag
        };
      
      enum ENUM_CALENDAR_EVENT_SECTOR
        {
         CALENDAR_SECTOR_NONE               =0,   // kein Sektor bestimmt
         CALENDAR_SECTOR_MARKET             =1,   // Markt
         CALENDAR_SECTOR_GDP                =2,   // BIP
         CALENDAR_SECTOR_JOBS               =3,   // Arbeitsstellen
         CALENDAR_SECTOR_PRICES             =4,   // Preise
         CALENDAR_SECTOR_MONEY              =5,   // Geld
         CALENDAR_SECTOR_TRADE              =6,   // Handel
         CALENDAR_SECTOR_GOVERNMENT         =7,   // Regierung
         CALENDAR_SECTOR_BUSINESS           =8,   // Geschäft
         CALENDAR_SECTOR_CONSUMER           =9,   // Verbraucher
         CALENDAR_SECTOR_HOUSING            =10,  // Wohnen
         CALENDAR_SECTOR_TAXES              =11,  // Steuern
         CALENDAR_SECTOR_HOLIDAYS           =12,  // Feiertage
        };
        
      enum ENUM_CALENDAR_EVENT_IMPORTANCE
        {
         CALENDAR_IMPORTANCE_NONE           =0,   // nicht bestimmt
         CALENDAR_IMPORTANCE_LOW            =1,   // niedrig
         CALENDAR_IMPORTANCE_MODERATE       =2,   // mittel
         CALENDAR_IMPORTANCE_HIGH           =3,   // hoch
        };
      
      enum ENUM_CALENDAR_EVENT_UNIT
        {
         CALENDAR_UNIT_NONE                 =0,   // ohne Einheit
         CALENDAR_UNIT_PERCENT              =1,   // Prozent
         CALENDAR_UNIT_CURRENCY             =2,   // Landeswährung
         CALENDAR_UNIT_HOUR                 =3,   // Anzahl der Stunden
         CALENDAR_UNIT_JOB                  =4,   // Anzahl der Arbeitsstellen
         CALENDAR_UNIT_RIG                  =5,   // Anzahl der Förderanlagen
         CALENDAR_UNIT_USD                  =6,   // US-Dollar
         CALENDAR_UNIT_PEOPLE               =7,   // Anzahl der Leute
         CALENDAR_UNIT_MORTGAGE             =8,   // Anzahl der Hypotheken
         CALENDAR_UNIT_VOTE                 =9,   // Anzahl der Stimmen
         CALENDAR_UNIT_BARREL               =10,  // Anzahl der Barrels
         CALENDAR_UNIT_CUBICFEET            =11,  // Volumen in Kubikfuß
         CALENDAR_UNIT_POSITION             =12,  // Anzahl der Arbeitsstellen
         CALENDAR_UNIT_BUILDING             =13   // Anzahl der Gebäude
        };
        
      enum ENUM_CALENDAR_EVENT_MULTIPLIER
        {
         CALENDAR_MULTIPLIER_NONE           =0,   // kein Multiplikator
         CALENDAR_MULTIPLIER_THOUSANDS      =1,   // Tausend
         CALENDAR_MULTIPLIER_MILLIONS       =2,   // Million
         CALENDAR_MULTIPLIER_BILLIONS       =3,   // Milliarde
         CALENDAR_MULTIPLIER_TRILLIONS      =4,   // Billion
        };
        
      enum ENUM_CALENDAR_EVENT_IMPACRT
        {
         CALENDAR_IMPACT_NA                 =0,   // nicht vorhanden
         CALENDAR_IMPACT_POSITIVE           =1,   // positive
         CALENDAR_IMPACT_NEGATIVE           =2,   // negative
        };
      
      enum ENUM_CALENDAR_EVENT_TIMEMODE
        {
         CALENDAR_TIMEMODE_DATETIME         =0,   // die exakte Veröffentlichungszeit der Quelle
         CALENDAR_TIMEMODE_DATE             =1,   // Das Ereignis dauert den ganzen Tag
         CALENDAR_TIMEMODE_NOTIME           =2,   // die Quelle veröffentlicht keinen Ereigniszeitpunkt
         CALENDAR_TIMEMODE_TENTATIVE        =3,   // die Quelle veröffentlicht nur das Datum und keinen genauen Zeitpunkt der Veröffentlichung
        };
      

      Neue Fehlernummern

      ERR_CALENDAR_MORE_DATA             =5400,   // das Array ist für alle Ergebnisse zu klein (Werte, die hineinpassen, werden zurückgegeben)
      ERR_CALENDAR_TIMEOUT               =5401,   // Timeout für das Warten auf die Antwort der Kalenderdaten
      ERR_CALENDAR_NO_DATA               =5402,   // Daten nicht gefunden
      

    2. Korrekturen und Verbesserungen der Betriebsgeschwindigkeit in Bezug auf die Historie von Ticks und Balken.
    3. Korrekturen und signifikante Verbesserungen der Betriebsgeschwindigkeit im Zusammenhang mit Funktionen zur Änderung der Historie von Ticks und Balken von nutzerdefinierten Handelssymbolen, CustomTicks* und CustomRates*.
    4. 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
         );
      

    5. 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);
      

    6. 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 Fehlernummern wurden für die Arbeit mit den Netzwerkfunktionen hinzugefügt:

      • 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 Zertifikat für die sichere Verbindung

    7. 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 für die Zeichenkette
         );
      
      StringSetLength legt die Anzahl der Buchstaben einer Zeichenkette fest.
      bool  StringSetLength(
         string&        string_var,          // Zeichenkette
         uint           new_length           // neue Länge der Zeichenkette
         );
      

    8. 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,                // Startindex für das Entfernen
         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[],          // Zielarray
         const void&   src_array[],          // Quellarray
         uint          dst_start,            // Index des Zielarrays, ab dem eingefügt werden soll
         uint          src_start=0,          // Index im Quellarray, ab dem aus dem Quellarray kopiert werden soll
         uint          count=WHOLE_ARRAY     // Anzahl der einzufügenden 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,              // Startindex der Umkehrung
         uint          count=WHOLE_ARRAY     // Anzahl der Elemente
         );
      

    9. 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 von der Funktion verwendet werden sollen. Der Wert WHOLE_ARRAY wird standardmäßig für den Parameter verwendet. Das bedeutet, dass das gesamte Array verwendet wird.
    10. 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[]            // Array der Beschreibungen der Elemente der Markttiefe (DOM)
         uint                count=WHOLE_ARRAY  // Anzahl der zu verwendenden Elemente
         );
      
    11. Hinzugefügt wurde Überladungen der Funktion CustomSymbolCreate. Dies ermöglicht das Erstellen 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,       // Name des nutzerdefiniertes Symbol
         const string        symbol_path="",    // Name der Gruppe, in der das Symbol erzeugt wird
         const string        symbol_origin=NULL // Symbolname, auf dessen Basis das nutzerdefinierte Symbole erstellt wird
         );
      
      Der Name des Symbols, dessen Eigenschaften für das nutzerdefinierte Symbol kopiert werden sollen, wird im Parameter "symbol_origin" angegeben.

    12. 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]

    13. 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.
    14. Die neuen Eigenschafte SYMBOL_EXIST in der Enumeration ENUM_SYMBOL_INFO_INTEGER bedeutet, dass das Symbol mit diesem Namen gibt.
    15. Die Typisierung bei der Verwendung von vorab-deklarierten Template-Funktionen wurde korrigiert.
    16. Hinzugefügt wurde einer Neu-Initialisierung der Indikatoren beim Wechsel des Handelskontos.
    17. Optimierte StringSplit.
    18. Fehler in der Standardbibliothek behoben.

    Tester

    1. 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 anderes Kriterien erreicht wurde.

      Die 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.

    2. 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.
    3. Verbesserte Arbeit mit Indikatoren bei der visuellen Prüfung. Jetzt werden Preisdiagramm und Indikatorlinien synchron gezeichnet, auch bei maximaler Visualisierungsgeschwindigkeit.
    4. Optimiertes und deutlich beschleunigtes Testen und Optimieren.
    5. Das Debugging von Indikatoren mit historischen Daten wurde korrigiert. Nun können die Funktionen OnInit und OnDeinit eines Indikators korrekt debuggt werden.
    6. Schnellerer Zugriff auf historische Daten beim Testen von Expert Advisors mit verschiedenen Währungen.
    7. Behoben wurde ein gelegentliches Einfrieren des visuellen Testers während des Debuggens mit historischen Daten.
    8. Schnellerer Start der Optimierungsläufe bei der Bearbeitung eines Aufgabenpakets durch einen Agenten.
    9. 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.
    10. 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 erteilt. In früheren Versionen war das Verhalten ähnlich dem Befehl "Disable", der den Agentenbetrieb sofort beendete.




    MetaEditor

    1. 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.
    2. Korrigiert wurde die Anzeige der Suchergebnisse auf Bildschirmen mit hoher DPI-Auflösung.

    Die Übersetzung der Benutzeroberfläche ins Kroatische wurde hinzugefügt.

    Die Dokumentation wurde aktualisiert.

    26 Oktober 2018
    Neue MetaTrader 5 Plattform build 1930: Schwebende Chartfenster und .Net Bibliotheken in MQL5

    Terminal

    1. Jetzt können Sie die Charts der Finanzsymbole vom Fenster des Handelsterminals ablösen.

      Diese Funktion ist praktisch, wenn Sie mehrere Monitore verwenden. Jetzt können Sie das Hauptfenster der Plattform auf einem Monitor einstellen, um Ihren Kontostand zu kontrollieren, und Ihre Charts auf den zweiten Bildschirm verschieben, um die Marktsituation zu beobachten. Um ein Diagramm vom Terminal zu lösen, deaktivieren Sie die Option Docked in dessen Kontextmenü. Verschieben Sie anschließend das Diagramm auf den gewünschten Monitor.





      Eine separate Symbolleiste auf abgelösten Charts ermöglicht die Anwendung von analytischen Objekten und Indikatoren, ohne zwischen den Monitoren wechseln zu müssen. Verwenden Sie das Kontextmenü der Symbolleiste, um den Satz der verfügbaren Befehle zu managen oder auszublenden.

    2. Aktualisiert vollständig die integrierte Chats. Jetzt werden Gruppendialoge und Kanäle unterstützt. Führen Sie private Gespräche mit einer Gruppe von Personen in einer einheitlichen Umgebung, ohne zwischen verschiedenen Dialogen zu wechseln, und erstellen Sie Kanäle nach Ihren Interessen und Sprachen. Kommunizieren Sie mit Kollegen und Freunden der MQL5.community, ohne die Website zu besuchen.

      Gruppen-Chats und Kanäle können öffentlich oder privat sein. Derjenige, der sie erstellt entscheidet, ob es möglich ist, sich ihnen frei oder nur auf Einladung anzuschließen. Sie können Moderatoren auch Kanälen und Chats für zusätzliche Kommunikationskontrolle zuordnen.




    3. Ergänzt wurde die Unterstützung einer erhöhten Volumengenauigkeit beim Handel mit Kryptowährungen. Nun ist das Mindestvolumen der Handelsgeschäfte 0,000000000001 Lots. Die Markttiefe, die Zeit und der Umsatz sowie andere Oberflächenelemente bieten nun die Möglichkeit, Volumina mit einer Genauigkeit von 8 Dezimalstellen darzustellen.

      Das Mindestvolumen und dessen Änderungsstufen hängen von den Einstellungen des Finanzinstrumentes ab, die vom Broker festgelegt werden.




    4. Hinzugefügt wurde eine Registerkarte der veröffentlichten Artikel der MQL5.community zum Fenster Werkzeuge. Über 600 detailliertes Materialien über die Entwicklung von Handelsstrategien in MQL5 sind nun erreichbar ohne das Terminal verlassen zu müssen. Neue Artikel werden jede Woche veröffentlicht.




    5. Hinzugefügt wurde die Unterstützung einer erweiterten Authentifizierung mittels Zertifikat bei einem Betrieb auf Linux/Wine.
    6. Korrigiert wurde die Darstellung der Markttiefe, wenn sie auf eine Ebene begrenzt ist.
    7. Hinzugefügt wurde der Befehl "Sichern als Bild" zur Standard-Symbolleiste. Jetzt ist es viel einfacher, Charts zu fotografieren und in der Community zu teilen.




    8. Korrigiert wurde die Zeitverschiebung beim Importieren von Bars und Ticks. Bisher wurde die Verschiebung in einigen Fällen nicht angewendet.




    9. Korrigiert wurde das Einfrieren des Terminals im Falle einer großen Anzahl an Nachrichten im Wirtschaftskalender.

    MQL5

    1. Hinzugefügt wurde die direkte Unterstützung für .NET-Bibliotheken mit "Smart"-Funktionen-Import. Jetzt können .NET-Bibliotheken verwendet werden, ohne spezielle Wrapper zu schreiben - der MetaEditor macht es jetzt selbst.

      Um mit .NET-Bibliotheksfunktionen zu arbeiten, importieren Sie einfach die DLL selbst, ohne bestimmte Funktionen zu definieren. MetaEditor importiert automatisch alle Funktionen, mit denen man arbeiten kann:
      • Einfache Strukturen (einfache, alte Daten oder POD, plain old data) — Strukturen, die nur einfache Datentypen beinhalten.
      • 'Public static' Funktionen mit Parametern, bei denen nur einfache Typen und POD-Strukturen oder deren Arrays verwendet werden.

      Um Funktionen aus der Bibliothek aufzurufen, importieren Sie sie einfach:
      #import "TestLib.dll"
      
      //+------------------------------------------------------------------+
      //| Startfunktion eines Skripts                                      |
      //+------------------------------------------------------------------+
      void OnStart()
        {
         int x=41;
         TestClass::Inc(x);
         Print(x);
        }
      Der C#-Code der Funktion Inc() aus TestClass schaut wie folgt aus:
      public class TestClass
      {
         public static void Inc(ref int x)
         {
          x++;
         }
      }
      Als Ergebnis der Ausführung gibt das Skript den Wert 42 zurück.

      Die Arbeit an der Unterstützung der .NET Bibliotheken wird fortgesetzt. Deren Möglichkeiten werden in der Zukunft erweitert werden.

    2. Ergänzt wurde die Unterstützung der Funktionen der Standardbibliothek WinAPI. Jetzt muss nicht die Bibliothek nicht mehr manuell importiert werden und, für eine Verwendung der Funktionen des Betriebssystems, die Funktionssignatur im MQL5-Programm angeführt werden. Man muss einfach nur die Headerdatei aus dem Verzeichnis MQL5\Include\WinAPI einbinden.

      Die Funktionen sind in einzelnen Dateien entsprechend ihrer Verwendung gruppiert:

      • libloaderapi.mqh — Arbeit mit Ressourcen
      • memoryapi.mqh — Arbeit mit Speicher
      • processenv.mqh — Arbeit mit dem Arbeitsumfeld
      • processthreadsapi.mqh — Arbeit mit Prozessen
      • securitybaseapi.mqh — Arbeit mit dem Sicherheitssystem
      • sysinfoapi.mqh — Abfrage von Systeminformationen
      • winbase.mqh — Allgemeine Funktionen
      • windef.mqh — Konstante, Strukturen und Enumerationen
      • wingdi.mqh — Arbeit mit Grafikobjekten
      • winnt.mqh — Arbeit mit Sonderfällen (exceptions)
      • winreg.mqh — Arbeit mit der Registry
      • winuser.mqh — Arbeit mit Windows und der Schnittstelle
      • errhandlingapi.mqh — Fehlerbehandlung
      • fileapi.mqh — Arbeit mit Dateien
      • handleapi.mqh — Arbeit mit Handles
      • winapi.mqh — Einbinden aller Funktionen (WinAPI Headerdatei)

      Das Einbinden funktioniert nur auf einer 64-Bit-Architektur.

    3. Hinzugefügt wurde die Unterstützung der Spezifizierer inline, __inline und __forceinline beim Parsen von Code. Die Anwesenheit der Spezifizierer im Code verursacht keine Fehler und hat keinen Einfluss auf die Kompilierung. Im Moment vereinfacht diese Funktion die Übertragung von С++ Code nach MQL5.
      Weitere Informationen über Spezifizierer finden Sie unter MSDN.

    4. Deutlich optimierte Ausführung von MQL5-Programmen. In einigen Fällen kann die Leistungssteigerung 10% erreichen. Kompilieren Sie Ihre Programme mit der neuen MetaEditor-Version erneut, damit laufen sie schneller.
      Leider werden neue Programme aufgrund dieser zusätzlichen Optimierung nicht mit früheren Terminalversionen kompatibel sein. Programme, die in MetaEditor Version 1910 und später kompiliert wurden, können in Terminalversionen unter 1880 nicht gestartet werden. Programme, die in früheren MetaEditor-Versionen kompiliert wurden, können auf neuen Terminals ausgeführt werden.

    5. Signifikant optimierte multiple MQL5-Funktionen.
    6. Hinzugefügt wurden neue Eigenschaften zum Anheften/Ablösen der Charts vom Hauptfenster des Terminals und der Kontrolle von deren Position.

      Hinzugefügt wurden folgende Eigenschaften der Enumeration ENUM_CHART_PROPERTY_INTEGER:

      • CHART_IS_DOCKED - das Chartfenster ist angeheftet. Ist dessen Wert 'false', dann kann der Chart aus dem Terminalbereich abgelöst werden.
      • CHART_FLOAT_LEFT — die linke Koordinate des abgelösten Chartfensters, relativ zum virtuellen Bildschirm.
      • CHART_FLOAT_TOP — die obere Koordinate des abgelösten Chartfensters, relativ zum virtuellen Bildschirm.
      • CHART_FLOAT_RIGHT — die rechte Koordinate des abgelösten Chartfensters, relativ zum virtuellen Bildschirm.
      • CHART_FLOAT_BOTTOM — die untere Koordinate des abgelösten Chartfensters, relativ zum virtuellen Bildschirm.

      Hinzugefügt wurden folgende Funktionen zur Enumeration ENUM_TERMINAL_INFO_INTEGER:

      • TERMINAL_SCREEN_LEFT — die linke Koordinate des virtuellen Bildschirms. Ein virtueller Bildschirm ist ein Rechteck, der alle Monitore umfasst. Wenn ein System zwei Monitore hat, aufgereiht von rechts nach links, befindet sich die linke Koordinate des virtuellen Bildschirms möglicherweise an der Grenze der beiden Monitore.
      • TERMINAL_SCREEN_TOP — die obere Koordinate des virtuellen Bildschirms.
      • TERMINAL_SCREEN_WIDTH — Breite des Terminals.
      • TERMINAL_SCREEN_HEIGHT — Höhe des Terminals.
      • TERMINAL_LEFT — die linke Koordinate des Terminals relativ zum virtuellen Bildschirm.
      • TERMINAL_TOP — die obere Koordinate des Terminals relativ zum virtuellen Bildschirm.
      • TERMINAL_RIGHT — die rechte Koordinate des Terminals relativ zum virtuellen Bildschirm.
      • TERMINAL_BOTTOM — die untere Koordinate des Terminals relativ zum virtuellen Bildschirm.

    7. Hinzugefügt wurde das Feld 'volume_real' zu den Strukturen MqlTick und MqlBookInfo. Damit kann man jetzt mit einer erhöhten Genauigkeit des Volumens arbeiten. Der Wert von 'volume_real' hat eine höhere Priorität als 'volume'. Der Server wird diesen Wert verwenden, wenn angegeben.

      struct MqlTick
        {
         datetime         time;          // Aktualisierungszeit des letzten Preises
         double           bid;           // Aktueller Bid-Preis
         double           ask;           // Aktueller Ask-Preis
         double           last;          // Aktueller Preis der letzten Transaktion (Last)
         ulong            volume;        // Volumen des letzten aktuellen Preises
         long             time_msc;      // Letzte Preisaktualisierung in Millisekunden
         uint             flags;         // Tick-Flags
         double           volume_real;   // Volumen des aktuelle Preises (Last) mit höherer Genauigkeit
        };

      struct MqlBookInfo
        {
         ENUM_BOOK_TYPE   type;            // Order-Typ der Enumeration ENUM_BOOK_TYPE
         double           price;           // Preis
         long             volume;          // Volumen
         double           volume_real;     // Volumen mit höherer Genauigkeit
        };

    8. Hinzugefügt wurden neue Eigenschaften zur Enumeration ENUM_SYMBOL_INFO_DOUBLE:

      • SYMBOL_VOLUME_REAL — Volumen der letzten abgeschlossenen Transaktion;
      • SYMBOL_VOLUMEHIGH_REAL — der maximale Wert des Transaktionsvolumens des aktuellen Tags;
      • SYMBOL_VOLUMELOW_REAL — der minimale Wert des Transaktionsvolumens des aktuellen Tags.

      Verwenden Sie die Funktion SymbolInfoDouble zur Abfrage dieser Eigenschaften.

    9. Hinzugefügt wurde die Eigenschaft MQL_FORWARD zur Enumeration ENUM_MQL_INFO_INTEGER — Flag für das Programm im Vorwärtstest.
    10. Hinzugefügt wurde die Eigenschaft pack( integer_value ) für Strukturen. Das ermöglicht die Angleichung der Felder innerhalb einer Struktur einzurichten, was bei der Arbeit mit einer DLL erforderlich sein kann. Die Werte 1, 2 ,4 ,8 und 16 sind für integer_value
      möglich. Wenn die Eigenschaft nicht definiert ist, wird die Standardausrichtung von 1 Byte verwendet - pack(1).
      .
      Verwendungsbeispiel:
      //+------------------------------------------------------------------+
      //| Standard-Packing                                                 |
      //+------------------------------------------------------------------+
      struct A
        {
         char              a;
         int               b;
        };
      //+------------------------------------------------------------------+
      //| besonderes Packing                                               |
      //+------------------------------------------------------------------+
      struct B pack(4)
        {
         char              a;
         int               b;
        };
      //+------------------------------------------------------------------+
      //| Startfunktion eines Skripts                                      |
      //+------------------------------------------------------------------+
      void OnStart()
        {
         Print("sizeof(A)=",sizeof(A));
         Print("sizeof(B)=",sizeof(B));
        }
      //+------------------------------------------------------------------+
      Ergebnis:
      sizeof(A)=5
      sizeof(B)=8
      Weiter Informationen über die Angleichung innerhalb von Strukturen in MSDN.

    11. Entspanntere Bedingungen für die Auswertung von Enumerationen. Bei einer impliziten Umwandlung ersetzt der Compiler automatisch den Wert der korrekten Enumeration und zeigt eine Warnung an.

      Für folgenden Code:
      enum Main
        {
         PRICE_CLOSE_,
         PRICE_OPEN_
        };
      
      input Main Inp=PRICE_CLOSE;
      //+------------------------------------------------------------------+
      //| Start function                                                   |
      //+------------------------------------------------------------------+
      void OnStart()
        {
        }
      zeigt der Compiler eine Warnung:
      implicit conversion from 'enum ENUM_APPLIED_PRICE' to 'enum Main'
      'Main::PRICE_OPEN_' instead of 'ENUM_APPLIED_PRICE::PRICE_CLOSE' will be used
      Zuvor wurde in diesem Fall der folgende Fehler erzeugt:
      'PRICE_CLOSE' - cannot convert enum
      Der Compiler zeigt den Fehler nur noch an, wenn Enumerationen in den Funktionsparametern falsch verwendet werden.

    12. Die Kompilierung von Template-Funktionen wurde korrigiert. Bei der Verwendung überladener Template-Funktionen wird nun nur noch die notwendige Überladung und nicht mehr alle vorhandenen instanziiert.
      class X {  };
      
      void f(int)  {  }
        
      template<typename T>
      void a(T*) { new T(2); }  // vorher hat der Compiler hier einen Fehler ausgeworfen
        
      template<typename T>
      void a()  { f(0); }
        
        
      void OnInit()  { a<X>(); }  

    13. Optimiert wurde in einigen Fällen der Zugriff auf die Tick-Historie mit den Funktionen CopyTicks*.
    14. Hinzugefügt wurde die neue Funktion TesterStop, die eine vorzeitige Beendigung der Durchläufe von Tests/Optimierungen erlaubt. Wird sie aufgerufen, wird die gesamte Handelsstatistik und die Ergebnisse von OnTester an das Handelsterminal übergeben, genau so, als wenn der Test/Optimierung ganz normal beendet worden wäre.
    15. Hinzugefügt wurde die neue Eigenschaft für nutzerdefinierte Indikatoren #property tester_everytick_calculate. Sie wird im Strategietester verwendet und erlaubt es, die Indikatorberechnung mit jedem Tick zu erzwingen.

    Tester

    1. Jetzt, im Falle von nicht-visuellen Tests/Optimierungen, werden alle verwendeten Indikatoren (standardmäßige und nutzerdefinierte) nur während der Datenabfrage berechnet. Ausgenommen sind Indikatoren, die die Funktionsaufrufe EventChartCustom verwendet und eine Ereignisbehandlung durch OnTimer beinhaltet. Zuvor wurden alle Indikatoren bedingungslos im Strategietester bei jedem neuen Tick berechnet (auch von einigen anderen Instrumenten). Die neuen Eigenschaften beschleunigen deutlich die Tests und die Optimierungen.

      Um die mit jedem Tick erzwungene Indikatorberechnung zu aktivieren, fügen Sie Ihrem Programm #property tester_everytick_calculate hinzu.
      Indikatoren, die mit früheren Compilers kompiliert wurden werden wie bisher berechnet — bei jedem Tick.

    2. Korrigiert wurde die Berechnung der Genauigkeit der Kontowährung beim Testen/Optimieren und Erstellen relevanter Berichte.
    3. Optimiert und Beschleunigt wurde der Arbeitsweise des Strategietesters.
    4. Korrigiert wurden einige Fehler beim Testen und Optimieren.

    MetaEditor

    1. Korrigiert wurde die Suche nach ganzen Wörtern. Bei der Suche wird nun der Unterstrich als normales Zeichen und nicht mehr als Worttrennzeichen gezählt.

    Aktualisierte Dokumentation.

    12345