Einer der Vorteile der MQL5-Sprache ist die Möglichkeit, Multicurrency-Indikatoren und Expert Advisors (EAs) zu nutzen. Siehe auch Multicurrency OnTickMarketWatch Tick-Ereignis-Handler in MQL5 CodeBase.
Die Verwendung des in dem Skript vorgeschlagenen Konzepts ist nicht immer praktisch. Bei vielen Ereignissen kann es beispielsweise zu einem Überlauf der Ereigniswarteschlange kommen.
Hier ist eine Anmerkung aus der MQL5-Dokumentation:
Der Clientterminal fügt auftretende Ereignisse zur Ereigniswarteschlange hinzu. Diese werden nacheinander in der Reihenfolge verarbeitet, in der sie empfangen wurden. Es gibt eine Ausnahme für das NewTick-Ereignis. Wenn sich bereits ein solches Ereignis in der Warteschlange befindet oder dieses Ereignis verarbeitet wird, wird das neue NewTick-Ereignis nicht in die Warteschlange eingereiht.
Die Warteschlange der Ereignisse hat eine begrenzte Größe. Bei Überlauf werden alte Ereignisse entfernt, ohne verarbeitet zu werden, um die Annahme neuer Ereignisse zu ermöglichen. Daher wird empfohlen, effiziente Ereignis-Handler zu schreiben, und es wird nicht empfohlen, Endlosschleifen zu verwenden (außer bei Skripten, die nur das Start-Ereignis verarbeiten).
Manchmal ist es auch notwendig, die Werte eines Indikators nur dann neu zu berechnen, wenn eine neue Kerze erschienen ist. In anderen Fällen kann es erforderlich sein, das Trading „on the fly“ für ein bestimmtes Symbol in einem multicurrency EA zu deaktivieren oder den Zeitrahmen eines Symbols zu ändern.
Das „etwas anderes“ könnte externe Daten sein. Das MCM (MultiCurrency Mode) Steuerungspanel basiert auf dieser Idee.
Übrigens kann es auch im Einzelwährungshandel verwendet werden.
Die Funktionen des „MCM Steuerungspanels“ (Wettbewerbsversion):
Es hat eine minimale Anzahl von Funktionen, die benötigt werden, um den Multicurrency-Modus in Expert Advisors und Indikatoren zu nutzen:
- Hinzufügen/Entfernen von Symbolen für den Handel und die Analyse.
- Es ermöglicht das Verfolgen von „neuen Tick“ und „neuen Kerze“ Ereignissen für jedes Symbol und jeden Zeitraum.
- Alle Einstellungen können „on the fly“ ohne Neustart des Expert Advisors oder Indikators geändert werden.
- Das Panel kann mit unseren Expert Advisors und Indikatoren verwendet werden.
- Es kann auch in Ihren Code integriert werden, es wird mit diesen geladen.
- Es ist transparent. Sie müssen den Code des MCM Steuerungspanels nicht zu Ihren Expert Advisors oder Indikatoren hinzufügen.
Mit dem „MCM Steuerungspanel“ können Sie eigene Funktionen hinzufügen. Weitere Details finden Sie weiter unten.
Das Speichern/Wiederherstellen der Einstellungen des Steuerungspanels wird in dieser Version nicht unterstützt.
Das Starten des „MCM Steuerungspanels“ kann auf mehrere Arten erfolgen:
- Fügen Sie das „iControl panel MCM“ zum Chart hinzu.
- Starten Sie das Skript „scControl panel MCM“. Das Skript lädt den „iControl panel MCM“-Indikator.
- Laden Sie das Panel von Ihrem Expert Advisor oder Indikator. Siehe „exControl panel MCM“ für Details.
Im dritten Fall wird das Panel mit unserem Expert Advisor oder Indikator geladen und dem Chart hinzugefügt.
Ihr Expert Advisor sollte einen OnChartEvent()-Ereignis-Handler haben, um die Ereignisse des MCM Steuerungspanels zu verarbeiten.
Benutzeroberfläche
Die Benutzeroberfläche ist einfach und wird als Menü umgesetzt. Die Größe und die Farben des Menüs können über Eingabeparameter konfiguriert werden.
So sieht es aus:

Design
Das Panel wird verwendet, um die Ereignisse für die multikurrency Expert Advisors und Indikatoren zu konfigurieren.
Die Größe und Position des Panels hängt von der Chartgröße und der Schriftgröße (definiert in den Eingabeparametern) ab. Um den Arbeitsbereich zu entlasten, kann das Panel minimiert werden.

Die Größe des Panels kann durch Ändern der Schriftgröße in den Eingabeparametern (Schriftgröße = 10, Standard) geändert werden:

Sie können jede gewünschte Farbe einstellen.
Beispielsweise das rosa Schema:

Das EMO-Schema:

Einfach zu bedienen
Das Menü ist intuitiv und einfach zu bedienen.
Der „MCM Steuerungspanel“-Button enthält zusätzliche Funktionen (in dieser Version nicht enthalten):

Mit dem „Chart“-Button können Sie einfach das aktuelle Symbol und den Zeitrahmen ändern, wählen Sie einfach aus:

Die „Ereignisse“-Funktion ermöglicht es Ihnen, Ereignisse „on the fly“ zu aktivieren/deaktivieren (ohne Neustart des Expert Advisors oder Indikators) für ein bestimmtes Symbol und das benötigte Ereignis anzugeben. Diese Ereignisse können innerhalb der OnChartEvent()-Funktion des Expert Advisors oder Indikators verarbeitet werden. Das Symbolmenü enthält nur Symbole, die aus „Market Watch“ ausgewählt wurden. Sie können beliebige Ereignisse kombinieren, alle werden verarbeitet.
Es ist beispielsweise nicht notwendig, sich um das Auftreten des neuen Ticks/Bars für Symbole in Zeitrahmen zu kümmern, die Panel-Engine sendet die Ereignisse:

Hier ist die „Hilfe“:

Know-how und seine Umsetzung
Meine Lösung ist veröffentlicht in Multicurrency OnTickMarketWatch Tick-Ereignis-Handler, aber dieses Panel hat einige zusätzliche Funktionen:
- „MCM Steuerungspanel MCM“ bietet die Schnittstelle, die im Clientterminal nicht direkt umgesetzt ist. Es ermöglicht Ihnen, den Multicurrency-Modus über den OnChartEvent()-Ereignis-Handler zu nutzen. Eine weitere Funktion ist die Möglichkeit, die Einstellungen „on the fly“ zu ändern.
- Um die Ereignisse für den OnChartEvent()-Ereignis-Handler zu generieren, verwendet das MCM Steuerungspanel seine eigenen „Agenten“ (Indikatoren, die vom MCM Steuerungspanel auf einem bestimmten Symbol gestartet werden), die das Ereignis für das Multicurrency-Trading bereitstellen.
- Das Panel kann in Expert Advisors oder Indikatoren integriert werden.
- Das MCM Steuerungspanel bietet neue Möglichkeiten für MQL5-Entwickler.
- Meiner Meinung nach ist das Panel ein Beispiel für eine neue Struktur von Expert Advisors und Indikatoren. Ich werde später einige Beispiele bereitstellen.
Informationen zu Ereignissen und Benachrichtigungen
Das Panel hat eine Statusleiste, um Ereignisse anzuzeigen.
Installation des MCM Steuerungspanels
Entpacken Sie die Archivdatei mcm_control_panel.zip in den Ordner des Clientterminals. Danach erscheinen folgende Dateien:
- /mql5/experts/exControl panel MCM.mq5 - Beispiel eines Expert Advisors;
- /mql5/scripts/scControl panel MCM.mq5 - Beispiel eines Skripts;
- /mql5/indicators/iControl panel MCM.mq5 - Indikator, die Hauptengine des „MCM Steuerungspanels“;
- /mql5/indicators/Spy Control panel MCM.mq5 - Indikator, „MCM Steuerungspanel“ Agent
- /mql5/include/Control panel MCM.mqh - ein Satz von „MCM Steuerungspanel“-Klassen und -Funktionen.
Als nächstes kompilieren Sie die Indikatoren, das Skript und den Expert Advisor.
Starten des MCM Steuerungspanels
Das Starten des MCM Steuerungspanels erfolgt durch das Hinzufügen des iControl panel MCM.mq5 Indikators zu einem beliebigen Chart.
Das Panel kann von einem Expert Advisor gestartet werden, indem Sie den „exControl panel MCM“ Expert Advisor dem Chart hinzufügen:

Als Beispiel für Multicurrency habe ich den MultiTrend Expert Advisor geschrieben. Der Indikator zeigt den USD-Trend basierend auf der Analyse von 4 Währungspaaren:
Hier ist der Code:
//+------------------------------------------------------------------+ //| MultiTrend.mq5 | //| Copyright 2010, Lizar | //| https://www.mql5.com/ru/users/Lizar | //+------------------------------------------------------------------+ #define VERSION "1.00 Build 2 (09 Dec 2010)" #property copyright "Copyright 2010, Lizar" #property link "https://www.mql5.com/ru/users/Lizar" #property version VERSION #property description "Dieser Expert Advisor verwendet das MCM Steuerungspanel" input color bg_color=Gray; // Menüfarbe input color font_color=Gainsboro; // Textfarbe input color select_color=Yellow // Ausgewählte Textfarbe input int font_size=10; // Schriftgröße #include <Control panel MCM.mqh> //<--- Include-Datei //+------------------------------------------------------------------+ //| Expert-Initialisierungsfunktion | //+------------------------------------------------------------------+ int OnInit() { //--- Initialisierung des MCM Steuerungspanels. //--- Es ist nicht notwendig, Farben festzulegen, wenn sie nicht angegeben sind, werden die Standardfarben verwendet. InitControlPanelMCM(bg_color,font_color,select_color,font_size); //--- return(0); } //+------------------------------------------------------------------+ //| Expert-Deinitialisierungsfunktion | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { DeinitControlPanelMCM(); //<--- Deinitialisierung des MCM Steuerungspanels } //+------------------------------------------------------------------+ //| OnChartEvent-Ereignis-Handler. | //| Siehe MQL5-Dokumentation für Details. | //| Kann mit dem MCM Steuerungspanel für Multicurrency-Trading verwendet werden | //+------------------------------------------------------------------+ void OnChartEvent(const int id, // Ereignis-ID: // wenn id-CHARTEVENT_CUSTOM==0 - Initialisierungsevent (wenn prev_calculated==0) // wenn id-CHARTEVENT_CUSTOM!=0 - Symbolindex im „Market Watch“-Fenster const long& lparam, // Zeitraum const double& dparam, // Preis const string& sparam // Symbol ) { if(id>=CHARTEVENT_CUSTOM) { Print(TimeToString(TimeCurrent(),TIME_SECONDS)," -> id=", id-CHARTEVENT_CUSTOM, ": ",sparam," ",EventDescription(lparam)," Preis=",dparam); } } //+------------------------------------------------------------------+
Die OnChartEvent()-Parameter.
Das Steuerungspanel generiert benutzerdefinierte Ereignisse. Diese Ereignisse können im Expert Advisor oder Indikator mithilfe des OnChartEvent()-Ereignis-Handlers verarbeitet werden.
Die Eingabeparameter:
- id - Ereignis-ID:
wenn id-CHARTEVENT_CUSTOM !=0 - entspricht dem Symbolindex im „Market Watch“-Fenster; - lparam - Ereignis-Flag. Siehe die ENUM_CHART_EVENT_SYMBOL-Enumeration in Control panel MCM.mqh.
- dparam - Tickpreis oder Eröffnungspreis der neuen Kerze auf einem bestimmten Zeitraum.
- sparam - Symbolname
Liste der Ereignisse, die im MCM Steuerungspanel unterstützt werden
Mit dem lparam-Parameter kann das Steuerungspanel bis zu 64 verschiedene benutzerdefinierte Ereignisse für ein Symbol senden. In dieser Version werden die folgenden Ereignisse unterstützt:
- „Initialisierung“ Ereignis (Initialization);
- „Neuer Tick“ Ereignis (tick);
- „Neue Kerze“ Ereignis im M1-Chart (M1);
- „Neue Kerze“ Ereignis im M2-Chart (M2);
- „Neue Kerze“ Ereignis im M3-Chart (M3);
- „Neue Kerze“ Ereignis im M4-Chart (M4);
- „Neue Kerze“ Ereignis im M5-Chart (M5);
- „Neue Kerze“ Ereignis im M6-Chart (M6);
- „Neue Kerze“ Ereignis im M10-Chart (M10);
- „Neue Kerze“ Ereignis im M12-Chart (M12);
- „Neue Kerze“ Ereignis im M15-Chart (M15);
- „Neue Kerze“ Ereignis im M20-Chart (M20);
- „Neue Kerze“ Ereignis im M30-Chart (M30);
- „Neue Kerze“ Ereignis im H1-Chart (H1);
- „Neue Kerze“ Ereignis im H2-Chart (H2);
- „Neue Kerze“ Ereignis im H3-Chart (H3);
- „Neue Kerze“ Ereignis im H4-Chart (H4);
- „Neue Kerze“ Ereignis im H6-Chart (H6);
- „Neue Kerze“ Ereignis im H8-Chart (H8);
- „Neue Kerze“ Ereignis im H12-Chart (H12);
- „Neue Kerze“ Ereignis im täglichen Chart (D1);
- „Neue Kerze“ Ereignis im wöchentlichen Chart (W1);
- „Neue Kerze“ Ereignis im monatlichen Chart (MN1);
Die Ereignisbeschreibung, die von EventDescription() zurückgegeben wird, wird in Klammern dargestellt (Initialisierung, Tick, Mxx usw.). Die EventDescription-Funktion finden Sie in Control panel MCM.mqh (folgend der ENUM_CHART_EVENT_SYMBOL-Enumeration).
Das „Initialisierung“-Ereignis wird generiert, wenn prev_calculated=0, es kann verwendet werden, um die Daten vorzubereiten, zum Beispiel können Sie die Indikatorwerte neu berechnen.
Ereignisse festlegen
Um die benötigten Ereignisse festzulegen, klicken Sie auf die Schaltfläche „Ereignisse“, wählen Sie das Symbol und den Ereignistyp aus. Die ausgewählten Ereignisse werden in Gelb (oder in der ausgewählten Farbe in den Eingabeparametern des Indikators) angezeigt. Sie können ein oder mehrere Ereignisse auswählen, alle können von unserem Multicurrency Expert Advisor verarbeitet werden. Um Änderungen anzuwenden, klicken Sie auf die Schaltfläche „Ereignisse aktivieren/deaktivieren“.
Der gleiche Vorgang kann für alle notwendigen Symbole durchgeführt werden.

Hier ist ein Protokoll aus dem „Experten“-Tab:

Verwandte Beiträge
- So integrierst du hochkarätige Wirtschaftsdaten in deinen EA für MetaTrader 4
- MQL5 Wizard: Handelsignale mit EMA-Crossover und intraday Zeitfilter
- Handelssignale mit MQL5 Wizard: Bullish und Bearish Harami mit CCI bestätigen
- Erstelle einen Expert Advisor basierend auf dem Center of Gravity Indikator für MetaTrader 4
- MQL5 Wizard: Trade Signale auf Basis von Kurs-Crossover mit gleitendem Durchschnitt und ADX Bestätigung