Startseite Systemhandel Beitrag

MCM Steuerungspanel für Multicurrency EAs und Indikatoren - MetaTrader 5

Anhang
215.zip (19.4 KB, Herunterladen 0 mal)

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.


Starten des MCM Steuerungspanels

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

Kommentar (0)