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

Völlig neu gestaltete Verwaltungsoptionen des integrierten Virtual Hostings

5 Oktober 2019

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.