MetaTrader 5 - Trading Systems MQL5-Assistent: Erstellen eines Moduls für Trading-Signale Einführung MetaTrader 5 bietet ein leistungsfähiges Werkzeug für die schnelle Überprüfung von Trading-Ideen. Dies ist der Generator der Handelsstrategien des MQL5 Wizard. Die Verwendung des MQL5-Assistenten zur automatischen Erstellung von Expert Advisor-Codes ist im Artikel MQL5 Wizard: Erstellen von Expertenberatern ohne Programmierung beschrieben. Die Offenheit des Codegenerierungssystems ermöglicht es Ihnen, Ihre eigenen Klassen von Handelssignalen, Geldmanagementsystemen und nachlaufenden Modulen den Standard-Modulen hinzuzufügen. Dieser Artikel beschreibt die Prinzipien des Schreibens von Modulen von Handelssignalen, um sie beim Erstellen von Expertenberatern mit dem MQL5-Assistenten zu verwenden. Der Expert Advisor wurde mit dem MQL5 Wizard erstellt. Basiert auf vier Säulen - vier Basisklassen: Die CExpert-Klasse (oder ihre Unterklasse) ist der Hauptmotor eines Handelsroboters. Eine Instanz von CExpert enthält eine Kopie jeder Klasse: CExpertSignal. CExpertMoney und CExpertTrailing (oder deren Unterklassen): CExpertSignal ist die Basis für den Handelssignalgenerator. Eine Instanz der Klasse CExpertSignal, die in CExpert enthalten ist. Bietet eine Expert Advisor mit Informationen über die Möglichkeit der Eingabe der Markt, Ebenen der Einreise und Platzierung von Schutzaufträgen, basierend auf eingebauten Algorithmen. Die endgültige Entscheidung über die Durchführung von Handelsgeschäften wird von der EA getroffen. CExpertMoney ist die Basis für das Geld - und Risikomanagementsystem. Eine Instanz der von CExpertMoney abgeleiteten Klasse berechnet die Volumina für die Eröffnung von Positionen und die Platzierung ausstehender Aufträge. Die endgültige Entscheidung über das Volumen erfolgt durch die EA. CExpertTrailing - ist die Basis des Moduls der offenen Positionen zu unterstützen. Eine Instanz der CExpertTrailing-abgeleiteten Klasse informiert eine EA über die Notwendigkeit, Schutzaufträge einer Position zu modifizieren. Die endgültige Entscheidung über die Änderung der Bestellung erfolgt durch die EA. Darüber hinaus sind die Mitglieder der CExpert-Klasse Instanzen der folgenden Klassen: CExpertTrade (für den Handel) CIndikatoren (zur Steuerung von Indikatoren und Zeitreihen, die an der Arbeit der EA beteiligt sind). CSymbolInfo (für das Erhalten von Informationen über das Instrument) CAccountInfo (für das Erhalten von Informationen über den Zustand des Handelskontos) CPositionInfo (für das Erhalten von Informationen über Positionen) COrderInfo (für das Erhalten von Informationen über ausstehende Aufträge) Unter Experte verstehen wir eine Instanz von CExpert oder Seine Unterklasse. Weitere Details von CExpert und die Arbeit mit ihm wird in einem separaten Artikel beschrieben werden. 1. Basisklasse CExpertSignal Das CExpertSignal ist die Basis für den Handelssignalgenerator. Für die Kommunikation mit der Außenwelt verfügt CExpertSignal über eine Reihe von öffentlichen virtuellen Methoden: Beschreibung der Methoden 1.1. Initialisierungsmethoden: Die Init () - Methode wird automatisch nach dem Hinzufügen einer Klasseninstanz zum Experten aufgerufen. Eine Methodenüberschreibung ist nicht erforderlich. Die ValidationSettings () - Methode wird direkt vom Experten aufgerufen, nachdem alle Parameter gesetzt sind. Sie müssen die Methode außer Kraft setzen, wenn es Setup-Parameter gibt. Die überschriebene Methode muss true zurückgeben, wenn alle Optionen gültig sind (verwendbar). Wenn mindestens einer der Parameter falsch ist, muss er falsch zurückgeben (weitere Arbeit ist unmöglich). Die Basisklasse CExpertSignal hat keine einstellbaren Parameter, daher gibt die Basisklassenmethode immer true zurück, ohne irgendwelche Prüfungen durchzuführen. Die InitIndicators () - Methode implementiert die Erstellung und Initialisierung aller notwendigen Indikatoren und Zeitvorgaben. Es wird vom Experten aufgerufen, nachdem alle Parameter gesetzt sind und deren Richtigkeit erfolgreich überprüft wird. Das Verfahren sollte überschrieben werden, wenn der Handelssignalgenerator mindestens ein Kennzeichen oder Zeitreihen verwendet. Indikatoren andor timeseries sollten durch die entsprechenden Klassen der Standardbibliothek verwendet werden. Die Indikatoren eines Sachverständigen (Zeiger, auf die als Parameter übergeben wird), sollten Zeiger aller Indikatoren und oder Zeitpunkte hinzufügen. Die überschriebene Methode muss true zurückgeben, wenn alle Manipulationen mit den Indikatoren andor timeseries erfolgreich waren (sie sind für den Gebrauch geeignet). Wenn mindestens eine Operation mit den Indikatoren andor timeseries fehlgeschlagen ist, muss die Methode false zurückgeben (weitere Arbeit ist unmöglich). Die Basisklasse CExpertSignal verwendet keine Indikatoren oder Zeitvorgaben, daher gibt die Basisklassenmethode immer true zurück, ohne irgendeine Aktion auszuführen. 1.2. Methoden zur Überprüfung des Signals der Positionsöffnung: Die CheckOpenLong () - Methode erzeugt ein Signal des Öffnens einer Langposition, wobei das Einstiegsniveau und die Ebenen der Platzierung von Schutzaufträgen definiert sind. Es wird von einem Experten aufgerufen, um festzustellen, ob es notwendig ist, eine lange Position zu öffnen. Das Verfahren muss überschrieben werden, wenn erwartet wird, dass ein Signal einer Langpositionsöffnung erzeugt wird. Das Verfahren sollte den Algorithmus zum Überprüfen des Zustandes einer Langpositionsöffnung implementieren. Wenn die Bedingung erfüllt ist, müssen den Variablen price, sl, tp und expiration (Referenzen, die als Parameter übergeben werden) entsprechende Werte zugewiesen werden und die Methode true zurückgeben. Wenn die Bedingung nicht erfüllt ist, muss die Methode false zurückgegeben werden. Die Basisklasse CExpertSignal hat keinen eingebauten Algorithmus zur Erzeugung eines Signals einer Langpositionsöffnung, daher gibt die Basisklassenmethode immer false zurück. Die CheckOpenShort () - Methode erzeugt ein Signal des Öffnens einer Short-Position, die das Einstiegsniveau und die Ebenen der Platzierung von Schutzaufträgen definiert. Es wird von einem Experten aufgerufen, um festzustellen, ob es notwendig ist, eine Short-Position zu öffnen. Das Verfahren muss überschrieben werden, wenn erwartet wird, dass ein Signal mit einer Kurzpositionsöffnung erzeugt wird. Die Methode muss den Algorithmus zur Überprüfung der Bedingung implementieren, um eine Short-Position zu öffnen. Wenn die Bedingung erfüllt ist, müssen den Variablen price, sl, tp und expiration (Referenzen, die als Parameter übergeben werden) entsprechende Werte zugewiesen werden und die Methode true zurückgeben. Wenn die Bedingung nicht erfüllt ist, muss die Methode false zurückgegeben werden. Die Basisklasse CExpertSignal hat keinen eingebauten Algorithmus zur Erzeugung eines Signals einer Positionsänderung, so dass die Basisklassenmethode immer false zurückgibt. 1.3. Methoden der Überprüfung des Signals der Positionsschließung: Die CheckCloseLong () - Methode erzeugt ein Signal des Schließens einer langen Position, die die Ausgangsebene definiert. Es wird von einem Experten aufgerufen, um festzustellen, ob es notwendig ist, eine lange Position zu schließen. Das Verfahren muss überschrieben werden, wenn erwartet wird, dass ein Signal eines Langpositionsabschlusses erzeugt wird. Die Methode muss den Algorithmus zur Überprüfung der Bedingung implementieren, um die lange Position zu schließen. Wenn die Bedingung erfüllt ist, muss dem Variablenpreis (der Referenz, der als Parameter übergeben wird) der entsprechende Wert zugewiesen werden und die Methode true zurückgeben. Wenn die Bedingung nicht erfüllt ist, muss die Methode false zurückgegeben werden. Die Basisklasse CExpertSignal hat keinen eingebauten Algorithmus für die Erzeugung eines Signals eines Longpositionsschließens, so dass die Basisklassenmethode immer false zurückgibt. Die CheckCloseShort () - Methode erzeugt ein Signal zum Schließen einer Short-Position, das die Exit-Ebene definiert. Es wird von einem Experten aufgerufen, um festzustellen, ob es notwendig ist, eine Short-Position zu schließen. Das Verfahren muss außer Kraft gesetzt werden, wenn erwartet wird, dass ein Signal mit Kurzschließung erzeugt wird. Die Methode muss den Algorithmus zur Überprüfung der Bedingung implementieren, um eine kurze Position zu schließen. Wenn die Bedingung erfüllt ist, muss dem Variablenpreis (der Referenz, der als Parameter übergeben wird) der entsprechende Wert zugewiesen werden und die Methode true zurückgeben. Wenn die Bedingung nicht erfüllt ist, muss die Methode false zurückgegeben werden. Die Basisklasse CExpertSignal hat keinen eingebauten Algorithmus für die Erzeugung eines Signals einer Short-Positionsschließung, daher gibt die Basisklassenmethode immer false zurück. 1.4. Methoden zur Überprüfung des Signals der Positionsumkehr: Die Methode CheckReverseLong erzeugt ein Signal der Umkehrung einer Langposition, das die Stornierungsstufe und die Stufen der Platzierung von Schutzaufträgen definiert. Es wird von einem Experten aufgerufen, um festzustellen, ob es notwendig ist, eine Longposition umzukehren. Das Verfahren muss überschrieben werden, wenn erwartet wird, dass ein Signal einer Langpositionsumkehr erzeugt wird. Die Methode muss den Algorithmus zur Überprüfung des Zustands der Longpositionsumkehr implementieren. Wenn die Bedingung erfüllt ist, müssen den Variablen price, sl, tp und expiration (Referenzen, die als Parameter übergeben werden) entsprechende Werte zugewiesen werden und die Methode true zurückgeben. Wenn die Bedingung nicht erfüllt ist, muss die Methode false zurückgegeben werden. In der CExpertSignal-Basisklasse ist der folgende Algorithmus zur Erzeugung eines Long-Position-Umkehrsignals implementiert: Prüfung eines Signals, um eine Long-Position zu schließen. Prüfung auf ein Signal, um eine kurze Position zu öffnen. Wenn beide Signale aktiv sind (die Bedingungen erfüllt sind) und die geschlossenen und offenen Preise übereinstimmen, werden die Variablen price, sl, tp und expiration (Referenzen, die als Parameter übergeben werden) die entsprechenden Werte zugewiesen und die Methode true zurückgegeben. Wenn die Bedingung nicht erfüllt ist, gibt die Methode false zurück. Die CheckReverseShort-Methode generiert ein Signal der Umkehrung einer Short-Position, wobei die Umkehrstufe und die Ebenen der Platzierung der Schutzanordnungen definiert sind. Es wird von einem Experten aufgerufen, um festzustellen, ob es notwendig ist, eine Short-Position umzukehren. Das Verfahren muss überschrieben werden, wenn erwartet wird, dass ein Signal einer Langpositionsumkehr gemäß dem Algorithmus erzeugt wird, der sich von dem unterscheidet, der in der Basisklasse implementiert ist. Die Methode muss den Algorithmus zur Überprüfung des Zustands der Kurzpositionsumkehr implementieren. Wenn die Bedingung erfüllt ist, müssen den Variablen price, sl, tp und expiration (Referenzen, die als Parameter übergeben werden) entsprechende Werte zugewiesen werden und die Methode true zurückgeben. Wenn die Bedingung nicht erfüllt ist, muss die Methode false zurückgegeben werden. In der CExpertSignal-Basisklasse ist der folgende Algorithmus zur Erzeugung eines Short-Positionsumkehrsignals implementiert: Prüfung eines Signals, um eine Short-Position zu schließen. Prüfung auf ein Signal, um eine lange Position zu öffnen. Wenn beide Signale aktiv sind (die Bedingungen erfüllt sind) und die geschlossenen und offenen Preise übereinstimmen, werden die Variablen price, sl, tp und expiration (Referenzen, die als Parameter übergeben werden) die entsprechenden Werte zugewiesen und die Methode true zurückgegeben. Wenn die Bedingung nicht erfüllt ist, gibt die Methode false zurück. 1.5. Methoden zur Überprüfung des Signals einer anstehenden Auftragsänderung: Die CheckTrailingOrderLong () - Methode generiert das Signal der Änderung einer ausstehenden Bestellposition und definiert einen neuen Auftragspreis. Es wird von einem Experten aufgerufen, um festzustellen, ob es notwendig ist, einen ausstehenden Kaufauftrag zu ändern. Die Methode muss überschrieben werden, wenn erwartet wird, dass ein Änderungssignal einer anstehenden Bestellanforderung generiert wird. Die Methode muss den Algorithmus für die Überprüfung der Bedingung der Änderung einer anhängigen Bestellung zu implementieren. Wenn die Bedingung erfüllt ist, muss dem Variablenpreis (der Referenz, der als Parameter übergeben wird) der entsprechende Wert zugewiesen werden und die Methode true zurückgeben. Wenn die Bedingung nicht erfüllt ist, muss die Methode false zurückgegeben werden. Die Basisklasse CExpertSignal verfügt über keinen eingebauten Algorithmus zur Erzeugung eines Modifizierungssignals für eine anstehende Bestellung. Daher gibt die Basisklassenmethode immer false zurück. Die CheckTrailingOrderShort () - Methode generiert das Signal der Änderung eines ausstehenden Verkaufsauftrags und definiert einen neuen Auftragspreis. Es wird von einem Experten aufgerufen, um festzustellen, ob es notwendig ist, eine ausstehende Verkaufsauftrag zu ändern. Die Methode muss überschrieben werden, wenn erwartet wird, dass ein Signal zur Änderung einer ausstehenden Verkaufsreihenfolge generiert wird. Die Methode muss den Algorithmus implementieren, um den Zustand der Änderung einer ausstehenden Verkaufsorder zu überprüfen. Wenn die Bedingung erfüllt ist, muss dem Variablenpreis (der Referenz, der als Parameter übergeben wird) der entsprechende Wert zugewiesen werden und die Methode true zurückgeben. Wenn die Bedingung nicht erfüllt ist, muss die Methode false zurückgegeben werden. Die Basisklasse CExpertSignal verfügt über keinen eingebauten Algorithmus zur Erzeugung eines Modifizierungssignals für eine ausstehende Verkaufsreihenfolge. Daher gibt die Basisklassenmethode immer false zurück. 2. Entwickeln Sie Ihren eigenen Generator von Trading-Signalen Nachdem wir die Struktur der CExpertSignal-Basisklasse überprüft haben, können Sie damit beginnen, Ihre eigenen Trading-Signale zu generieren. Wie oben erwähnt, ist die CExpertSignal-Klasse eine Reihe von öffentlichen virtuellen Seilen - Methoden, mit denen der Experte kann die Meinung des Handelssignals Generator über den Markteintritt in die eine oder andere Richtung kennen. Daher ist es unser oberstes Ziel, eine eigene Klasse von Trading-Signalen zu erzeugen, die aus der Klasse CExpertSignal abgeleitet wird und die entsprechenden virtuellen Methoden überschreibt und die erforderlichen Algorithmen implementiert. Unser zweites Problem (das ist nicht weniger wichtig) - um unsere Klasse für den MQL5 Wizard sichtbar zu machen. Aber zuerst Dinge zuerst. 2.1. Erstellen der Klasse des Trading-Signalgenerators Zuerst erstellen wir (z. B. mit demselben MQL5-Wizard) eine Include-Datei mit der mqh-Erweiterung. Wählen Sie im Menü Datei die Option Erstellen (oder drücken Sie die Tastenkombination Strg) und geben Sie die Erstellung einer enthaltenen Datei an: Abbildung 2. Erstellen einer Include-Datei mithilfe des MQL5-Assistenten Es sollte beachtet werden, dass die Datei dann vom MQL5-Assistenten als erkannt wird Ein Signalgenerator, sollte es im Ordner IncludeExpertSignal erstellt werden. Um nicht in Standard-Bibliothek zu trash. Erstellen Sie unseren eigenen Ordner IncludeExpertSignalMySignals, in dem wir die Datei SampleSignal. mqh erstellen und diese Parameter im MQL5-Assistenten angeben: Abbildung 3. Einstellen der Position der Include-Datei Als Ergebnis des MQL5-Assistenten haben wir folgendes Muster: Das Folgende ist nur manuell Arbeit. Entfernen Sie die unnötigen Teile und fügen Sie, was erforderlich ist (enthalten Datei ExpertSignal. mqh der Standardbibliothek und eine Klasse Beschreibung, die jetzt leer ist). Nun ist es notwendig, die Algorithmen zu wählen. Als Grundlage für unsere Trading-Signale Generator, nehmen wir die weit verbreitete Modell Preis kreuzt den gleitenden Durchschnitt. Aber wir machen noch eine Annahme: Nach Überschreiten des gleitenden Durchschnitts bewegt sich der Preis zurück und geht erst dann in die richtige Richtung. Denken Sie in unserer Datei nach. Im Allgemeinen, wenn Sie etwas schreiben, nicht auf die Kommentare knausern. Nach einiger Zeit, das Lesen eines sorgfältig kommentierten Code wird so bequem sein. Nun können wir definieren, welche Daten benötigt werden, um Entscheidungen über die Erzeugung von Handelssignalen zu treffen. In unserem Fall ist dies der offene Preis und der Schlusskurs der vorherigen Bar und der Wert des gleitenden Durchschnitts auf dem gleichen vorherigen Bar. Für den Zugriff auf diese Daten verwenden wir die Standardbibliothekenklassen CiOpen. CiClose und CiMA. Gut diskutieren Indikatoren und Zeiten später. In der Zwischenzeit können wir eine Liste der Einstellungen für unseren Generator definieren. Zuerst müssen wir den gleitenden Durchschnitt einrichten. Diese Parameter umfassen die Periode, die Verschiebung entlang der Zeitachse, die Mittelungsmethode und den Gegenstand der Mittelung. Zweitens müssen wir das Einstiegsniveau und das Niveau der Platzierung von Schutzanordnungen und die Laufzeit eines ausstehenden Auftrags festlegen, da wir mit ausstehenden Aufträgen arbeiten werden. Alle Einstellungen des Generators werden in geschützten Datenelementen der Klasse gespeichert. Der Zugriff auf die Einstellungen erfolgt durch entsprechende öffentliche Methoden. Wir können diese Änderungen in unserer Datei enthalten: Da wir geschützte Datenelemente verwenden, müssen wir einen Klassenkonstruktor hinzufügen. In dem wir diese Daten standardmäßig initialisieren. Um die Parameter zu überprüfen, können Sie die virtuelle Methode ValidationSettings entsprechend der Beschreibung der Basisklasse überschreiben. Beschreibung der Klasse: Implementierung der ValidationSettings () - Methode: Nun, wenn wir den Großteil der Vorbereitungsarbeiten abgeschlossen haben, sprechen Sie mehr über Indikatoren und Zeitschriften. Indikatoren und Zeitreihen sind die wichtigste Informationsquelle für die Entscheidungsfindung (Sie können sicherlich die Münze werfen, oder Phasen des Mondes, aber sie sind ziemlich schwer zu formalisieren). Wie wir bereits oben definiert haben, benötigen wir die folgenden Informationen: den offenen Preis der vorherigen Bar, den engen Preis der vorherigen Bar und den Wert des gleitenden Durchschnitts auf dem gleichen vorherigen Bar. Um Zugriff auf diese Daten zu erhalten, verwenden wir die folgenden Klassen der Standardbibliothek: CiOpen -, um auf den offenen Preis der vorherigen Leiste CiClose zuzugreifen, um auf den engen Preis der vorherigen Leiste CiMA zuzugreifen, um auf den Wert der Bibliothek zuzugreifen Gleitenden Durchschnitt auf dem vorherigen Balken. Sie können fragen: Warum verwenden Sie die Indikator oder timeseries, in einer Klasse gewickelt, um eine einzelne Zahl zu erhalten Es gibt eine verborgene Bedeutung, die wir jetzt zeigen werden. So verwenden Sie die Daten eines Indikators oder Zeitreihen Zuerst müssen wir ein Kennzeichen erstellen. Zweitens müssen wir die notwendige Datenmenge in einen Zwischenpuffer kopieren. Drittens müssen wir überprüfen, ob das Kopieren abgeschlossen ist. Erst nach diesen Schritten können Sie die Daten verwenden. Verwenden der Klassen der Standardbibliothek. Vermeiden Sie die Notwendigkeit, einen Indikator zu erstellen, sich um die Verfügbarkeit von Zwischenpuffern und um das Laden oder Freigeben eines Griffs zu kümmern. Das Objekt einer entsprechenden Klasse wird das für Sie tun. Alle erforderlichen Indikatoren werden von unserem Signalgenerator während der Initialisierungsphase erzeugt und alle Indikatoren mit dem notwendigen Zwischenpuffer versehen. Außerdem können Sie, nachdem Sie ein Indikator - oder Zeitserver-Objekt in der Auflistung (Objekt einer speziellen Klasse) hinzugefügt haben, die Relevanz der Daten beenden (die Daten werden vom Experten automatisch aktualisiert). Platzieren Sie die Objekte dieser Klassen in die geschützten Datenelemente. Für jedes Objekt erstellen wir eine Methode der Initialisierung und Datenzugriffsmethode. Ermöglicht die Überschreibung der virtuellen Methode InitIndicators (gemäß der Beschreibung der Basisklasse). Beschreibung der Klasse: Implementierung der Methoden InitIndicators, InitMA, InitOpen, InitClose: Alle Vorbereitungen sind abgeschlossen. Wie Sie sehen können, ist unsere Klasse deutlich gewachsen. Aber jetzt sind wir bereit, Trading-Signale zu generieren. Abbildung 4. Handelssignale für den Kurs, der den gleitenden Durchschnitt überschreitet Wir betrachten unsere Algorithmen nochmals genauer. 1. Das Kaufsignal erscheint, wenn folgende Voraussetzungen erfüllt sind: Der Bar-Preis ist niedriger als der Wert des gleitenden Durchschnitts, der Bar-Schlusskurs ist größer als der Wert des gleitenden Durchschnitts, der gleitende Durchschnitt Steigt. In diesem Fall bieten wir an, eine ausstehende Bestellung mit den von den Einstellungen definierten Parametern zu platzieren. Dazu überschreiben wir die virtuelle Methode CheckOpenLong und füllen sie mit der entsprechenden Funktion. 2. Das Verkaufssignal erscheint, wenn folgende Voraussetzungen erfüllt sind: Der Bar-offene Preis ist größer als der Wert des gleitenden Durchschnitts, der Bar-Schlusskurs liegt unter dem Wert des gleitenden Durchschnitts, dem gleitenden Durchschnitt nimmt ab. In diesem Fall bieten wir an, eine ausstehende Verkaufsorder mit den von den Einstellungen definierten Parametern zu platzieren. Dazu überschreiben wir die virtuelle Methode CheckOpenShort und füllen sie mit der entsprechenden Funktionalität. 3. Wir werden keine Signale erzeugen, um Positionen zu schließen. Lassen Sie die Positionen durch Stop LossTake Profit geschlossen werden. 4. Wir werden die Modifikation eines ausstehenden Auftrags entlang des gleitenden Durchschnitts in dem durch die Einstellungen angegebenen Abstand vorschlagen. Dazu überschreiben wir die virtuellen Methoden CheckTrailingOrderLong und CheckTrailingOrderShort. Füllen sie mit entsprechenden funktionalen. Beschreibung der Klasse: Implementierung der Methoden CheckOpenLong, CheckOpenShort, CheckTrailingOrderLong, CheckTrailingOrderShort: So haben wir das erste Problem gelöst. Der obige Code ist ein Quellcode der Klasse der Trading-Signale Generator, der unsere Hauptaufgabe erfüllt. 2.2. Vorbereiten einer Beschreibung der erzeugten Klasse der Handelssignale für den MQL5-Assistenten Wir lösen nun die Lösung des zweiten Problems. Unser Signal sollte vom Generator der Handelsstrategien MQL5 Wizard erkannt werden. Weve getan die erste notwendige Bedingung: weve stellte die Akte, wo es durch den MQL5 Wizard gefunden wird. Aber das ist nicht genug. Der MQL5-Assistent muss nicht nur die Datei finden, sondern auch erkennen. Dazu müssen wir dem ursprünglichen Text den Klassendeskriptor für den MQL5-Assistenten hinzufügen. Ein Klassendeskriptor ist ein Block von Kommentaren, die nach bestimmten Regeln zusammengesetzt sind. Betrachten wir diese Regeln. 1. Der Kommentarblock sollte mit folgenden Zeilen beginnen: 2. Die nächste Zeile ist ein Textdeskriptor (was wir im MQL5-Wizard bei der Auswahl des Signals sehen werden) im Format TitleltTextgt. Wenn der Text für eine Zeile zu groß ist, können Sie eine weitere Zeile hinzufügen (aber nicht mehr). In unserem Fall haben wir folgendes: 3. Dann kommt eine Zeile mit dem im Typ TypTypeType angegebenen Klassentyp. Das Feld ltTypegt muss den Signalwert haben (zusätzlich zu den Signalen kennt der MQL5-Wizard andere Klassenarten). 4. Die folgende Zeile im Format NameltNamegt ist der Kurzname des Signals (wird vom MQL5 Wizard zur Erzeugung der Namen der globalen Variablen des Experten verwendet). Wir erhalten folgendes: 5. Der Name einer Klasse ist ein wichtiges Element der Beschreibung. In der Zeile mit dem Format ClassltClassNamegt muss der Parameter ltClassNamegt mit dem Namen unserer Klasse übereinstimmen: 6. Wir füllen diese Zeile nicht aus, sondern müssen vorhanden sein (dies ist eine Verknüpfung zum Sprachreferenzabschnitt): 7. Weiter , Gibt es Beschreibungen der Signal-Setup-Parameter. Dies ist ein Satz von Zeilen (die Anzahl der Zeilen entspricht der Anzahl der Parameter). Das Format jeder Zeile lautet ParameterltNameOfMethodgt, ltTypeOfParametergt, ltDefaultValuegt. Hier ist unser Satz von Parametern: 8. Der Kommentar-Block sollte mit den folgenden Zeilen enden: Läßt den Deskriptor zum Quellcode hinzufügen. Nun, das ist alles. Das Signal ist betriebsbereit. Für den Generator Trading-Strategien MQL5 Wizard in der Lage sein, unser Signal zu verwenden, sollten wir neu starten MetaEditor (MQL5 Wizard scannt den Ordner IncludeExpert nur beim Booten). Nach dem Neustart von MetaEditor. Kann das erzeugte Modul der Handelssignale im MQL5-Assistenten verwendet werden: Abbildung 5. Der erzeugte Generator von Handelssignalen im MQL5-Assistenten Die im Abschnitt der Beschreibung der Parameter des Handelssignalgenerators angegebenen Eingabeparameter sind nun verfügbar: Abbildung 6 Eingabeparameter des erzeugten Generators von Handelssignalen im MQL5-Wizard Die besten Werte der Eingangsparameter der implementierten Handelsstrategie finden Sie mit dem Strategy Tester des MetaTrader 5 Terminals. Der Generator der Handelsstrategien des MQL5 Wizard vereinfacht das Testen von Handelsideen erheblich. Der Code des erzeugten Experten basiert auf den Klassen der Handelsstrategien der Standardbibliothek, die für die Erstellung bestimmter Implementierungen von Handelssignalklassen, Geld - und Risikomanagementklassen und Positionsträgerklassen verwendet werden. Der Artikel beschreibt, wie Sie Ihre eigene Klasse von Handelssignalen mit der Umsetzung von Signalen auf die Überquerung des Preises und den gleitenden Durchschnitt zu schreiben, und wie man es auf den Generator der Handelsstrategien des MQL5-Assistenten. Und beschreibt die Struktur und das Format der Beschreibung der generierten Klasse für den MQL5 Wizard. EA Generator amp EA Creator Erstellen Sie Ihren eigenen Expert Advisor ohne Programmierung EA Generator - Erläuterung EA Generator oder EA Creator ist eine einzigartige Software ohne Analoge. Der größte Vorteil dieser Software ist, dass sie auf einem neuronalen Netzwerk basiert, das die implizite Verbindung zu Währungsbewegungen aufzeigt, die durch Standardindikatoren vorhergesagt werden können. Ein weiterer wichtiger Vorteil dieses Tools ist, dass jeder erstellte Fachberater einzigartig ist. EA Generator ist eine neue revolutionäre automatisierte Handelstechnologie auf der Grundlage der neuesten Entwicklungen auf dem Gebiet der künstlichen Intelligenz. Es ist ein echter Durchbruch im automatischen Devisenhandel. Technische Indikatoren sind Ableitungen von Raten und ihre Signale verzögern sich relativ zum Preis. Deshalb ist es effektiver, Kerzen-Preis-Muster für mehr produktiven Handel verwenden diese Methode ist weithin bekannt und sehr erfolgreich eingesetzt. Um ihn zu nutzen, sollte ein Trader lernen, wie man charakteristische graphische Zahlen wählt und interpretiert, indem man die Historien der Finanzinstrumente für lange Zeitintervalle analysiert. Solches Lernen erfordert gutes Gedächtnis, Talent für visuelles assoziatives Denken und kann Jahre dauern. Dennoch erreichen einige Trader Erfolg in der Zeit und Handel erfolgreich und stabil, aber es ist fast unmöglich, ihre Handelssysteme in Form eines Algorithmus zu formalisieren. Es ist Intuition, die bei dieser Art von Handel, d. H. Versteckte unterbewusste Verarbeitung von Handelsinformationen und Lieferung nur des Endergebnisses von Bedeutung ist, so dass es für einen Händler sehr schwierig ist, den mentalen Prozess zu formulieren, der zu diesem Endergebnis führt. Um Probleme der Automatisierung solcher Handelssysteme zu lösen, bieten wir das Softwarepaket HLAIMAN - MakeEA MT4 an, das auf dem Einsatz moderner Methoden der maschinellen Erkennung von grafischen Bildern in Kombination mit neuronalen Netzwerktrainingalgorithmen basiert. Der Prozess der Generierung von Strategien (Handelsroboter) unter Verwendung der gegebenen Software wird im Terminal MetaTrader 4 durchgeführt. Ein Satz von Handelssignalen in Form von graphischen Objekten, die auf einem Preisdiagramm in einem Fenster des spezifischen Handelsinstruments platziert werden, ist Die Anfangsdaten für die Erzeugung. Das Erzeugungsprogramm liest automatisch Daten, verarbeitet sie und bildet einen entsprechenden neuronalen Netzwerkalgorithmus einer Handelsstrategie, die die gegebene Handelslogik implementiert und sie mit Mustern des aktuellen Preisplans koordiniert. Ein handelsübliches Robotermodul, das als Experten-Advisor-Datei gespeichert wird, ist ein eigenständiges Softwareprogramm, das auf der Plattform MT4 betriebsbereit ist. Sie können Ihren Fachberater testen, optimieren und zusätzlich trainieren, indem Sie nicht nur das ursprünglich gewählte Handelsinstrument, sondern auch alle anderen zusätzlichen Instrumente und Perioden nutzen. EA Generator ist ein nützliches und handliches Werkzeug für die unabhängige Entwicklung von automatisierten Forex Experten Beratung, die Ihnen den Handel mit Ihrer eigenen Strategie. Sie donrsquot haben, um eine einzige Kodierung Zeile zu schreiben, um einen professionellen Berater zu erstellen. Alles was Sie brauchen, ist zu verkaufen und oder kaufen Trades auf einem Diagramm eines ausgewählten Instruments und Zeitrahmen in Form von Standard-Grafik-Objekte ndash Pfeile. Pfeil hoch ist kaufen, Pfeil nach unten ist zu verkaufen. EA Generator Software schafft komplexe Algorithmen, die dazu beitragen, Ihre Strategie zum Leben in einem automatisierten Experten Advisor Dank dieser Software benötigen Sie donrsquot alle Programmierkenntnisse oder Mathe-Fähigkeiten oder müssen einen Programmierer bezahlen, um eine automatisierte Expertenberater entwickeln. Sie müssen nur Trades auf einer Karte platzieren, erhalten Experten-Berater und mit nur wenigen Klicks, wird diese professionelle Berater beginnen mit den Trading-Prinzipien, die ausschließlich von Ihnen entwickelt wurden. Die EA-Generator-Software verwendet die grafische Schnittstelle des MT4-Terminals. Das bedeutet, dass Sie die gesamte Bandbreite der grafischen Oberfläche von terminalrsquos verwenden können, um Ihre Trades zu platzieren. Sie können einem Diagramm zusätzliche Zeichen und Grafikobjekte hinzufügen, sowohl Standard - als auch Drittanbieterindikatoren verwenden. Whatrsquos mehr, können Sie EA-Generator-Software, um neue, profitable Strategien zu suchen und sie verwenden, um automatisierte Fachberater zu schaffen. Das EA-Generator-Software-Delivery-Set enthält einen Experten-Berater, der dazu beiträgt, automatisch Signale über die profitabelsten Trades auf einem Chart zu platzieren. Mit diesen Daten, um einen automatisierten Experte Advisor erstellen können, bringen Profit Neural Net Erklärung EA Generator Softwarekomponenten Programm kernel laquohlaim. exeraquo. Diese befindet sich im Ordner der EA-Generator-Software. MT4 laquoMakeSignalsraquo Fachberater. Diese befindet sich im Terminalordner, wenn die EA-Generator-Software installiert ist. Sie dient zum automatischen Erstellen von Handelssignalen auf einem Instrument oder Zeitrahmen. LaquoMakeAlgorithmraquo-Skript. Diese befindet sich auch im Terminalordner, wenn die EA-Generator-Software installiert ist. Es wird verwendet, um automatisierte Forex Experten Berater bei der Eingabe von Handels-Signale auf einem Instrument oder Zeitrahmen-Diagramm zu erstellen. Secure EA Generator No-Risk Acceptance Form EA Generator - 1 Lizenz 30 Tag-Geld-Zurück-Garantie 247 Kundensupport Lifetime Free UpdatesMetaTrader 5 - Beispiele Trading Signal Generator basierend auf einem benutzerdefinierten Indikator Einführung In diesem Artikel werde ich Ihnen sagen, wie Sie eine Trading-Signalgenerator basierend auf einem benutzerdefinierten Indikator. Sie werden sehen, wie Sie Ihr eigenes Handelsmodell für ein benutzerdefiniertes Kennzeichen schreiben können. Ich werde auch erklären, der Zweck des Modells 0 und warum ISPATTERNUSAGE (0) - Typ Strukturen in der Trading-Signal-Modul verwendet werden. Der Artikel wird zwei Arten von Code: den Code, den wir zu ändern und den Code, den wir bereits geändert haben. Der modifizierte Code wird wie folgt hervorgehoben: Der modifizierte Code ist der Code, der kopiert und in den Handelssignalgenerator eingefügt werden soll. Ich hoffe, Sie verstehen den Code besser durch den Einsatz von Hervorhebung. 1. Kundenspezifische Anzeige Ich bin sicher, dass es einen Indikator geben muss, der nicht in der Standardlieferung enthalten ist, die Sie für eine lange Zeit verwenden möchten. Und das ist der Indikator, auf dem Sie ein Handelssignal-Modul aufbauen möchten. Ich werde die MACD-Anzeige aus der Standardauslieferung als solches Indikator verwenden. Die Position des Indikators ist wie folgt. MQL5IndicatorsExamplesMACD. mq5. Jeder Indikator kann ein oder mehrere Marktmodelle beschreiben. Ein Marktmodell ist eine bestimmte Kombination aus Indikatorwert und Preiswert. Die für die MACD-Anzeige zur Verfügung stehenden Modelle sind Umkehrung, Überkreuzung der Haupt - und der Signalleitung, Überkreuzung des Nullpegels, Divergenz und doppelte Divergenz. 1.1 Neues Anzeigemodell. Wir gehen davon aus, dass wir mit den gegebenen Marktmodellen für den Indikator nicht zufrieden sind und unser eigenes Indikatormodell einführen wollen. Die neue Indikatormodellbeschreibung: Wenn der MACD-Indikator unter der Nulllinie liegt und seine Werte steigen, können wir weiteres Wachstum erwarten und eine Long-Position eröffnen: Abbildung 1: Modell eines prospektiven Indikatorwachstums, wenn der MACD-Indikator über der Nulllinie liegt Deren Werte abnehmen, können wir mit einer weiteren Abnahme rechnen und eine Short-Position eröffnen: Abbildung 2: Modell des prospektiven Indikatorabfalls So haben wir uns für den Custom Indicator entschieden und kommen mit dem neuen Handelsmodell für den Indikator und dessen Beschreibung auf. Lassen Sie uns mit dem Schreiben des Codes. 2. Schreiben des Trading-Signalgenerators auf Basis unseres Custom Indicators Unser Generator ist der Nachkomme der CExpertSignal-Basisklasse. Die CExpertSignal-Basisklasse ist eine Klasse zum Erstellen von Handelssignalgeneratoren. Die CExpertSignal-Klasse enthält eine Reihe von öffentlichen (d. h. extern zugänglichen) Methoden, die es einem Expert Advisor ermöglichen, die Anzeige des Handelssignalgenerators in Bezug auf die Richtung des Markteintritts zu sehen. Da wir an unserem eigenen Handelssignalgenerator arbeiten, sollte er aus der Klasse CExpertSignal geerbt werden, wobei die relevanten virtuellen Methoden neu definiert werden (mit dem entsprechenden Code gefüllt). 3. Erstellen der Klasse des Handelssignalgenerators Der Handelssignalgenerator sollte sich standardmäßig befinden. MQL5IncludeExpertSignal-Ordner. Nicht zu überladen. Signalordner der Standardbibliothek mit zu vielen Informationen, können Sie einen neuen Ordner unter der. Expert-Ordner und nennen es MySignals. Abbildung 3. Erstellen des neuen MySignals-Ordners Als nächstes erstellen wir eine Include-Datei mit dem MQL5-Assistenten. Wählen Sie in MetaEditor im Menü Datei die Option Neu aus, und klicken Sie dann auf Include File (.mqh). Abbildung 4. MQL5-Assistent. Erstellen einer Include-Datei Der Name der Klasse des Signalgenerators ist MySignal. Es befindet sich unter IncludeExpertMySignalsMySignal. Geben Sie Folgendes an: Abbildung 5. MQL5-Assistent. Speicherort der Include-Datei Nach dem Klicken auf Finish erzeugt der MQL5-Assistent eine leere Vorlage. Von diesem Moment an werden wir alles manuell tun und Daten kopieren. Ich möchte Sie darauf aufmerksam machen, dass intern alle Signale der Standardbibliothek nahezu identisch sind. Sie unterscheiden sich nur in Algorithmen, die verwendet werden, um Handelsmodelle zu bestimmen. Daher können Sie jede Datei aus dem IncludeExpertSignal-Ordner, kopieren Sie den Inhalt und fügen Sie ihn in Ihre Vorlage. Sie können dann mit der Bearbeitung der resultierenden Datei des Trading-Signalgenerators beginnen. 4. Beschreibung der Klasse des Trading-Signal-Generators Als Vorlage habe ich die IncludeExpertSignalSignalEnvelopes. mqh-Datei, von der ich alles kopiert, aber die Header: und fügte sie alle in unsere fast leere MySignal. mqh-Vorlage. Dies ist, was ich bekam: Hier geben wir einen Befehl an den Präprozessor, die CExpertSignal-Basisklasse für die Schaffung von Trading-Signal-Generatoren in unserer Vorlage enthalten. Wir bearbeiten die Vorlage weiter. Um sicherzustellen, dass unsere Vorlage später im MQL5-Assistenten sichtbar ist, müssen wir die Beschreibung unserer Klasse ändern: Also, sehen wir mal. Die Zeile zeigt den Namen unserer Signalklasse an, unter der sie im MQL5 Wizard angezeigt wird. Wir werden diesen Namen so ändern: gibt den Namen für die Beschreibung der Variablen unserer Handelssignalklasse an. Diese Beschreibung wird vom MQL5 Wizard verwendet. Diese Zeile kann wie folgt geändert werden: Diesen Parameter geben wir denselben Namen: Die folgende Zeile setzt den Klassennamen: Läßt diesen Parameter umbenennen: Den nächsten Parameter wie folgt belassen: Die folgende Parametergruppe ist verantwortlich für die Beschreibung der Parameter des Indikators, der dem Handelssignalgenerator zugrunde liegt. Wie ich bereits erwähnt habe, werde ich verwenden. MQL5IndicatorsExamplesMACD. mq5 als benutzerdefinierte Anzeige. Es hat folgende Parameter: 4.1 Parameter Beschreibung Block Bitte beachten Sie, dass die oben genannten Parameter nur für MACD. mq5 gelten. Ihre benutzerdefinierte Anzeige hat möglicherweise völlig andere Parameter. Dabei geht es vor allem darum, die Indikatorparameter mit ihren Beschreibungen in der Handelssignalklasse abzustimmen. Der Parameterbeschreibungsblock in der Handelssignalklasse für das betreffende benutzerdefinierte Kennzeichen MACD. mq5. Ist wie folgt: Schauen Sie sich an, wie die Parameter im Indikator nun mit den Beschreibungen im Klassenbeschreibungsblock übereinstimmen. Nach allen Modifikationen wird der Beschreibungsblock unserer Klasse folgendermaßen aussehen: Bei der Programmierung wird es als bewährte Methode angesehen, Kommentare zu den Code-Code zu geben, wodurch es leichter wird, den Code zu verstehen, wenn er zurückkehrt, nachdem er einige Zeit verstrichen ist . So werden wir den folgenden Block modifizieren: um die Beschreibung unserer Klasse anzupassen: Um Verwechslungen zu vermeiden, müssen wir alle CSignalEnvelopes-Werte durch CSignalMyCustInd ersetzen. Abbildung 6. Ersetzen von CSignalEnvelopes durch CSignalMyCustInd Hier nun einige theoretische Aspekte. 5. Die CiCustom-Klasse Wir benötigen die CiCustom-Klasse, um weiter an dem Code der Klasse der Handelsindikatoren des benutzerdefinierten Indikators zu arbeiten. Die CiCustom-Klasse wurde speziell für die Arbeit mit benutzerdefinierten Indikatoren entwickelt. Die CiCustom-Klasse bietet die Erstellung, Einrichtung und den Zugriff auf benutzerdefinierte Indikatordaten. 6. Die Klassifizierungsklasse. CIndikatoren ist die Klasse für das Sammeln von Instanzen von Zeitreihen und technischen Indikatorklassen. Die CIndicators-Klasse bietet die Erstellung, Speicherung und Verwaltung (Data Synchronisation, Handhabung und Speicherverwaltung) von Instanzen der technischen Indikatorklassen. Wir interessieren uns besonders für die Klasse CIndicators aufgrund der Create-Methode. This method creates an indicator of a specified type with specified parameters. 7. Continue Writing Our Trading Signal Class The next code block we are going to modify (lines 28-42) is as follows: 8. Creation of the Custom Indicator in the Trading Signal Generator Take a look at the code block provided above. The line declares an object - the CiEnvelopes class indicator. CiEnvelopes is the class for working with the technical indicator from the Standard Library. The CiEnvelopes class was created based on the technical indicator from the Standard Library. However, we are writing the code of the generator based on our custom indicator. Therefore there is no ready made class for our or your custom indicator in the Standard Library. What we can do is use the CiCustom class. Lets declare our indicator as the CiCustom class: 8.1 Four Variables Do you remember the parameter description block in the class There were three parameters in that description. In the protected area of our generator class, we will now declare four variables for passing the values to our four parameters: The following code block: This code declares variables that give weight to trading models of our trading signal generator. Lets replace the block of weights with the following code: 9. Model 0 As you remember, at the beginning of the article it was decided to describe only one new model that will be generated by our trading signal generator. However, in the above code I specified two market models (model 0 and model 1). Here, model 0 is an important auxiliary model. It is required when trading with pending orders. When applied, model 0 ensures that pending orders move together with the price. Lets take a look at our trading signal generator and the following conditions: the MACD custom indicator is below the zero line, and its values are increasing, we are trading with pending orders set 50 points from the bar opening price (four-digit price value). These conditions perfectly describe our trading model. Here is how things will be moving: Our trading model conditions will be checked upon appearing of the bar no. 1. What we have: MACD is below the zero line, yet it is gaining momentum. This corresponds to the buy signal. Therefore, we place a pending Buy Stop order: Upon appearing of the next bar no. 2, the condition check finds that MACD is below zero and is falling. According to our trading model, there are currently no conditions for buying or selling. However, note: as per the CExpertSignal class logic, since there are no conditions either for buying or selling, all pending orders should be DELETED. In this case, if the price goes up suddenly and dramatically, we will miss the opportunity to enter the market long to our advantage as there will be no pending order. This is where the auxiliary model 0 appears to be very useful. The auxiliary model 0 will apply, provided that: the MACD custom indicator is below the zero line. So we can place a pending Buy Stop order. Since we place an order 50 points from the bar opening price, we, in fact, simply move the pending Buy Stop order according to the price movement: Thus, by using the auxiliary model 0 we get the opportunity to move a pending order as per the price movement. 10. Further Modifications of the Template Code The next code block to be modified is as follows: In this block, we declare methods of setting adjustable parameters, methods of adjusting weights of trading models, method of verification of settings, indicator initialization method and methods of checking if the market models are generated. Taking into consideration that we have declared four variables in adjustable parameters, the block of methods for setting the parameters will be as follows: The next code fragment will remain unchanged: The next code block to be modified is as follows: This block will be heavily modified. Please note that I am using the GetData method of the CIndicator class. Names of the called methods will be provided directly in the code: The next code block is the constructor. In the constructor, we will change the names of the variables. Further, we will use only two series: USESERIESHIGHUSESERIESLOW Lets modify the ValidationSettings method of our class. In the checking block, we check the main condition for the given custom indicator: mperiodfastgtmperiodslow The next block deals with creation of indicators: As applied to our custom indicator: The following block is the indicator initialization block: First, we add an object to the collection. We then set the parameters of our indicator and create the custom indicator using the Create method of the CIndicators class: The next block checks buying conditions: According to our model 0 implementation. two models are checked: The following block checks selling conditions: According to our model 0 implementation. two models are checked: Conclusion I hope this article has helped you to understand how you can create a trading signal generator based on your custom indicator.
No comments:
Post a Comment