MetaEditor
- 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".
- 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. - MetaEditor: Anzeige von SQLite-Datenbankdateien (*.db;*.sdb;*.sqlite;*.db3;*.s3db;*.sqlite3) im Navigator hinzugefügt.
- MetaEditor: Fehler beim Speichern der Projekteigenschaften behoben.
MQL5
- 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.
- 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.
- Es wurden Funktionen für die Arbeit mit Datenbanken hinzugefügt:
DatenbankImport
Importiert Daten aus einer Datei in eine Tabelle.
lang DatenbankImport(
int database,
const string table,
const string filename,
uint flags,
const string separator,
ulong skip_rows,
const string skip_comments
);
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,
const string table_or_sql,
const string filename,
uint flags,
const string separator
);
DatabasePrint
Druckt die Tabelle oder das Ergebnis der
SQL-Anfrage im Experten-Journal aus.
long DatabasePrint(
int database,
const string table_or_sql,
uint flags
);
- Hinzugefügt wurde die Funktion FileSelectDialog, die den Systemdialog zum Erstellen/Öffnen einer Datei oder eines Ordners
aufruft.
int FileSelectDialog(
string caption,
string initial_dir,
string filter,
uint flags,
string& filenames[],
string default_filename
);
Die neue Funktion ermöglicht die effiziente Benutzerinteraktion mit dem MQL5-Programm.
- 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
- 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.
- 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.
- 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.
- 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.
Lesen Sie die vorige Nachricht: