In diesem Beitrag werfen wir einen Blick auf die neue Implementierung des voll funktionsfähigen Multicurrency-Modus in MetaTrader 5. Diese Funktion ist im erweiterten OnTick(string symbol) integriert und bietet eine Vielzahl von Vorteilen für Trader.
Vorteile:
- Es ermöglicht den echten Multicurrency-Modus sowohl auf Demokonten als auch auf Live-Konten.
- Die Einstellungen sind einfach zu handhaben.
- Die Ereignisliste für
OnTick(string symbol)kann konfiguriert werden: Neue Tick- und/oder Neue Kerze. - Die Liste der Symbole kann angepasst werden (alle Symbole aus der Marktübersicht oder bestimmte ausgewählte Symbole).
- Beim Arbeiten mit Symbolen aus der Marktübersicht können die Ereignisse "live" im
OnTick(string symbol)verwaltet werden. - Es ist nicht notwendig, die Details der Funktionsweise zu verstehen. Der gesamte Code ist in der Include-Datei enthalten.
- Es kann im Strategietester genutzt werden.
Das Template für den Expert Advisor sieht wie folgt aus:
//+------------------------------------------------------------------+ //| OnTick(string symbol).mq5 | //| Copyright 2010, Lizar | //| https://www.mql5.com/ru/users/Lizar | //+------------------------------------------------------------------+ #define VERSION "1.00 Build 1 (01 Feb 2011)" #property copyright "Copyright 2010, Lizar" #property link "https://www.mql5.com/ru/users/Lizar" #property version VERSION #property description "Template des Expert Advisors" #property description "mit Multicurrency OnTick(string symbol) Ereignis-Handler" //+------------------------------------------------------------------+ //| MULTICURRENCY MODUS EINSTELLUNGEN | //| des OnTick(string symbol) Ereignis-Handlers | //| | //| 1.1 Liste der Symbole, die für die Ereignisse benötigt werden: | #define SYMBOLS_TRADING "EURUSD","GBPUSD","USDJPY","USDCHF" //| 1.2 Wenn Sie alle Symbole aus der Marktübersicht verwenden möchten, nutzen Sie dies: | //#define SYMBOLS_TRADING "MARKET_WATCH" //| Hinweis: Wählen Sie nur einen Weg aus 1.1 oder 1.2. | //| | //| 2. Ereignistyp für OnTick(string symbol): | #define CHART_EVENT_SYMBOL CHARTEVENT_TICK //| Hinweis: Der Ereignistyp muss der | //| ENUM_CHART_EVENT_SYMBOL Enumeration entsprechen. | //| | //| 3. Include-Datei: | #include <OnTick(string symbol).mqh> //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Expert-Initialisierungsfunktion | //| Diese Funktion muss deklariert werden, auch wenn sie leer ist. | //+------------------------------------------------------------------+ int OnInit() { //--- Fügen Sie hier Ihren Code hinzu... return(0); } //+------------------------------------------------------------------+ //| Expert-Multi-Tick-Funktion | //| Verwenden Sie diese Funktion anstelle der Standard-OnTick() Funktion | //+------------------------------------------------------------------+ void OnTick(string symbol) { //--- Fügen Sie hier Ihren Code hinzu... Print("Neues Ereignis für Symbol: ",symbol); } //+------------------------------------------------------------------+ //| ChartEvent-Funktion | //| Diese Funktion muss deklariert werden, auch wenn sie leer ist. | //+------------------------------------------------------------------+ void OnChartEvent(const int id, // Ereignis-ID const long& lparam, // Ereignisparameter vom Typ long const double& dparam, // Ereignisparameter vom Typ double const string& sparam) // Ereignisparameter vom Typ string { //--- Fügen Sie hier Ihren Code hinzu... } //+------------------------------------------------------------------+ //| Expert-Deinitialisierungsfunktion | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- Fügen Sie hier Ihren Code hinzu... } //+------------------------------ Ende -------------------------------+
Einige Merkmale:
1. Einstellungen
Alle Einstellungen können mit den
#define-Direktiven konfiguriert werden. Für das korrekte Funktionieren derOnTick(string symbol)-Funktion müssen nur zwei Parameter angegeben werden:SYMBOLS_TRADINGundCHART_EVENT_SYMBOL. Der erste (SYMBOLS_TRADING) definiert die Symbol-Liste, die für die Ereignisse verwendet wird. Der zweite (CHART_EVENT_SYMBOL) definiert die Ereignistypen für alle Symbole.
Die
SYMBOLS_TRADINGenthält die Liste der Symbole, zum Beispiel:#define SYMBOLS_TRADING "EURUSD","GBPUSD","USDJPY","USDCHF"Die Liste muss als Strings angegeben werden, durch Kommas getrennt. Die Liste endet mit dem Ende der Zeile.
Die
SYMBOLS_TRADINGkann wie folgt definiert werden:#define SYMBOLS_TRADING "MARKET_WATCH"Diese Methode bedeutet, dass alle Symbole aus der Marktübersicht verwendet werden. Diese Methode kann verwendet werden, um die Liste der Symbole "on the fly" zu ändern. Fügen Sie einfach die benötigten Symbole zur Marktübersicht hinzu oder entfernen Sie sie.
Der Ereignistyp
CHART_EVENT_SYMBOLwird durch Flaggen oder deren Kombination aus derENUM_CHART_EVENT_SYMBOLEnumeration definiert. Weitere Details finden Sie hier (in Russisch).Hier sind Beispiele für die Ereignistypen:
//--- Beispiel 1. OnTick-Ereignis: #define CHART_EVENT_SYMBOL CHARTEVENT_TICK //--- Beispiel 2. Neue Kerze M1 und Neue Kerze H1: #define CHART_EVENT_SYMBOL CHARTEVENT_NEWBAR_H1|CHARTEVENT_NEWBAR_M1
2. Include-Datei.
Die
#include OnTick(string symbol).mqhist notwendig, dieses Datei enthält die Implementierung derOnTick(string symbol)-Funktion. Sie bietet eine einfache Möglichkeit, die gesamteOnTick(string symbol)-Funktion zu nutzen. Einige der Standardfunktionen sollten im Code des Expert Advisors deklariert werden, auch wenn sie leer sind.
3. Strategietester.
Wie Sie wissen, wird das
OnChartEventderzeit nicht im Strategietester unterstützt. Um dieses Problem zu lösen, werden globale Variablen verwendet, um die Ereignisse zu bearbeiten. Diese Methode wird nur im Strategietester verwendet, in allen anderen Fällen (auf echten/Demo-Konten) werden die Ereignisse über dasOnChartEventverarbeitet.Hier ist das Feature. Im Strategietester funktioniert die
OnTick(string symbol)auf den Ticks des Symbols, das in den Einstellungen des Strategietesters angegeben ist. Mit anderen Worten, es funktioniert wieOnTick(), wird aber auch aufgerufen, wenn neue Ticks für die ausgewählten Symbole eintreffen. Für die Arbeit mit dem Strategietester mussSYMBOLS_TRADINGals Liste von Symbolen angegeben werden.
4. "Spione".
Es nutzt die "Spione" (Agenten-Indikatoren). Die Datei "Spy Control panel MCM.ex5" muss im Verzeichnis MQL5/Indicators/ abgelegt werden.
5. Die Dateien aus dem Archiv müssen ins MQL5-Verzeichnis extrahiert werden. Die benötigten Dateien sind:
- /MQL5/Experts/OnTick(string symbol).mq5 - Beispiel des Expert Advisors, Quellcode des Templates;
- /MQL5/Experts/OnTick(string symbol).ex5 - Beispiel des Expert Advisors, kompilierte Datei;
- /MQL5/Indicators/Spy Control panel MCM.mq5 - Agent-Indikator, Quellcode;
- /MQL5/Indicators/Spy Control panel MCM.ex5 - Agent-Indikator, kompilierte Datei;
- /MQL5/Include/OnTick(string symbol).mqh - Include-Datei mit allen Funktionen, die für die Implementierung der
OnTick(string symbol)-Funktion benötigt werden.
Kommentar 0