Was ist neu im MetaTrader 5

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

23 August 2017
MetaTrader 5 iOS Build 1649: Marktstatistik über Finanzinstrumente

Es wurde die Möglichkeit hinzugefügt, sich Marktstatistik über Finanzinstrumente anzusehen, die im Modus der Börsenausführung gehandelt werden. Dafür muss man das Menü des gewünschten Symbols in der Markttiefe öffnen und "Statistik" auswählen.


Das Arbeiten mit Positionen im Reiter "Handel" wurde verbessert. Durch Tippen auf einer Position/Order werden detaillierte Informationen und verfügbare Aktionen angezeigt: Schließen, Modifizieren oder Erhöhen des Volumens einer Position sowie Öffnen des Charts des Symbols der Position.

2 August 2017
MetaTrader 5 Android Build 1642: vereinfachte Anfrage auf Eröffnung eines Realkontos

Der neue MetaTrader 5 für Android bietet nun die Option einer schnellen Eröffnung vorläufiger (preliminary) Konten bei Brokern an. Wählen Sie die Option "Realkonto eröffnen" aus und finden Sie Ihren Broker in der Liste der Server. Fügen Sie der Anfrage ein Ausweisdokument und einen Kontoauszug bei. Ihre Anfrage wird an den Broker weitergeleitet, der ein Realkonto für Sie eröffnen wird und wenn nötig zusätzliche Informationen anfordern kann.

21 Juli 2017
Neues MetaTrader 5 Build 1640: Erstellen und Testen benutzerdefinierter Finanzinstrumente

Terminal

  1. Es wurde die Option hinzugefügt, benutzerdefinierte Finanzinstrumente zu erstellen. Nun können Sie jedes Symbol erstellen, seine Einstellungen konfigurieren, eigene Preisdaten importieren und seine Charts ansehen.

    Erstellung eines benutzerdefinierten Symbols
    Öffnen Sie das Fenster der Verwaltung von Symbolen über das Kontextmenü "Marktübersicht" und klicken Sie auf "Symbol erstellen":


    Ihnen stehen zahlreiche Parameter zur Verfügung. Die Liste der Parameter und deren Beschreibung können Sie sich in der Dokumentation anschauen. Sie können ganz schnell ein eigenes Symbol konfigurieren — kopieren Sie Parameter eines ähnlichen Symbols und modifizieren Sie sie. Dafür wählen Sie ein vorhandenes Symbol im Feld "Kopieren aus" aus.
    Der Name des benutzerdefinierten Symbols darf nicht mit den Namen der vom Broker bereitgestellten Symbolen zusammenfallen. Wenn Sie sich mit dem Server verbinden, auf welchem ein Symbol vorhanden ist, dessen Name mit dem benutzerdefinierten Symbol zusammenfällt, wird das benutzerdefinierte Symbol gelöscht.
    Die Befehle für den Import und Export von Einstellungen sind auch hier verfügbar. Sie können benutzerdefinierte Symbole teilen und diese zwischen Ihren Terminals übertragen. Die Einstellungen werden in Textdateien im JSON-Format exportiert.

    Verwaltung benutzerdefinierter Symbole
    Alle Symbole werden in der separaten Gruppe "Custom" angezeigt. Um ein Symbol zu ändern oder zu löschen, verwenden Sie das Kontexmenü in der Liste:



    Import der Preishistorie
    Sie können Kursdaten aus jeder Textdatei sowie aus Historiedateien des MetaTrader 5 HST und HCC ins eigene Symbol importieren. Wählen Sie ein Symbol aus und gehen Sie zum Reiter "Balken".


    Geben Sie den Pfad zur Datei mit den Daten im Importdialog an und setzen Sie die Einstellungen:

    • Trennzeichen — Trennzeichen für Elemente in einer Textdatei.
    • Auslassung von Spalten und Zeilen — Anzahl der Spalten (von links nach rechts) und Zeilen (von oben nach unten), die man beim Import auslassen muss.
    • Verschiebung — Zeitverschiebung nach Stunden. Diese Option wird beim Importieren von Daten verwendet, die in einer anderen Zeitzone gespeichert wurden.
    • Nur ausgewählte — diese Option ermöglicht es, nur die im Ansichtsfenster ausgewählten Zeilen zu importieren. Die Zeilen können mit der Maus ausgewählt werden, während man die Taste "Ctrl" oder "Shift" drückt und hält.

    Die Datei mit Minutenbalken muss folgendes Format haben: Datum Zeit Open High Low Close Tickvolumen Volumen Spread. Zum Beispiel:
    S2016.06.27    00:01:00    1.10024    1.10136    1.10024    1.10070    18    54000000    44
    2016.06.27    00:02:00    1.10070    1.10165    1.10070    1.10165    32    55575000    46
    2016.06.27    00:03:00    1.10166    1.10166    1.10136    1.10163    13    13000000    46
    2016.06.27    00:04:00    1.10163    1.10204    1.10155    1.10160    23    51000000    41
    Für ein benutzerdefiniertes Symbol können Sie die Daten jedes existierenden Symbols verwenden. Exportieren Sie sie (diese Option wurde in der vorherigen Version der Plattform hinzugefügt), modifizieren sie wenn nötig und importieren sie zurück.
    In MetaTrader 5 wird die Preishistorie als Minutenbalken gespeichert. Alle anderen Zeitrahmen werden basierend auf Minutenbalken erstellt. Beim Import können Sie auch Daten höherer Zeitrahmen verwenden, man muss aber dabei beachten, dass die Grafiken kleinerer Zeitrahmen dabei Lücken haben werden. Beim Import von Stundendaten, zum Beispiel, sehen Sie je einen Balken für jede Stunde auf einem Minutenchart.
    Die Preisdaten benutzerdefinierter Symbole werden in einem separaten Verzeichnis Custom (nicht in den Verzeichnissen für die Daten konkreter Handelsservern) gespeichert:
    C:\Users\[windows account]\AppData\Roaming\MetaQuotes\Terminal\[instance id]\bases\Custom

    Verwendung benutzerdefinierter Symbole
    Die Verwendung eigener Symbole unterscheidet sich kaum von der Verwendung von Symbolen, die vom Broker bereitgestellt werden. Sie werden auch im Markrübersicht-Fenster angezeigt, und man kann sich ihre Charts ansehen, auf welche Indikatoren und analytische Objekte gezogen werden können. Dabei kann man benutzerdefinierte Symbole nicht handeln.

    Testen von Strategien anhand benutzerdefinierter Symbole
    Benutzerdefinierte Symbole kann man für das Testen von Handelsrobotern und Indikatoren im Strategietester verwenden. Dies ermöglicht es, Strategien auch für die Symbole zu optimieren, die momentan beim Broker nicht verfügbar sind. Man muss nur die Historie richtig importieren und die Eigenschaften eines benutzerdefinierten Symbols einstellen.

     

    Der Strategietester verwendet automatisch bei der Berechnung der Margin und des Profits verfügbare Kreuzkurse. Wir haben zum Beispiel das Symbol AUDCAD.custom mit dem Typ der Marginberechnung Forex erstellt, unsere Kontowährung ist USD. Der Tester sucht die benötigten Symbole basierend auf dem Namen des Forex-Symbols wie folgt:
    1.     zuerst werden die Symbole vom Typ AUDUSD.custom (für die Berechnung der Margin) und USDCAD.custom (für die Berechnung des Profits) gesucht
    2.     danach, wenn einer der Symbole nicht vorhanden ist, wird das erste Symbol gesucht, das den benötigten Währungspaaren dem Namen nach entspricht — jeweils AUDUSD und USDCAD. Es wurden, zum Beispiel, AUDUSD.b und NZDUSD.b gefunden, das heißt, die Kurse dieser Symbole werden bei der Berechnung der Margin und des Profits verwendet.

    Für Symbole mit anderen Typen der Marginberechnung (Futures, Stock Exchange) wird ein Währungspaar für die Umrechnung der Währung des Symbols in die Kontowährung benötigt. Wir haben zum Beispiel ein benutzerdefiniertes Symbol erstellt, die Währung des Profits und der Margin ist der britische Pfund (GBP), die Kontowährung ist der Schweizer Franken (CHF). In diesem Fall wird es nach Symbolen für das Testen wie folgt gesucht:
    1. Es wird geprüft, ob ein Symbol vorhanden ist, das dem Währungspaar GBPCHF (GBP vs CHF) entspricht.
    2. Wenn es kein entsprechendes Symbol gibt, wird das erste Symbol gesucht, das dem Währungspaar GBPCHF nach dem Namen entspricht, zum Beispiel, GBPCHF.b oder GBPCHF.def.

    Vergewissern Sie sich beim Testen anhand benutzerdefinierter Symbole, dass alle für Berechnungen notwendigen Währungspaare auf dem Konto vorhanden sind. Andernfalls wird die Berechnung von Finanzergebnissen und Marginanforderungen beim Testen nicht möglich.

    Mehr Möglichkeiten in den nächsten Versionen der Plattform
    Die Arbeit an benutzerdefinierten Symbolen ist noch nicht abgeschlossen, und in den weiteren Versionen der Plattform erscheinen neue Funktionen. Später wird die Option hinzugefügt, Historie in benutzerdefinierte Symbole direkt aus Expert Advisors zu importieren sowie Daten dieser Symbole in Echtzeit zu übertragen.

  2. Es wurde das Filtern von Abschlüssen nach Volumen hinzugefügt.

    Man kann Abschlüsse mit einem Volumen, das kleiner als das angegebene ist, in Time & Sales ausblenden. Auf diese Weise bleiben im Time & Sales Fenster nur große Abschlüsse, die den Markt am meisten beeinflussen.

    Doppelklicken Sie auf die erste Zeile im Time & Sales Fenster, geben Sie das minimale Volumen in Lots an und klicken Sie dann auf irgendeinen anderen Bereich der Markttiefe. Die Abschlüsse werden ausgefiltert, und der aktuelle Wert des Filters erscheint in der Überschrift der Volumen-Spalte.


    Das minimale Volumen kann auch über das Kontextmenü von Time & Sales angegeben werden.

  3. Es wurde die Option hinzugefügt, die Markttiefe an einen aktiven Chart einzubinden. Jedes Mal, wenn Sie zum Chart eines Symbols wechseln, wird das gleiche Symbol in der Markttiefe automatisch aktiviert. Sie brauchen nicht mehr die Markttiefe für jedes neue Symbol zu öffnen.


  4. Die Aktualisierung von Werkzeugleisten nach dem Minimieren und Maximieren des Terminalfensters wurde korrigiert.
  5. Die Generierung der Handelshistorie von Positionen wurde beim Überschneiden der Tickets von Abschlüssen und Positionen korrigiert.

MQL5

  1. Es wurde die Möglichkeit hinzugefügt, MQL5-Programme auf Preishistorie zu profilieren. Dies ermöglicht es, die Performance von Programmen schnell zu überprüfen, ohne auf neue Ticks zu warten.

    Beim Profiling anhand realer Daten wird das Programm auf einem einfachen Chart im Terminal gestartet. Viele Programme, insbesondere Indikatoren, führen Berechnungen erst beim Eintreffen eines neuen Ticks durch (OnTick, OnCalculate). Daraus folgt, dass man für die Einschätzung der Performance auf das Eintreffen neuer Ticks in Echtzeit warten muss. Beim Testen anhand historischer Daten können Sie die richtige Belastung geben. Das Profiling wird im visuellen Modus im Strategietester gestartet, und Sie erhalten sofort viele Ereignisse des Eintreffens eines neuen Ticks.


  2. Es wurde die Unterstützung für Unions hinzugefügt. Eine Union stellt einen besonderen Datentyp dar und setzt sich aus mehreren Variablen zusammen, die sich denselben Speicherbereich teilen. Daraus folgt, dass eine Union die Interpretation einer und derselben Reihenfolge der Bytes auf zwei (oder mehr) verschiedenen Weisen ermöglicht. Die Deklaration einer Union beginnt mit dem Schlüsselwort union.
    union LongDouble
    {
      long   long_value;
      double double_value;
    };
    Im Gegensatz zu Strukturen, gehören verschiedene Komponenten einer Union zu demselben Speicherbereich. In diesem Beispiel wurde die LongDouble Union deklariert, in welcher sich der Wert vom Typ long und der Wert vom Typ double einen Speicherbereich teilen. Man muss sich im Klaren sein, diese Union kann nicht gleichzeitig den gannzahligen Wert long und den reelen Wert double speichern (wie es in Strukturen der Fall ist), denn die Variablen long_value und double_value überschneiden sich (im Speicher). Das MQL5-Programm kann aber jederzeit die Information, die die Union beinhaltet, als einen ganzzahligen (long) oder reellen Wert (double) bearbeiten. Daraus folgt, dass die Union die Interpretation einer und derselben Reihenfolge von Daten auf zwei (oder mehr) verschiedenen Weisen ermöglicht.

    Bei der Deklaration einer Union reserviert der Compiler automatisch einen Speicherbereich, der für das Speichern des größten Typs nach Volumen in der Union der Variablen ausreichend ist. Für den Zugang zu einem Element der Union wird die gleiche Syntax wie für Strukturen verwendet, und zwar der Point-Operator.
    union LongDouble
    {
      long   long_value;
      double double_value;
    };
    //+------------------------------------------------------------------+
    //| Script program start function                                    |
    //+------------------------------------------------------------------+
    void OnStart()
      {
    //---
       LongDouble lb;
    //--- die ungültige Zahl -nan(ind) erhalten und ausgeben
       lb.double_value=MathArcsin(2.0);
       printf("1.  double=%f                integer=%I64X",lb.double_value,lb.long_value);
    //--- die größte normalisierte Zahl (DBL_MAX)
       lb.long_value=0x7FEFFFFFFFFFFFFF;
       printf("2.  double=%.16e  integer=%I64X",lb.double_value,lb.long_value);
    //--- die kleinste positive normalisierte Zahl (DBL_MIN)
       lb.long_value=0x0010000000000000;    
       printf("3.  double=%.16e  integer=%.16I64X",lb.double_value,lb.long_value);
      }
    /*   Das Ergebnis der Ausführung
        1.  double=-nan(ind)                integer=FFF8000000000000
        2.  double=1.7976931348623157e+308  integer=7FEFFFFFFFFFFFFF
        3.  double=2.2250738585072014e-308  integer=0010000000000000
    */

  3. Es wurde die automatische Generierung eines impliziten Copy Operators für Objekte von Strukturen und Klassen hinzugefügt. Nun erstellt der Compiler Copy Operators automatisch, was das Schreiben einfacher Einträge vom Typ b=a für Objekte ermöglicht:
    class Foo
      {
       int               value;
    public:
       string Description(void){return IntegerToString(value);};
       //--- Konstruktor standardmäßig
                         Foo(void){value=-1;};
       //--- Konstruktor mit Parametern   
                         Foo(int v){value=v;};
      };
    //+------------------------------------------------------------------+
    //|   Struktur, die Objekte vom Typ Foo beinhaltet                   |
    //+------------------------------------------------------------------+
    struct MyStruct
      {
       string            s;
       Foo               foo;
      };
    //+------------------------------------------------------------------+
    //| Script program start function                                    |
    //+------------------------------------------------------------------+
    void OnStart()
      {
    //---
       MyStruct a,b;
       Foo an_foo(5);
       a.s="test";
       a.foo=an_foo;
       Print("a.s=",a.s," a.foo.Description()=",a.foo.Description());
       Print("b.s=",b.s," b.foo.Description()=",b.foo.Description());
    //---
       Print("b=a");
       b=a;
    //---
       Print("a.s=",a.s," a.foo.Description()=",a.foo.Description());
       Print("b.s=",b.s," b.foo.Description()=",b.foo.Description());
    /*
       Das Ergebnis der Ausführung;
       a.s=test a.foo.Description()=5
       b.s= b.foo.Description()=-1
       b=a
       a.s=test a.foo.Description()=5
       b.s=test b.foo.Description()=5
    */
      }
    Im impliziten Operator wird das Kopieren von Objekten gliederweise bzw. "memberweise" umgesetzt.

    • Wenn ein Member das Objekt einer anderen Struktur oder Klasse ist, wird der entsprechende Copy Operator dieses Objekts aufgerufen.
    • Wenn ein Member ein Array von Objekten ist, wird das aufnehmende Array vor dem Aufruf des entsprechenden Copy Operators für jedes Element über Array Resize vergrößert oder verkleinert.
    • Wenn ein Member ein Array einfacher Typen ist, wird die Funktion ArrayCopy für das Kopieren verwendet.
    • Wenn ein Member ein Pointer auf ein Objekt ist, wird der Pointer und nicht das Objekt kopiert.

    Wenn nötig können Sie das Verhalten neu definieren und statt eines impliziten Copy Operators eine eigene Variante mithilfe der Überladung erstellen.

  4. Die Speichernutzung beim Abrufen der Preishistorie aus Expert Advisors mithilfe der Copy* Funkion wurde optimiert. Bei der Arbeit mit großen Datenmengen wird der Speicherverbrauch vielfach reduziert.

  5. Nun gibt die TimeToStruct Funktion den Booleschen Wert zurück und ermöglicht es zu überprüfen, ob datetime in MqlDateTime erfolgreich umgewandelt wurde.
  6. Es wurde ein Verbot für die Verwendung der Funktionen FileWriteStruct und FileReadStruct für Strukturen, die Zeilen, dynamische Arrays, Objekte und Pointer hinzugefügt.
  7. Es wurden folgende Statuscodes hinzugefügt:

    • TRADE_RETCODE_REJECT_CANCEL — die Anfrage auf die Aktivierung einer Pending Order abgelehnt, die Order gelöscht
    • TRADE_RETCODE_LONG_ONLY — die Anfrage wurde abgelehnt, weil die Regel "Nur Long-Positionen erlaubt" auf dem Symbol gesetzt wurde
    • TRADE_RETCODE_SHORT_ONLY — die Anfrage wurde abgelehnt, weil die Regel "Nur Short-Positionen erlaubt" auf dem Symbol gesetzt wurde
    • TRADE_RETCODE_CLOSE_ONLY — die Anfrage wurde abgelehnt, weil die Regel "Nur das Schließen existierender Positionen erlaubt" auf dem Symbol gesetzt wurde

  8. Es wurde ein neuer Wert hinzugefügt, den die Funktion SymbolInfoInteger mit dem Parameter SYMBOL_ORDER_MODE zurückgibt. SYMBOL_ORDER_CLOSEBY — Erlaubnis einer Close By Operation - Schließen einer Position durch eine Gegenposition (Close By).
  9. Der Aufzählung ENUM_SYMBOL_INFO_INTEGER wurde die Boolesche Eigenschaft SYMBOL_CUSTOM hinzugefügt. Dies erlaubt es zu erfahren, ob das Symbol benutzerdefiniert ist. Für das Erhalten der Eigenschaft verwenden Sie die Funktion SymbolInfoInteger.
  10. Es wurde die Option hinzugefügt, den Grund der Erstellung einer Order, eines Abschlusses und einer Position zu erfahren.

    Neue Eigenschaften

    • Es wurde die neue Eigenschaft POSITION_REASON für Positionen hinzugefügt, die man mithilfe von PositionGetInteger erhalten kann.
    • Für Abschlüsse wurde die Eigenschaft DEAL_REASON hinzugefügt, die man mithilfe von HistoryDealGetInteger erhalten kann.
    • Es wurde die Eigenschaft ORDER_REASON für Orders hinzugefügt, die man mithilfe von OrderGetInteger und HistoryOrderGetInteger erhalten kann.

    Grund der Erstellung einer Order, eines Abschlusses und einer Position
    Für das Erhalten von Gründen der Erstellung von Transaktionen wurden drei Aufzählungen hinzugefügt:

    ENUM_POSITION_REASON ENUM_DEAL_REASON ENUM_ORDER_REASON Beschreibung des Grunds
    POSITION_REASON_CLIENT DEAL_REASON_CLIENT ORDER_REASON_CLIENT Die Operation wurde infolge der Auslösung einer Order ausgeführt, die einem Desktop-Terminal platziert wurde
    POSITION_REASON_MOBILE DEAL_REASON_MOBILE ORDER_REASON_MOBILE Die Operation wurde infolge der Auslösung einer Order ausgeführt, die in einer mobilen Anwendung platziert wurde
    POSITION_REASON_WEB DEAL_REASON_WEB ORDER_REASON_WEB Die Operation wurde infolge der Auslösung einer Order ausgeführt, die auf der Webplattform platziert wurde
    POSITION_REASON_EXPERT DEAL_REASON_EXPERT ORDER_REASON_EXPERT Die Operation wurde infolge der Auslösung einer Order ausgeführt, die durch ein MQL5-Programm - einen Expert Advisor oder ein Script platziert wurde
    - DEAL_REASON_SL ORDER_REASON_SL Die Operation wurde infolge der Auslösung von Stop Loss durchgeführt
    - DEAL_REASON_TP ORDER_REASON_TP Die Operation wurde infolge der Auslösung von Take Profit durchgeführt
    - DEAL_REASON_SO ORDER_REASON_SO Die Operation wurde infolge des Ereignisses Stop Out ausgeführt
    - DEAL_REASON_ROLLOVER - Der Abschluss wurde infolge eines Rollovers ausgeführt
    - DEAL_REASON_VMARGIN - Der Abschluss wurde infolge der Anrechnung/Abbuchung der Variation Margin ausgeführt
    - DEAL_REASON_SPLIT - Der Abschluss wurde nach einem Split (Preissenkung) einer Aktie oder eines Vermögenswertes ausgeführt, auf welcher(m) es eine offene Position im Moment der Ankündigung des Splits gab

  11. Die Synchronisierung und der Zugriff auf die Tickhistorie wurden optimiert.
  12. Es wurde der Fehler der Rückgabe von Ticks ins statische Array in der CopyTicksRange Funktion behoben. Früher wurden in diesem Fall immer 0 Ticks zurückgegeben.
  13. Zahlreiche Verbesserungen in der Bibliothek der Fuzzy-Logik.

Signale

  1. Das Öffnen eines Signals auf der Webseite wurde korrigiert, wenn kein Handelskonto verbunden ist.

Tester

  1. Die Arbeit mit der Historie von Orders und Abschlüssen wurde optimiert und deutlich beschleunigt. Bei der Arbeit mit großen Datenmengen (Zigtausende Einträge in der Historie und mehr) wird die Geschwindigkeit um das Vielfache erhöht.
  2. Die Berechnung der Haltezeit einer Position im Testbericht wurde korrigiert.

MetaEditor

  1. Die Anzeige statischer Arrays-Members einer Klasse im Debugger wurde korrigiert.
  2. Es wurde die Liste aller Haltepunkte im Programm hinzugefügt, das debuggt wird. Um zur Liste zu wechseln, verwenden Sie das Kontextmenü des Reiters "Debugging":


    Sie können zu jedem Haltepunkt durch einen Doppelklick gelangen.
Die Dokumentation wurde aktualisiert.


8 Juni 2017
MetaTrader 5 iOS build 1605: Eröffnung eines vorläufigen Kontos beim Broker

Der neue MetaTrader 5 für iOS bietet nun die Option einer schnellen Eröffnung vorläufiger (preliminary) Konten bei einem Broker an. Nun reicht es, die Option "Realkonto eröffnen" im Menü auszuwählen und den gewünschten Broker in der Liste der Server anzugeben. Nachdem Sie persönliche Daten ausgefüllt haben, fügen Sie zwei Dokumente bei, die Ihre Identität und Wohnsitz nachweisen, und schicken Sie die Anfrage ab. Ihr Broker wird direkt ein Realkonto für Sie eröffnen. Wenn nötig kann er zusätzliche Informationen anfordern.


Das neue MetaTrader 5 Build 1605 für iOS zeichnet sich auch durch die Optimierung und das neue Design für Mail aus:

  • zusammengehörige E-Mails werden nun in Threads gruppiert und als ein Punkt in der E-Mail-Liste angezeigt
  • es wurde die Vorschau von E-Mail-Anhängen hinzugefügt
  • nun kann man bis zu fünf Anhänge mit einer E-Mail senden (die Datei darf nicht größer als 8 Mb sein).
26 April 2017
MetaTrader 5 build 1596: Zugang zu Preishistorie

Terminal

  1. Es wurde der Zugang zur Balken- und Tick-Historie hinzugefügt. Nun kann man die ganze 1-Minute- und Tick-Historie vom Server nicht nur mithilfe der MQL5 Sprache, sondern auch über das Interface der Handelsplattform herunterladen. Der Zugang zu Preisdaten wird im Rahmen der Vorbereitung auf die Einführung benutzerdefinierter Funktionen von Datenquellen erweitert. In Kürze wird auf der Plattform die Option verfügbar sein, Charts basierend auf eigenen Preisdaten zu zeichnen, synthetische Symbole zu erstellen und offline Charts zu nutzen.

    Um die Daten herunterzuladen, öffnen Sie den Dialog der Verwaltung von Symbolen im Kontextmenü "Marktübersicht":


    Nun sind hier zwei neue Tabs verfügbar: "Balken" und "Ticks". Wählen Sie ein Symbol und einen Zeitraum aus und klicken Sie auf "Abrufen". Die Plattform ruft alle verfügbaren Daten vom Server ab oder zeigt sie sofort an, wenn diese bereits heruntergeladen wurden. Gespeicherte Preisdaten können in eine CSV-Datei exportiert werden.

  2. Die Zeit wird nun bis auf Millisekunden für Positionen, Trades und Orders angezeigt.




  3. Im Dialog "Handel" wurde die Benachrichtigung über die Ablehnung der Ausführung einer Close By Anfrage (Schließen einer Position zur Gegenposition) korrigiert.

MQL5

  1. Die PositionSelect Funktion wurde korrigiert. In einigen Fällen wurde nicht die Position mit dem kleinsten Ticket ausgewählt.
  2. Die Funktionen CopyTicks und CopyTicksRange wurden beim Abruf einer sehr tiefen Tick-Historie korrigiert.

Signals

  1. Es wurde ein Fehler beim Kopieren von Signalen bei der Erhöhung einer bereits vorhandenen Position behoben. Der Fehler trat in einigen Fällen auf Netting-Konten auf.

Tester

  1. Die Bearbeitung von Limit Orders wurde für börsengehandelte Instrumente korrigiert. Die Orders, die zu einem günstigeren Preis als der Marktpreis platziert wurden (der Kaufpreis ist niedriger als der Marktpreis bzw. der Verkaufpreis ist höher als der Marktpreis) werden ohne Slippage ausgeführt. Die Order, die zu einem schlechteren Preis als der Marktpreis oder zum Marktpreis platziert wurden, werden direkt nach dem Platzieren zum Marktpreis im Moment des Platzierens ausgeführt.

Die Dokumentation wurde aktualisiert.

8 April 2017
MetaTrader 5 Android build 1576: Positionen in Handelshistorie

Die Handelshistorie wird jetzt in Form von Positionen dargestellt. Früher wurden nur Orders und Abschlüsse im Reiter "Historie" angezeigt, nun beinhaltet er auch Positionen. Jetzt werden alle Daten einer Transaktion in eine Eintragung zusammengefasst, die folgende Informationen enthält:

  • Zeit des Eröffnens und des Schließens einer Position, die nach dem ersten und letzten Trade bestimmt wird
  • Positionsgröße (wenn ein Teil der Position geschlossen wurde, werden das geschlossene Volumen und das ursprüngliche Volumen angezeigt)
  • Gewichteten Durchschnittspreis für das Eröffnen und Schließen der Position
  • Gesamtfinanzergebnis von Deals, die zur Position gehören

30 März 2017
MetaTrader 5 iOS Build 1547: Handelshistorie in Form von Positionen

Es wurde die Darstellung der Handelshistorie in Form von Positionen hinzugefügt. Früher wurden nur Orders und Abschlüsse im Reiter "Historie" angezeigt, nun beinhaltet er auch Positionen. Die Handelsplattform sammelt Details von Deals, die zu einer Positionen gehören, und gruppiert diese Daten in einer Eintragung. Die Eintragung umfasst:

  • Zeit des Eröffnens und des Schließens einer Position, die nach dem ersten und letzten Trade bestimmt wird
  • Positionsgröße. Wenn ein Teil der Position geschlossen wurde, werden das geschlossene Volumen und das ursprüngliche Volumen angezeigt
  • gewichteten Durchschnittspreis für das Eröffnen und Schließen der Position
  • Gesamtfinanzergebnis von Deals, die zur Position gehören

24 März 2017
Neues MetaTrader 5 Build 1570: Verbesserung des Market-Schaufensters und Erweiterung von Funktionstemplates in MQL5

Terminal

  1. Das Schaufenster des MetaTrader Markets für Applikationen wurde aktualisiert. Nun ist es einfacher Handelsroboter und technische Indikatoren auszuwählen. Wir haben das Design aktualisiert und Produktaufstellung hinzugefügt:

    • Auf der Startseite werden nun populäre Expert Advisors, Indikatoren, Neuheiten und kostenlose Top Apps angezeigt.
    • In den Kategorien Expert Advisors, Indikatoren und Utilitys gibt es jetzt Untergruppen: Grid und Hedging Roboter, Trend und Multicurrency Indikatoren und vieles mehr.



  2. Die Aktualisierung des Kundenterminals und das Arbeiten integrierter Käufe im Market, Signalen und Virtual Hosting bei der Verwendung eines Accounts mit beschränkten Rechten wurde korrigiert.
  3. Es wurde ein Fehler behoben, der in einigen Fällen zu einer falschen Sortierung der Historie von Positionen geführt hatte.
  4. Die Anzeige des Tabs "Aktiva" wurde optimiert und korrigiert.

MQL5

  1. Es wurde die Unterstützung für das Überladen von Funktionstemplates nach Parametern hinzugefügt. Es gibt zum Beispiel ein Funktionstemplate, das den Wert des zweiten Parameters in den ersten Parameter anhand der expliziter Typenumwandlung schreibt. In der MQL5-Programmiersprache ist es verboten, den string Typ in den bool Typ umzuwandeln, wir können das aber selbst tun. Erstellen wir das Überladen eines Funktionstempaltes:
    //+------------------------------------------------------------------+
    //| Template-Funktion                                                |
    //+------------------------------------------------------------------+
    template<typename T1,typename T2>
    string Assign(T1 &var1,T2 var2)
      {
       var1=(T1)var2;
       return(__FUNCSIG__);
      }
    //+------------------------------------------------------------------+
    //| Spezielle Überladung für den Fall bool+string                    |
    //+------------------------------------------------------------------+
    string Assign(bool &var1,string var2)
      {
       var1=(StringCompare(var2,"true",false) || StringToInteger(var2)!=0);
       return(__FUNCSIG__);
      }
    //+------------------------------------------------------------------+
    //| Script program start function                                    |
    //+------------------------------------------------------------------+
    void OnStart()
      {
       int i;
       bool b;
       Print(Assign(i,"test"));
       Print(Assign(b,"test"));
      }
    Als Ergebnis der Ausführung dieses Codes sehen wir, dass für das Paar int+string das Funktionstemplate Assign() verwendet wurde, und dass beim zweiten Aufruf für das Paar bool+string bereits die überladene Version verwendet wurde.
    string Assign<int,string>(int&,string)
    string Assign(bool&,string)

  2. Es wurde die Option der expliziten Spezialisierung von Funktionstemplates hinzugefügt. Dafür müssen die Parameter der Typisierung vor der Liste der Aufrufparameter angegeben werden:
    template<typename T>
    T Func() { return (T)0; }
      
      
    void OnInit()
      {
       Func<double>();   // explizite Spezialisierung von Funktionstemplates
      }
    Auf diese Weise erfolgt die Spezialisierung nicht durch die Aufrufparameter, sondern durch eine explizite Angabe der Typen.

  3. Die Anzeige benutzerdefinierter Indikatoren mit dem DRAW_ZIGZAG Zeichnungstypwurde optimiert.
  4. Zur Aufzählung der Abschlusstypen ENUM_DEAL_TYPE wurden neue Werte hinzugefügt:

    • DEAL_DIVIDEND — Anrechnung der Dividende.
    • DEAL_DIVIDEND_FRANKED — Anrechnung von "franked dividends" (nicht besteuert, das Unternehmen bezahlt die Steuer für den Kunden).
    • DEAL_TAX — Steuerabzug.

  5. Die Anzeige benutzerdefinierter Indikatoren mit dem DRAW_FILLING Zeichnungstyp wurde korrigiert. Wenn die Koordinaten der oberen und der unteren Linien zusammenfallen, wird eine dünne Linie gezeichnet.
  6. Die Berechnung der Koordinaten des Objekts "Bitmap Label" wurde beim Setzen des Parameters CHART_SHOW auf false korrigiert. Dieser Parameter wird durch die ChartSetInteger Funktion gesetzt und ermöglicht es, alle Elemente des Preischarts für die Erstellung eines eigenes Interfaces des Programms auszublenden.
  7. Es wurde der Fehler der Codierung von 24-Bit-Bildern behoben, wenn diese in die Ressourcen einer MQL5-Applikation platziert werden.
  8. Es wurde der Fehler der Ausgabe von Strukturen mithilfe der ArrayPrint Funktion behoben.
  9. Die MQL5 Standardbibliotheken wurden aktualisiert.

MetaEditor

  1. Es wurde eine Übersetzung der Benutzeroberfläche ins Malaiische hinzugefügt.

Signals

  1. Das Öffnen der Seite eines Signals im Terminal infolge des Klickens auf den Link auf der MQL5.community Webseite, wenn kein Handelskonto verbunden ist, wurde korrigiert.

Tester

  1. Es wurden Fehler bei der Arbeit der CopyTicks Funktion im Strategietester behoben.
  2. Die Sortierung von Trades vom Typ "Auszahlung" (Withdrawal) wurde bei der Generierung eines Testberichts korrigiert.
  3. Die Modifizierung von Pending Orders wurde korrigiert.

Hosting

  1. Die Anzeige von Virtual Hosting Wizard wurde auf Bildschirmen mit ultra hohen Auflösung (4K) wurde korrigiert.

Die Dokumentation wurde aktualisiert.

17 Februar 2017
Neues MetaTrader 5 Build 1545: Schneller Wechsel zwischen Fenstern und Änderung von Preisen mit der Maus

Terminal

  1. Nun kann man zwischen den Fenstern "Werkzeuge" und "Strategietester" schnell wechseln.



  2. Es wurde die Option hinzugefügt, Preise und Ordervolumen mit dem Mausrad zu ändern:




  3. Beim Übergang zum Download von Mobilterminals wird jetzt die Liste Ihrer Handelskonten gespeichert. Bei der weiteren Installation von MetaTrader 5 für iPhone oder Android auf einem Mobilgerät wird Ihnen eine fertige Liste der Server angezeigt. Sie können aktuelle Handelskonten schnell mit dem Terminal verbinden. Der Server des aktuell verbundenen Kontos wird als Erster im Mobilterminal angezeigt.




  4. Die Belastung auf das Terminal, die durch unsichtbare (minimierte) Charts und Objekte entstand, wurde erheblich reduziert.
  5. Es wurde ein Fehler behoben, der in einigen Fällen zu einer falschen Auslösung von Trailing Stops geführt hatte.
  6. Es wurde der Fehler der Filterung nach Symbol in der Handelshistorie behoben.
  7. Es wurde der Anzeigefehler des Feldes "Typ" in der Historie behoben.
  8. Es wurde ein Fehler bei der Darstellung der Handelshistorie in Form von Positionen behoben.
  9. Die Anzeige benutzerdefinierter Indikatoren mit den Zeichnungstypen DRAW_COLOR_LINE, DRAW_COLOR_ZIGZAG und DRAW_COLOR_SECTION unter Verwendung der Farbe CLR_NONE wurde korrigiert.

MQL5

  1. Es wurde ein Fehler bei der Typisierung von Vorlagen durch einen konstanten Pointer behoben.
  2. Die Kontrolle über den Zugang zu private und protected Mitgliedern einer Klasse wurde korrigiert.

Tester

  1. Die Auslösung von Limit Orders auf Börsensymbolen wurde korrigiert, wenn der Auslösungspreis der Order besser als der aktuelle Markt ist.
  2. Die Begrenzung für das Testen benutzerdefinierter Indikatoren mit über 64 Eingabeparametern wurde aufgehoben.
  3.  Es wurde eine Übersetzung der Benutzeroberfläche in Hindi hinzugefügt.

Die Dokumentation wurde aktualisiert.

9 Februar 2017
Neues MetaTrader 5 iOS Build 1509: Anmelden bei MQL5.com mit Facebook
  • Es wurde die Möglichkeit hinzugefügt, sich bei MQL5.com mit Facebook zu registrieren oder einzuloggen. Jeder Nutzer dieses sozialen Netzwerkes kann jetzt in wenigen Klicks Zugang zu Chats und allen Services für MetaTrader 5 bekommen.

  • Zahlreiche Fehlerbehebungen und Verbesserungen.
27 Januar 2017
MetaTrader 5 Build 1525: Darstellung der Historie als Positionen und Verbesserung des Strategietesters

Terminal

  1. Es wurde die Darstellung der Handelshistorie in Form von Positionen hinzugefügt. Das Terminal sammelt Daten von Deals, die auf eine Position bezogen sind (Eröffnung, zusätzliches Volumen, Teilschließung und komplette Schließung) und gruppiert diese Daten in einer Eintragung, die die folgenden Details enthält:
    • Eröffnungs- und Schlusszeit der Position, die Zeit wird nach dem ersten und letzten Trade festgelegt Positionsgröße.
    • Positionsgröße. Wenn ein Teil der Position geschlossen wurde, werden das geschlossene Volumen und das ursprüngliche Volumen angezeigt
    • gewichteten Durchschnittspreis für das Eröffnen und Schließen der Position
    • Gesamtfinanzergebnis von Deals, die zur Position gehören




    Für Konten mit der Hedge-Option ist solche Darstellung von Positionen ähnlich der Kontohistorie in MetaTrader 4.



  2.   Es wurde ein neues Befehl für die Visualisierung von Deals auf dem Chart nach einem bestimmten Symbol hinzugefügt.

    • Um alle Abschlüsse für die gewählte Position/Symbol anzuzeigen, klicken Sie auf "[Symbolname] Deals hinzufügen". Die entsprechenden Deals werden auf allen offenen Charts des ausgewählten Symbols angezeigt. Wenn keine offenen Charts vorhanden sind, wird ein neuer Chart geöffnet.
    • Um alle Abschlüsse für alle Symbole aus der Historie anzuzeigen, klicken Sie auf "Alle Deals hinzufügen". Auf allen offenen Charts werden alle Deals für entsprechende Symbole angezeigt.




  3. Es wurde die Anzeige des internationalen Namens eines Finanzinstruments in der Kontraktspezifikation hinzugefügt sowie die Suchmöglichkeit nach dem internationalen Namen im Dialog der Verwaltung von Symbolen.




  4. Es wurde die Möglichkeit hinzugefügt, die Auflösung des Terminalfensters schnell zu setzen. Diese Funktion wird für diejenigen praktisch sein, die Videos aufnehmen. Im Menü stehen Ihnen die populärsten Auflösungen für die Veröffentlichung von Videos in verschiedenen Videoservices wie YouTube zur Verfügung.



  5. Vorlagen und Profile von Charts wurden aus [Terminal Data Folder\Profiles] nach [Terminal Data Folder\MQL5\Profiles] übertragen. Nun kann man Vorlagen ins MQL5 Storage ganz einfach hinzufügen und auf diese von beliebigen PCs zugreifen.

MQL5

  1. Es wurde die Unterstützung für Ressourcenvariablen hinzugefügt. Die Verwendung solcher Variablen kann die Entwicklung einiger Programme wesentlich vereinfachen. Sie können zum Beispiel, einen OpenCL-Code in einer separaten CL-Datei schreiben und dann diese Datei als String den Ressourcen ihres MQL5-Programms hinzufügen. Früher hat man einen solchen Code als eine große String-Variable beschreiben müssen.

    Deklaration der Ressourcenvariablen
    #resource path_to_resource_file als type_of_resource_variable name_of_resource_variable

    Eigenschaften
    • Die Kodierung von String-Dateien wird automatisch nach BOM (Überschrift) bestimmt. Wenn BOM fehlt, wird die Kodierung nach dem Inhalt ermittelt. Es werden die Kodierungen ANSI, UTF-8 und UTF-16 unterstützt. Alle Strings werden in Unicode umgewandelt.
    • Die Daten einer solchen Ressource können nur über eine Variable adressiert werden. Die automatische Adressierung über "::<resource name>" funktioniert nicht.
    • Der spezielle Typ der Ressourcenvariablen bitmap zeigt dem Compiler, dass die Ressource eine grafische Abbildung darstellt. In diesem Fall bekommt die Ressourcenvariable den Typ uint.
    • Bei der Verwendung einer 24-Bit-Abbildung wird die Komponente des Alpha-Kanals für alle seine Pixel auf 255 gesetzt.
    • Bei der Verwendung einer 32-Bit-Abbildung ohne Alpha-Kanal wird die Komponente des Alpha-Kanals für alle seine Pixel auch auf 255 gesetzt.
    • Bei der Verwendung einer 32-Bit-Abbildung mit dem Alpha-Kanal werden die Pixel nicht verarbeitet.
    • Die Array-Ressourcenvariable vom Typ bitmap kann zwei Dimensionen haben. In diesem Fall wird die Array-Größe als [Bildhöhe][Bildbreite] gesetzt.
    • Wenn das Arrays eindimensional ist, wird die Anzahl der Elemente als Bildhöhe*Bildbreite definiert.
    • Wenn die Dateigröße der Ressource keine Aliquote zur Größe des Elements des Arrays ist, werden die restlichen Daten abgeschnitten. Z.B. wenn die Dateigröße 14 Bytes beträgt, beläuft sich die Anzahl der Elemente für ein int Array auf 3, und die restlichen 2 Bytes (14 - sizeof(int)*3) werden abgeschnitten.
    Anwendungsbespiele
    #resource "data.bin" as int ExtData[]             // Deklaration des eindimensionalen Arrays vom nummerischen Typ, das Daten aus der Datei data.bin enthält
    #resource "data.bin" as MqlRates ExtData[]        // Deklaration des Arrays einfacher Strukturen, das Daten aus der Datei data.bin enthält
    
    #resource "data.txt" as string ExtCode            // Deklaration des Strings, der Daten aus der Datei data.txt enthält
    #resource "data.txt" as string ExtCode[]          // Deklaration eines Strings-Arrays, das Daten aus der Datei data.txt enthält
    
    #resource "image.bmp" as bitmap ExtBitmap[]       // Deklaration eines eindimensionalen Arrays, das die Bitmap aus der BMP Datei enthält, Arraygröße = height * width
    #resource "image.bmp" as bitmap ExtBitmap2[][]    // Deklaration des zweidimensionalen Arrays, das die Bitmap aus der BMP Datei enthält, Arraygröße [height][width]

  2. Es wurde die Eigenschaft CHART_SHOW für die Deaktivierung der Anzeige eines Charts hinzugefügt. Für das Erhalten und die Installation der Eigenschaft werden die Funktionen ChartGetInteger und ChartSetInteger verwendet.

    Wenn false, wird die Zeichnung jeglicher Attribute eines Preischarts deaktiviert und alle Randabstände des Charts werden entfernt: Zeit- und Preisskala, die Leiste der schnellen Navigation, Markierungen von Ereignissen im Kalender, Zeichen von Trades, Tooltips von Indikatoren und Balken, Unterfenster von Indikatoren, Histogramme der Volumina usw.
    Die Deaktivierung der Zeichnung stellt eine ideale Lösung für die Erstellung eines eigenen Interfaces unter Verwendung grafischer Ressourcen.

    Grafische Objekte werden unabhängig von dem gesetzten Wert der CHART_SHOW Eigenschaft gezeichnet.

  3. Es wurde die Eigenschaft CHART_KEYBOARD_CONTROL für die Aktivierung/Deaktivierung der Steuerung eines Charts mit der Tastatur ("Home", "End", "PageUp", "+", "-", "Pfeil nach oben" usw.) hinzugefügt. Wenn man CHART_KEYBOARD_CONTROL auf false setzt, kann man das Scrollen und die Skallierung des Charts deaktivieren, dabei kann man aber die Ereignisse des Drückens auf diese Tasten in OnChartEvent erhalten.

    Für das Erhalten und Setzen der Eigenschaft werden die Funktionen ChartGetInteger und ChartSetInteger verwendet.

  4. Es wurden neue Funktionen und Eigenschaften für Operationen mit OpenCL hinzugefügt.

    Neue Eigenschaften für das Arbeiten mit dem Speicher
    Mit CLGetInfoIntegrer kann man nun 4 neue Eigenschaften erhalten:
    • CL_DEVICE_MAX_WORK_GROUP_SIZE — die Gesamtzahl der lokalen Arbeitsgruppen, die für ein OpenCL Gerät verfügbar sind.
    • CL_KERNEL_WORK_GROUP_SIZE — die Gesamtzahl der lokalen Arbeitsgruppen, die für ein OpenCL Programm verfügbar sind.
    • CL_KERNEL_LOCAL_MEM_SIZE — die Größe des lokalen Speichers in Bytes, den ein OpenCL Programm für alle parallelen Auufgaben in einer Gruppe verwendet. Verwenden Sie CL_DEVICE_LOCAL_MEM_SIZE, um das verfügbare Maximum zu erhalten.
    • CL_KERNEL_PRIVATE_MEM_SIZE — minimale Größe des privaten Speichers in Bytes, die von jeder Aufgabe im Kernel des OpenCL Programms genutzt wird.

    bool CLExecutionStatus(int kernel)
    Gibt den Ausführungsstatus eines OpenCL Programms zurück. Als Parameter wird das Handle auf Kernel des OpenCL Programms übergeben.

    bool CLSetKernelArgMemLocal(int kernel_handle,int arg_index,ulong local_mem_size)
    Setzt den Puffer als Argument der kernel-Funktion. Als Parameter werden das Handle des Kernels des OpenCL Programms, Nummer des Arguments der OpenCL-Funktion und die Puffergröße übergeben.

  5. Es wurde der Antwortcode TRADE_RETCODE_LIMIT_POSITIONS hinzugefügt. Die Anzahl offener Positionen, die man gleichzeitig auf einem Konto haben kann, kann durch die Servereinstellungen begrenzt werden. Wenn die Grenze erreicht ist, gibt der Server beim Versuch, eine Order zu platzieren, den Fehler TRADE_RETCODE_LIMIT_POSITIONS zurück. Die Begrenzung funktioniert unterschiedlich je nach dem Typ der Verrechnung von Positionen:

    • Im Netting-Modus wird die Anzahl offener Positionen berücksichtigt. Beim Erreichen der Grenze erlaubt die Plattform keine neuen Orders zu platzieren, infolge deren sich die Anzahl der offenen Positionen erhöhen kann. Die Plattform erlaubt praktisch Orders nur für die Symbole zu platzieren, auf welchen es bereits offene Positionen gibt. Die aktuellen Pending Orders werden nicht berücksichtigt, weil deren Ausführung zur Änderung der aktuellen Positionen und nicht zur Erhöhung ihrer Anzahl führen kann.
    • Im Hedging-Modus werden neben den offenen Positionen auch platzierte Pending Orders berücksichtigt, denn ihre Auslösung immer zur Eröffnung einer offenen Position führt. Wenn die Grenze erreicht ist, erlaubt die Plattform keine Marktorders zur Eröffnung von Positionen sowie keine Pendig Orders zu eröffnen.

  6. Es wurde ein Fehler behoben, der in einigen Fallen zum Auslassen von Ticks in der Tick-Historie führte.
  7. Es wurden Fehler der indirekten Typisierung von Vorlagen behoben.
  8. Die Bibliothek der mathematischen Statistik wurde aktualisiert.
  9. Es wurde die Funktion TranslateKey hinzugefügt, die ein Unicode-Zeichen nach dem virtuellen Code der Taste unter Berücksichtigung der aktuellen Eingabesprache und des Status der Steuerungstasten zurückgibt. Die Funktion verwendet ToUnicodeEx für die Umwandlung der vom Nutzer gedrückten Tasten in Unicode-Zeichen.
    void OnChartEvent(const int id,const long& lparam,const double& dparam,const string& sparam)
      {
       if(id==CHARTEVENT_KEYDOWN)
         {
          short sym=TranslateKey((int)lparam);
          //--- wenn das eingegebene Zeichen erfolgreich in Unicode umgewandelt wurde      if(sym>0)
             Print(sym,"'",ShortToString(sym),"'");
          else
             Print("Error in TranslateKey for key=",lparam);
         }
      }

Market

  1. Das Öffnen der Produktseite beim Herunterladen einer Demoversion korrigiert.

Tester

  1. Nun werden Optimierungsergebnisse nach der Spalte "Ergebnisse" automatisch sortiert.
  2. Es wurde die Option der automatischen Umschaltung auf Ergebnisse nach dem Beenden der Optimierung hinzugefügt.
  3. Der Strategietester bleibt nun im Optimierungsmodus nach dem Start eines einzelnen Tests. Früher wechselte der Strategietester zum Modus des Einzeltests, wenn ein Einzeltest aus dem Ergebnisse-Reiter gestartet wurde. Für die erneute Optimierung musste man früher diese in den Einstellungen wieder starten.
  4. Jetzt kann man Sets von Parametern nicht nur als set-Dateien, sondern auch als Einstellungen des lokalen Strategietesters mit einem einfachen Zugriff über das Kontextmenü speichern.




  5. Es wurde eine Übersetzung ins Mongolische, Ungarische, Rumänische und Urdu hinzugefügt.

MetaEditor

  1. Es wurde die Möglichkeit hinzugefügt, die Reihenfolge betrachtender Ausdrücke im Debug-Fenster zu ändern. Bewegen Sie einfach den Ausdruck zur gewünschten Position.




  2. Es wurde der Fehler der Erkennung der Kodierung von Quelldateien behoben.
  3. Die Suche nach Dateien wurde in der UTF-8-Kodierung korrigiert.
  4. Es wurde der Fehler der Hervorhebung eines Textes mit Tabulatoren mit der Maus behoben.
  5. Es wurde eine Übersetzung ins Ungarische und Rumänische hinzugefügt.

Die Dokumentation wurde aktualisiert.

18 Januar 2017
Neues MetaTrader 5 Android Build 1422: Filterung und Sortierung von Trades
  • In den Reitern "Handel" und "Historie" gibt es nun die Option, alle Operationen nach Symbol (Finanzinstrument), Order und Eröffnungs-/Schlusszeit zu sortieren. Neben der Sortierung kann man Trades im Historie-Tab nach Symbol filtern.

  • Das Arbeiten mit Charts im Mehrfenster-Modus wurde optimiert. Das verbesserte Menü erlaubt es Ihnen, neue Fenster zu erstellen oder die alten zu löschen sowie Fenster neu anzuordnen und die gewünschte Anordnung auszuwählen (vertikal, horizontal oder nebeneinander).

9 Dezember 2016
MetaTrader 5 Build 1495: Verbesserungen in MQL5 für die benutzerdefinierte Grafik

MQL5

  1. Es wurde die Funktion CopyTicksRange hinzugefügt.
  2. Es wurden verbesserte Glättungsfunktionen der CCanvas Klasse hinzugefügt:
  3. Es wurde die Beschreibung der grafischen Bibliothek der MQL5-Dokumentation hinzugefügt, mit welcher Histogramme, Verteilungen und lineare Grafiken direkt auf Preischarts schnell gezeichnet werden können.
  4. Es wurden Statusbezeichnungen für Systemtasten der Liste der Konstanten Status des Kundenterminals hinzugefügt. Der Aufruf von TerminalInfoInteger(TERMINAL_KEYSTATE_XXX) gibt den gleichen Code des Status der Taste zurück, wie die Funktion GetKeyState() in MSDN.
  5. Die Umwandlung des Typs string in den Typ bool wird nicht mehr unterstützt. Für die Überprüfung von Strings muss eine explizite Bedingung geschrieben werden. In der neuen Version wird z.B. für den folgenden Code ein Fehler der Kompilation zurückgegeben:
    string str;
    ...
    if(str)                        // Kompilierungsfehler "Cannot convert type 'string' to 'bool'" (in den vorherigen Builds trat der Fehler nicht auf)
       Print("str is true");
    Man muss eine explizite Bedingung schreiben:
    string str;
    ...
    
    //--- überprüfen, ob der String initialisiert wurde
    if(str!=NULL)
       Print("str is true");
    
    oder
    
    //--- überprüfen, ob der Wert des Strings "true" ist
    if(StringCompare(str,"true",false))
       Print("str is true");
    
    oder
    
    //--- überprüfen, ob der String eine Zahl ist und nicht gleich Null ist
    if((int)str!=0)
       Print("str is true");
Verbesserungen anhand Crash-Logs.
2 Dezember 2016
MetaTrader 5 Webplattform: Zwei-Faktor-Authentifizierung und Passwortänderung
  • Für einen zusätzlichen Schutz von Handelskonten wurde eine Zwei-Faktor-Authentifizierung mit Einmalpasswörtern Um die Zwei-Faktor-Authentifizierung zu aktivieren, starten Sie die MetaTrader 5 App. Loggen Sie sich ein und öffnen Sie den OTP-Generator (One-time password) im Fenster "Einstellungen". Verknüpfen Sie alle Ihren Handelskonten mit dem OTP-Generator — für jedes Konto wird ein Einmalpasswort aus sechs Ziffern automatisch generiert. Zur mobilen Webplattform 

  • Es wurde die Option hinzugefügt, Passwort und Investorpasswort zu ändern. Nutzen Sie diese Möglichkeit, um eine einfache persönliche Kennung zu erstellen, welche Sie sich gut merken können.
  • Zu den weiteren Neuerungen gehört die automatische Generierung von Demo-Konten. Nun können Sie MetaTrader 5 Web in jedem Browser öffnen uns sofort Devisen, Aktien und Futures handeln.
24 November 2016
Neues MetaTrader 5 Build 1485: zusätzliche Testmodi und Charts in der Standardbibliothek

Terminal

  1. Die Reihenfolge der Anzeige von Eintragungen im Journal des Terminals und MetaEditors geändert. Früher wurden am Anfang des Journals die neuesten Einträge angezeigt, und jetzt - die ältesten. Die umgekehrte Reihenfolge ist beim Lesen des Journals geläufiger und benutzerfreundlicher.



    Darüber hinaus kann man jetzt die Spalten "Zeit" und "Quelle" über das Kontextmenü ausblenden.

  2. Im Hedging-Modus wird nun das Ticket einer geschlossenen Position für Orders und Geschäfte in der Handelshistorie angezeigt. Dies erleichtert die Suche nach zusammenhängende Eröffnungs- und Schlusstransaktionen.



  3. Es wurde ein Fehler behoben, der zum Kopieren von SL/TP Ebenen aus einer vorhandenen Position in eine neue Position auf dem gleichen Symbol führte. Der Fehler trat bei der Verwendung von Funktionen des Ein-Klick-Handels (z.B., Panel auf dem Chart, Marktübersicht-Fenster) im Hedging-Modus auf.
  4. Die Anzeige von Objekten "Pfeile" wurde auf Bildschirmen mir hoher Auflösung korrigiert (4К).

MQL5

  1. Es wurde die Funktion ArrayPrint für die Ausgabe von Arrays einfacher Typen und Strukturen ins Journal hinzugefügt.
    void  ArrayPrint(
       const void&   array[],             // Output Array
       uint          digits=_Digits,      // Anzahl von Dezimalstellen nach dem Komma
       const string  separator=NULL,      // Trennzeichen zwischen den Werten der Felder einer Struktur
       ulong         start=0,             // Index des ersten ausgegebenen Elements
       ulong         count=WHOLE_ARRAY,   // Anzahl der ausgegebenen Elemente
       ulong         flags=ARRAYPRINT_HEADER|ARRAYPRINT_INDEX|ARRAYPRINT_LIMIT|ARRAYPRINT_ALIGN    
       );
    ArrayPrint gibt nicht alle Felder eines Struktur-Arrays im Journal aus – Felder-Arrays und Pointer-Arrays von Objekten werden ausgelassen. Für die Ausgabe aller Felder einer solcher Struktur wird eine eigene Funktion mit der gewünschten Formatierung benötigt..
    //--- ibt die Werte der letzten zehn Balken aus 
       MqlRates rates[];
       if(CopyRates(_Symbol,_Period,1,10,rates))
         {
          ArrayPrint(rates);
          Print("Überprüfung\n[time]\t[open]\t[high]\t[low]\t[close]\t[tick_volume]\t[spread]\t[real_volume]");
          for(int i=0;i<10;i++)
            {
             PrintFormat("[%d]\t%s\t%G\t%G\t%G\t%G\t%G\t%G\t%I64d\t",i,
             TimeToString(rates[i].time,TIME_DATE|TIME_MINUTES|TIME_SECONDS),
             rates[i].open,rates[i].high,rates[i].low,rates[i].close,
             rates[i].tick_volume,rates[i].spread,rates[i].real_volume);
            }
         }
       else
          PrintFormat("CopyRates failed, error code=%d",GetLastError());
    //--- Beispiel für den Output
    /*
                        [time]  [open]  [high]   [low] [close] [tick_volume] [spread] [real_volume]
       [0] 2016.11.09 04:00:00 1.11242 1.12314 1.11187 1.12295         18110       10   17300175000
       [1] 2016.11.09 05:00:00 1.12296 1.12825 1.11930 1.12747         17829        9   15632176000
       [2] 2016.11.09 06:00:00 1.12747 1.12991 1.12586 1.12744         13458       10    9593492000
       [3] 2016.11.09 07:00:00 1.12743 1.12763 1.11988 1.12194         15362        9   12352245000
       [4] 2016.11.09 08:00:00 1.12194 1.12262 1.11058 1.11172         16833        9   12961333000
       [5] 2016.11.09 09:00:00 1.11173 1.11348 1.10803 1.11052         15933        8   10720384000
       [6] 2016.11.09 10:00:00 1.11052 1.11065 1.10289 1.10528         11888        9    8084811000
       [7] 2016.11.09 11:00:00 1.10512 1.11041 1.10472 1.10915          7284       10    5087113000
       [8] 2016.11.09 12:00:00 1.10915 1.11079 1.10892 1.10904          8710        9    6769629000
       [9] 2016.11.09 13:00:00 1.10904 1.10913 1.10223 1.10263          8956        7    7192138000
       Überprüfung
       [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume]
       [0] 2016.11.09 04:00:00 1.11242 1.12314 1.11187 1.12295 18110 10 17300175000 
       [1] 2016.11.09 05:00:00 1.12296 1.12825 1.1193 1.12747 17829 9 15632176000 
       [2] 2016.11.09 06:00:00 1.12747 1.12991 1.12586 1.12744 13458 10 9593492000 
       [3] 2016.11.09 07:00:00 1.12743 1.12763 1.11988 1.12194 15362 9 12352245000 
       [4] 2016.11.09 08:00:00 1.12194 1.12262 1.11058 1.11172 16833 9 12961333000 
       [5] 2016.11.09 09:00:00 1.11173 1.11348 1.10803 1.11052 15933 8 10720384000 
       [6] 2016.11.09 10:00:00 1.11052 1.11065 1.10289 1.10528 11888 9 8084811000 
       [7] 2016.11.09 11:00:00 1.10512 1.11041 1.10472 1.10915 7284 10 5087113000 
       [8] 2016.11.09 12:00:00 1.10915 1.11079 1.10892 1.10904 8710 9 6769629000 
       [9] 2016.11.09 13:00:00 1.10904 1.10913 1.10223 1.10263 8956 7 7192138000 
    */

  2. Es wurde ein Fehler in der Addition von Zeilen vom Typ S1=S2+S1 behoben.
  3. Das Verhalten der Funktion ArrayResize wurde geändert. Bei der Übergabe des Wertes -1 als reserve_size Parameter macht die Funktion den unbenutzten (reservierten) Speicher frei, wenn die Array-Größe dabei nicht erhöht wird. Die Setzung der neuen Array-Größe auf 0 mit dem Wert reserve_size=-1 ist gleich dem Aufruf von ArrayFree. Das neue Verhalten lässt die Verwendung des Speichers in MQL5-Programmen optimieren.
    void OnStart()
      {
       int arr[];
    //--- wie viel Speicherplatz ursprünglich verwendet wurde 
       Print("Array size:",ArraySize(arr)," Memory used:",MQLInfoInteger(MQL_MEMORY_USED)," MB");
    //--- wie viel Speicherplatz für das Array mit der Größe 1 verwendet wurde, aber mit Reserve
       ArrayResize(arr,1,1024*1024);
       Print("Array size:",ArraySize(arr)," Memory used:",MQLInfoInteger(MQL_MEMORY_USED)," MB");
    //--- nach der Vergrößerung des Arrays wird der Speicherplatz dank der Reserve nicht geändert
       ArrayResize(arr,1024*512,1024*1024);
       Print("Array size:",ArraySize(arr)," Memory used:",MQLInfoInteger(MQL_MEMORY_USED)," MB");
    //--- nach der Reduzierung des Arrays verändert sich die Speichergröße nicht
       ArrayResize(arr,1);
       Print("Array size:",ArraySize(arr)," Memory used:",MQLInfoInteger(MQL_MEMORY_USED)," MB");
    //--- der vom Array nicht genutzte Speicherplatz wird durch das Löschen der Reserve frei
       ArrayResize(arr,1,-1);
       Print("Array size:",ArraySize(arr)," Memory used:",MQLInfoInteger(MQL_MEMORY_USED)," MB");
      }

  4. Der Standardbibliothek wurden Funktionen für das Zeichnen von Charts hinzugefügt. Um diese zu nutzen, fügen Sie die Datei MQL5\Include\Graphics\Graphic.mqh in Ihr Projekt hinzu.
    Zeichnen eines Charts aus 3 Datenreihen mithilfe von GraphPlot:
    #include <Graphics/Graphic.mqh>
    
    double Func1(double x) { return MathPow(x,2); }
    double Func2(double x) { return MathPow(x,3); }
    double Func3(double x) { return MathPow(x,4); }
    
    void OnStart()
      {
       GraphPlot(Func1,Func2,Func3,-2,2,0.05,CURVE_LINES);
      }
    
    Das Ergebnis:


    Zeichnen eines Charts basierend auf einem Datenarray mithilfe von GraphPlot:
    #include <Math/Stat/Binomial.mqh>
    #include <Graphics/Graphic.mqh>
    
    void OnStart(void)
      {
       double    vars[101];
       double    results[101];
       const int N=2000;
    //---  
       MathSequence(0,N,20,vars);
       MathProbabilityDensityBinomial(vars,N,M_PI/10,true,results);
       ArrayPrint(results,4);
       GraphPlot(results);
    //---
      }
    Das Ergebnis:



  5. Die Funktionen für das Arbeiten mit mathematischer Statistik in der Standardbibliothek wurden aktualisiert. Es wurde eine große Überprüfung der Qualität und Genauigkeit aller Funktionen sowohl in der MQL5-Version, als auch in der Ausgangssprache R durchgeführt. Für die Kontrolle der Genauigkeit und der Geschwindigkeit werden zusammen mit der statischen Bibliothek Unit-Test verteilt. Diese sind im Verzeichnis \MQL5\Scripts\UnitTests\Stat verfügbar.

    • TestStat.mq5 — Testskript für die Überprüfung von Berechnungsergebnissen
    • TestPrecision.mq5 — testet die Genauigkeit von Berechnungen
    • TestBenchmark.mq5 — Test mit der Leistungsmessung

Tester

  1. Die Einstellungen der Verzögerung bei der Ausführung von Handelsaufträgen wurden beim Testen erweitert. Nun kann man einen Handelsroboter unter noch vielfältigeren Bedingungen testen: von einem idealen Fall ohne Verzögerungen bis zu einer beliebigen Verzögerung, gesetzt vom Nutzer.


    Früher war nur der Modus zufälliger Verzögerungen verfügbar.

  2. Es wurde der Fehler der Generierung des Tickvolumens von Balken beim Testen im Modus OHLC M1 behoben.
  3. ]Die Eintragung der Eröffnungszeit von Ordern und Positionen wurde genau bis auf Millisekunden beim Handel im Hedging-Modus korrigiert.
  4. Es wurde der Fehler "old tick" (Tick veraltet) behoben, der bei Mehrwährungstests oder Multitimeframe-Tests im Modus anhand echter Ticks auftrat.
  5. Die Funktion CopyTicks wurde beschleunigt, wenn die abgefragten Ticks aus einer Datenbank auf einer Platte gelesen werden.

MetaEditor

  1. Dem Datei-Kontextmenü im Navigator und der Toolbox wurden Befehle für das Arbeiten mit dem MQL5 Storage hinzugefügt.



  2. Es wurde ein Fehler behoben, der zur Beeinträchtigung der Integrität der lokalen Datenbank von MQL5 Storage bei der Arbeit mit mehr als 1024 Dateien im Repositorium führte.
  3. Es wurden Fehler bei der Anzeige von Daten des Profilings in Quellcode-Dateien behoben.
  4. Die Anzeige von Alerts wurde im Preischart korrigiert.

Die Dokumentation wurde aktualisiert.

24 November 2016
MetaTrader 5 iOS build 1425
  • Das Panel für Ein-Klick-Handel wurde verbessert: nun ist es auch im Portait-Modus verfügbar. Sie können das Volumen eines Trades schnell ändern, indem Sie das gewünschte Volumen in der Liste auswählen.

  • Um das Symbol des Chart zu ändern, klicken Sie einfach auf seinen Namen in der Überschrift des Fensters.
  • Weitere Veränderungen betreffen Einstellungen der Anwendung - wir haben Details zum aktuellen Trading-Account hinzugefügt, Bereiche neu geordnet und das Design aktualisiert.
  • Zahlreiche Fehlerbehebungen und Verbesserungen.
14 Oktober 2016
MetaTrader 5 Build 1455: Bibliotheken mathematischer Funktionen in MQL5

Terminal

  1. Es wurden Tooltips für die Buttons Buy, Sell und Close in Handelsdialogen hinzugefügt. Die Tooltips erklären, welche Aktiva genau bei der Abwicklung der Transaktion gekauft bzw. verkauft werden, und helfen Anfängern den Sinn des Handeslprozesses besser nachzuvollziehen.




  2. Es wurden neue Icons für Orders, Trades und Positionen in den Reitern "Handel" und "Historie" hinzugefügt.




  3. Die Anzeige und Aktualisierung der Markttiefe, des Tick-Charts der Markttiefe und von Times & Sales wurde optimiert und wesentlich beschleunigt (um das 4-5-Fache).
  4. Es wurde ein Fehler bei der Synchronisierung der Tick-Historie außerhalb der Handelszeiten korrigiert. In einigen Fällen führte der Fehler zu einem übermäßigen Traffic-Vebrauch.

MQL5

  1. Der Standardbibliothek wurde eine MQL5-Verison der Bibliothek der numerischen Analyse ALGLIB hinzugefügt.

    Eigenschaften der Bibliothek

    • Lineare Algebra
    • Lösen von Gleichungen - linearen und nicht linearen
    • Interpolation
    • Optimierung
    • Schnelle Fourier-Transformation
    • Numerische Integration
    • Lineare und nicht lineare Approximation nach der Methode der kleinsten Quadraten
    • Gewöhnliche Differentialgleichungen
    • Berechnung spezieller Funktionen
    • Deskriptive Statistik und Hypothesentest
    • Datenanalyse - Klassifizierung, Regression
    • Implementierung von Algorithmen linearen Algebra, Interpolation usw. hochgenaue Arithmetik (mit MPFR)

    Wie es verwendet wird

    Die Dateien der ALGLIB sind im Verzeichnis \MQL5\Include\Math\Alglib gespeichert. Für die Verwendung der Funktionen, fügen Sie Ihrem Programm die Hauptdatei hinzu:

    #include <Math\Alglib\alglib.mqh>

  2. Der Standardbibliothek wurden Funktionen für das Arbeiten mit der mathematischen Statistik hinzugefügt. Nun sind die Möglichkeiten der R-Sprache, eines der besten Werkzeuge der statistischen Datenverarbeitung und -analyse, in MQL5 verfügbar.

    Eigenschaften der Bibliothek

    Die statistische Bibliothek beinhaltet Funktionen für die Berechnung statistischer Eigenschaften sowie Funktionen für das Arbeiten mit statistischen Verteilungen:

    • Funktionen für die Berechnung statistischer Charakteristiken der Elemente eines Arrays
    • Funktionen für das Arbeiten mit statistischen Verteilungen: Normalverteilung, Log-Normalverteilung, Betaverteilung usw.

    Wie es verwendet wird

    Die Dateien der statistischen Bibliothek sind in \MQL5\Include\Math\Stat gespeichert. Um Funktionen der Bibliothek zu verwenden, fügen Sie die Datei mit den notwendigen Funktionen in Ihr Programm hinzu, zum Beispiel:

    #include <Math\Stat\Binomal.mqh>
    #include <Math\Stat\Cauchy.mqh>
    

    Eine ausführliche Beschreibung der Bibliotheksfunktionen finden Sie im Artikel Statistische Verteilung in MQL5 - das beste aus R rausholen.


  3. Der Standardbibliothek wurde eine MQL5-Version der Fuzzy-Bibliothek hinzugefügt, in der Inferenzen vom Typ Mamdani und Sugeno implementiert werden.

    Eigenschaften der Bibliothek

    • 13 Zugehörigkeitsfunktionen
    • Flexible Form für die Entwicklung von Relgeln für Fuzzy-Systeme
    • Unscharfe Inferenz nach Mamdani
    • Unscharfe Inferenz nach Sugeno
    • 5 Methoden der Defuzzifizierung für das System vom Typ Mamdani
    • Unbegrenzte Anzahl der Ein- und Ausgabevariablen

    Wie es verwendet wird

    Die Dateien der Fuzzy-Bibliothek sind im Verzeichnis \MQL5\Include\Math\Fuzzy gespeichert. Um Funktionen der Bibliothek zu verwenden, fügen Sie die Datei mit den notwendigen Funktionen in Ihr Programm hinzu, zum Beispiel:

    #include <Math\Fuzzy\mamdanifuzzysystem.mqh>
    #include <Math\Fuzzy\sugenofuzzysystem.mqh>
    

    Eine ausführliche Beschreibung der Bibliothek ist in der Code Base zu finden: Fuzzy - Bibliothek für das Arbeiten mit der Fuzzy-Logik


  4. Es wurde die Eigenschaft CHART_QUICK_NAVIGATION für das Aktivieren/Deaktivieren der Leiste der schnellen Navigation hinzugefügt. Für die Änderung und das Erhalten des Zustands der Eigenschaft verwenden Sie bitte die Funktionen ChartSetInteger und ChartGetInteger.




    Die Navigationsleiste wird durch das Drücken auf die Eingabe- oder Leertaste aufgerufen. So können Sie schnell zum angegebenen Datum auf dem Chart gelangen sowie Symbol oder Zeitrahmen ändern. Wenn Ihr MQL5-Programm das Drücken der Eingabe- und Leertaste verarbeitet, deaktivieren Sie die Option CHART_QUICK_NAVIGATION, damit das Terminal diese Events nicht abfängt. Die Navigationsleiste kann auch mit einem Doppelklick aufgerufen werden.

  5. Es wurden die Funktionen FileLoad und FileSave für ein einfaches Lesen und Speichern von Arrays in Dateien hinzugefügt. Im Gegensatz zu FileRead* und FileWrite* brauchen diese Funktionen den Handle der Datei nicht. FileLoad und FileSave funktionieren mit Arrays von numerischen Typen sowie mit einfachen Strukturen, die keine Strings, dynamischen Arrays oder Klassenobjekte haben.
    long  FileLoad(
       const string filename,      // [in] Dateiname
       void         &buffer[],     // [out] ein Array, in das die Datei geschrieben wird liest
       uint         common_flag=0  // [in] 0 - Suche nach der Datei im Files-Ordner des Terminals, FILE_COMMON - im gemeinsamen Verzeichnis der Terminals
       );
    
    bool  FileSave(
       const string filename,      // [in] Dateiname
       const void   &buffer[],     // [in] Array, welches in der Datei gespeichert wird
       uint         common_flag=0  // [in] 0 - Erstellung einer Datei im Files-Ordner des Terminals, FILE_COMMON - im gemeinsamen Verzeichnis der Terminals
       );
       );
    Ein Beispiel dafür, wie Ticks in eine Datei geschrieben und anschließend gelesen werden:
    //--- Eingabeparameter
    input int      ticks_to_save=1000; // Anzahl von Ticks
    //+------------------------------------------------------------------+
    //| Script program start function                                    |
    //+------------------------------------------------------------------+
    void OnStart()
      {
       string  filename=_Symbol+"_ticks.bin";
       MqlTick ticks[];
    //---
       int copied=CopyTicks(_Symbol,ticks,COPY_TICKS_ALL,0,ticks_to_save);
       if(copied!=-1)
         {
          PrintFormat(" CopyTicks(%s) copied %d ticks",_Symbol,copied);
          //--- wenn die Tick-Historie synchronisiert ist, ist der Fehlercode gleich Null
          if(!GetLastError()==0)
             PrintFormat("%s: Ticks are not synchronized. Error=",_Symbol,copied,_LastError);
          //---  schreiben wir die Ticks in eine Datei
          if(!FileSave(filename,ticks,FILE_COMMON))
             PrintFormat("FileSave() failed, error=%d",GetLastError());
         }
       else
          PrintFormat("Failed CopyTicks(%s), Error=",_Symbol,GetLastError());
    //--- nun lesen wir diese Ticks aus der Datei
       ArrayFree(ticks);
       long count=FileLoad(filename,ticks,FILE_COMMON);
       if(count!=-1)
         {
          Print("Time\tBid\tAsk\tLast\tVolume\tms\tflags");
          for(int i=0;i<count;i++)
            {
             PrintFormat("%s.%03I64u:\t%G\t%G\t%G\t%I64u\t0x%04x",
             TimeToString(ticks[i].time,TIME_DATE|TIME_SECONDS),ticks[i].time_msc%1000,
             ticks[i].bid,ticks[i].ask,ticks[i].last,ticks[i].volume,ticks[i].flags);
            }
         }
      }

  6. Die Anzeige benutzerdefinierter Indikatoren mit dem Modus DRAW_CANDLES wurde geändert. Nun kann man für diesen Stil eine bis drei Farben setzen, davon hängt die Darstellung von Kerzen ab.

    Wenn nur eine Farbe angegeben wurde, werden alle Kerzen auf dem Chart diese Farbe haben.
    //--- Kerzen haben die gleiche Farbe  
    #property indicator_label1  "One color candles"
    #property indicator_type1   DRAW_CANDLES
    //--- es wurde nur eine Farbe angegeben, deswegen haben alle Kerzen die gleiche Farbe
    #property indicator_color1  clrGreen  
    Wenn zwei Farben angegeben wurden, werden die Umrisse der Kerzen die erste Farbe und der Körper — die zweite Farbe haben.
    //--- die Farbe der Kerzen unterscheidet sich von der Farbe der Schatten
    #property indicator_label1  "Two color candles"
    #property indicator_type1   DRAW_CANDLES
    //--- Schatten und Umriss - grün, Körper - weiss
    #property indicator_color1  clrGreen,clrWhite 
    Wenn drei Farben angegeben wurden, werden der Umriss der Kerzen die erste Farbe, bullische Kerzen - die zweite und bärische Kerzen - die dritte Farbe haben.
    //--- die Farbe der Kerzen unterscheidet sich von der Farbe der Schatten
    #property indicator_label1  "One color candles"
    #property indicator_type1   DRAW_CANDLES
    //--- die Schatten und der Umriss sind grün, der Körper der bärischen Kerze ist weiß, der Körper der bärischen Kerze ist rot
    #property indicator_color1  clrGreen,clrWhite,clrRed
    Auf diese Weise kann man mithilfe des Stils DRAW_CANDLES eigene benutzerdefinierte Varianten der Kerzenfarben gestalten. Alle Farben können beim Laufen des Indikators mithilfe der Funktion PlotIndexSetInteger(Index_DRAW_CANDLES, PLOT_LINE_COLOR, modifier_nummer, Farbe) geändert werden, wobei:
    • 0 – Farbe des Umrisses und der Schatten
    • 1– Farbe des Körpers einer bullischen Kerze
    • 2 – Farbe des Körpers einer bärischen Kerze
    //--- setzen wir die Farbe für den Umriss und die Schatten
    PlotIndexSetInteger(0,PLOT_LINE_COLOR,0,clrBlue);
    //--- setzen wir die Farbe für den Körper der bullischen Kerze
    PlotIndexSetInteger(0,PLOT_LINE_COLOR,1,clrGreen);
    //--- setzen wir die Farbe für den Körper der bärischen Kerze
    PlotIndexSetInteger(0,PLOT_LINE_COLOR,2,clrRed);
  7. Es wurde eine Reihe von Fehlern behoben und das Arbeiten mit der Tick-Historie mithilfe der CopyTicks Funktion beschleunigt.
  8. Die Verwendung von Operatoren wurde in Schnittstellen erlaubt.

Market

  1. Es wurde ein Fehler behoben, der in einigen Fällen zu einer erneuten Autorisierung auf MQL5.community beim Einkaufen im Market führte.

Tester

  1. Es wurde eine Übersetzung der Benutzerschnittstelle in die griechische, malaiische und neuhebräische Sprachen hinzugefügt.

Die Dokumentation wurde aktualisiert.

29 September 2016
MetaTrader 5 Webplattform: Optimierung des Codes und neue Möglichkeiten der Benutzerschnittstelle
  • Es wurde die Möglichkeit hinzugefügt, die Größe von Blöcken der Webanwendung zu ändern — von der "Marktübersicht" bis zu den Fenstern mit Preischarts.
  • In den Reitern "Handel" und "Historie" ist nun Sortierung verfügbar. Die Breite der Spalten kann geändert werden.
  • Der Marktübersicht wurde ein Werkzeug für die schnelle Auswahl eines Symbols und das Tab "Details" hinzugefügt.
  • Der Code wurde für die Beschleunigung der Arbeit des Webterminals optimiert — Initialisierung des Kontos, Auswahl von Symbolen und der Handel selbst sind noch schneller geworden.

26 September 2016
MetaTrader 5 iOS Build 1403
  • Die Anzeige des Reiters "Handel" wurde geändert - die Anzeige der Informationen hängt nun vom Risikomanagementsystems auf dem Handelskonto ab: Retail Forex, Futures oder Börsenmodell.


  • Die Auswahl der Sprache der Benutzerschnittstelle wurde zu einem separaten Menüpunkt in den Einstellungen verschoben.
  • Fehlerbehebungen und Verbesserungen.
  • 26 September 2016
    MetaTrader 5 Android Build 1372
    • Die Applikation unterstützt den Mehrfenster-Modus für Charts — nun können Trader die Preisdynamik mehrerer Finanzinstrumente gleichzeitig verfolgen.
    • Es wurde die Möglichkeit hinzugefügt, die Höhe der Unterfenster von Indikatoren zu ändern.
    • Nun gibt es einen Schnellauswahl-Button für Symbole und ein separates Menü der Charteinstellungen in der mobilen Plattform. 


    • Wir haben die Bearbeitung von Indikator-Levels hinzugefügt.
    • Die Benutzerschnittstelle wurde ins Bulgarische übersetzt.
    1234