MetaTrader 5 Build 1525: Darstellung der Historie als Positionen und Verbesserung des Strategietesters

Was ist neu im MetaTrader 5

27 Januar 2017

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.