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

Was ist neu im MetaTrader 5

26 Oktober 2018

Terminal

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

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





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

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

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




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

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




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




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




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




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

MQL5

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

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

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

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

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

    Die Funktionen sind in einzelnen Dateien entsprechend ihrer Verwendung gruppiert:

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

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

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

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

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

    Hinzugefügt wurden folgende Eigenschaften der Enumeration ENUM_CHART_PROPERTY_INTEGER:

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

    Hinzugefügt wurden folgende Funktionen zur Enumeration ENUM_TERMINAL_INFO_INTEGER:

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

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

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

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

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

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

    Verwenden Sie die Funktion SymbolInfoDouble zur Abfrage dieser Eigenschaften.

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

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

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

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

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

Tester

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

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

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

MetaEditor

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

Aktualisierte Dokumentation.