MetaTrader 5 Plattform build 2340: Verwaltung von Kontoeinstellungen im Tester und erweiterte Integration mit Python

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

21 Februar 2020

MetaEditor

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

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

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

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



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

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

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



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

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

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


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


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

MQL5

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

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

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

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

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


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

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

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


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

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

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

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

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

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

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

Tester

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



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

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

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

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

    • Die Provision kann einstufig und mehrstufig sein, d.h. unabhängig vom Dealvolumen/Umsatz sein oder von deren Größe abhängen. Entsprechende Daten werden im Terminal angezeigt.
    • Die Provision kann sofort nach Geschäftsabschluss oder am Ende eines Handelstages/Monats berechnet werden.
    • Getrennte Provisionen können je nach Deal-Richtung erhoben werden: Eingang, Ausgang oder beide Typen.
    • Die Provision kann pro Los oder pro Deal berechnet werden.
    • Die Provision kann in Geld, Prozentsatz oder Punkten berechnet werden.


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