Ein visueller Strategieentwickler Erstellen eines Handelsroboters ohne zu programmieren

30 Juli 2018, 08:11
Andrey Barinov
0
399

Inhalt


Einführung

Algotrading und die Möglichkeit, Handelsideen auf historische Daten im Strategie-Tester zu überprüfen, sind die wichtigsten Funktionen der Handelsplattform MetaTrader5.

Um die Handelsstrategie jedoch im automatischen Handelsmodus auf einem Echtzeit-Chart oder in einem Strategie-Tester verwenden zu können, muss sie programmiert und in eine ausführbare Datei (Expert Advisor-Datei - EA) umgewandelt werden. Nicht jeder Händler hat Programmierkenntnisse oder Ressourcen, um diese zu beherrschen.

Dieser Artikel stellt eine Lösung für dieses Problem vor - die Mission eines automatisierten visuellen Strategieentwicklers. Mit seiner Hilfe kann jeder seinen Handel automatisieren und die Strategie auf historische Daten überprüfen, ohne eine einzige Zeile Code selber schreiben zu müssen. Links zu den kostenlosen Versionen des Programms gibt es weiter unten. Es gibt 5 fertige kostenlose Expert Advisors, die auf beliebten Strategien basieren. Sie sind in Form von Vorlagen gestaltet und können als Grundlage für andere Strategien verwendet werden.

For MetaTrader4: Mission Automate Demo MT4

For MetaTrader5: Mission Automate Demo MT5

Obwohl es das Wort Demo im Namen der kostenlosen Version gibt, hat es alle Funktionen der Vollversion und enthält keine wesentlichen Einschränkungen. Sie hat nur wenige "Unannehmlichkeiten". Links zu Vollversionen des Programms gibt es in den Beschreibungen der kostenlosen Versionen auf deren Seiten im Markt.

Dieser visuelle Strategieentwickler ist für "Nicht-Programmierer" gedacht und kann für einen breiten Anwenderkreis nützlich sein. Jeder Händler kann voll funktionsfähige Handelsroboter erstellen, nachdem er ein wenig Zeit damit verbracht hat, sie kennenzulernen und die Prinzipien seiner Arbeit zu beherrschen.

Dieser Artikel bietet einen Überblick über die Möglichkeiten des vorgestellten Strategieentwicklers am Beispiel der Erstellung von realen Handelsrobotern.


Eigenschaften

Die Mission der Automatisierung ermöglicht es jedem, Ideen in fertige Handelsroboter zu verwandeln. Eine intuitive grafische Oberfläche mit "drag and drop" Technologie macht den Prozess einfach und angenehm. Das Erstellen eines Expert Advisors sieht aus wie das Zusammensetzen eines Schemas aus den vorhandenen Blöcken (Elementen) und deren Verknüpfung mit logischen Verknüpfungen. Wenn das Schema erstellt ist, kann es sofort live ausgeführt oder automatisch in MQL5-Code für die weitere Verwendung im Strategie-Tester oder in Echtzeit-Diagrammen konvertiert werden.

Ein Teil der verfügbaren Elemente ist unten aufgeführt.

  • Alle Standardindikatoren der MetaTrader-Plattform.
  • Benutzerdefinierte Indikatoren.
  • Handel (Handelsgruppe) Öffnen / Schließen / Ändern.
  • Setzen / Stornieren / Ändern einer Pending Order (Auftragsgruppe).
  • Handelsmanagement: Volumensberechnung, Breakeven, Trailing Stop.
  • Zugriff auf die Handelshistorie (Informationen über geschlossene Positionen).
  • Elemente, um verschiedene Informationen über die Preisentwicklung zu erhalten.
  • Daten der letzten Ticks für verschiedene Instrumente.
  • Verschiedene arithmetische Operationen und Preistransformationen.
  • Logische Operationen.
  • Variablen / Schalter.
  • Zeit bezogene Operationen.
  • Verschiedene Informationen über Handelsinstrumente.
  • Informationen über das Konto (Saldo, Eigenkapital, freie Marge, etc.).
  • Benachrichtigungen: Alert, Log, Push und Kommentar zum Chart.
  • Elemente zur Erstellung von Eingabeparametern des Expert Advisors, die in seinen Einstellungen sichtbar sind und im Strategie-Tester optimiert werden können.

Ein großer Satz von Elementen bildet eine große Anzahl von möglichen Kombinationen, die es jedem ermöglichen, eine Vielzahl von Arten von Handelsrobotern und Hilfsprogrammen zu erstellen. Nachfolgend gibt es eine unvollständige Liste dessen, was mit Mission der automatisiert Strategiebildung erstellt werden kann.

  • Expert Advisor basierend auf technischen Indikatoren.
  • Preisaktion Strategien.
  • Kerzenmuster EAs.
  • Strategien basierend auf Unterstützungs- und Widerstandsebenen.
  • Verschiedene Typen von Grid-Systemen.
  • Systeme mit Martingale Methoden.
  • Hilfsmittel zum Handelsmanagement.
  • Systeme für Alarme und Benachrichtigungen.
  • Hilfsmittel zum Geldmanagement.

Von diesem Strategieentwickler und in diesem Artikel werden die Wörter "Trade" und "Position" synonym verwendet. Ein Trade / Position kann die aktuelle, eine noch nicht geschlossene betreffen, oder eine aus der History, also eine, die bereits geschlossen wurde. Das Wort "Auftrag" im Text sollte als "Pending-Order" gelesen werden. Ein Auftrag kann später zu einer Position werden oder er kann storniert und in die Historie verschoben werden.


Übersicht

Der Prozess der Umsetzung einer Idee in einen Handelsroboter besteht in der Regel aus mehreren Schritten.

  1. Ausarbeiten einer Handelsstrategie im Kopf eines Händlers - eine kreative Arbeit.
  2. Reformulierung der Strategie als Regelwerk "auf dem Papier" - die Formalisierung der Strategie oder die Erstellung der EA-Spezifikation.
  3. Umwandlung dieser Regeln in Maschinencode und die ausführbare Datei des Handelsroboters - Programmierung des Expert Advisors.

Die meisten Händler können die Schritte #1 und #2 alleine erfolgreich durchführen. Das in diesem Artikel beschriebene Produkt ermöglicht die Durchführung von Schritt 3, der den algorithmischen Handel für jeden Händler verfügbar macht.

Die Mission des automatisierten Strategieentwicklers ermöglicht es Ihnen, Ihre eigenen Strategien von Grund auf neu zu erstellen oder aus einer der vorgefertigten Vorlagen / Beispiele, die viel einfacher ist.

Das Video unten zeigt den gesamten Prozess der Erstellung eines neuen EA von Grund auf. In diesem Beispiel wird eine klassische Strategie basierend auf zwei gleitenden Durchschnitten erstellt.

Das Video zeigt die folgenden Schritte (sie werden später näher beschrieben).
  • Zusammenstellung eines Schemas aus Elementen.
  • Verbindungselemente mit logischen Verknüpfungen.
  • Einstellen der Parameter von Elementen und Links.
  • Automatische Generierung einer .mq5 EA-Datei.
  • Kompilieren des Codes und Abrufen der ausführbaren.ex5-Datei.
  • Ausführen und Testen des Expert Advisors im Strategie-Tester.



Strategien werden aus Blöcken / Modulen zusammengesetzt. Diese Blöcke heißen Elemente.

Alle verfügbaren Elemente befinden sich auf der Symbolleiste der Elemente.

Elemente können mit logischen Links verbunden werden.

Häufig verwendete Kombinationen von Elementen und Links können als Snippets gespeichert werden.

Alle erstellten Snippets befinden sich auf der Symbolleiste der Snippets.

Elemente werden mit "drag and drop" verschoben.

Eine Gruppe von Elementen und Links bildet ein Schema.

Ein neues Schema kann mit einem Template erstellt werden.

Alle verfügbaren Vorlagen befinden sich auf der Symbolleiste derTemplates.

Übersicht


Ein neues Schema kann aus einer der verfügbaren Vorlagen oder komplett neu erstellt werden.

Um ein Schema aus einer Vorlage zu erstellen, muss die gewählte Vorlage des Panels in den Arbeitsbereich gezogen werden. Eine kurze Beschreibung der Vorlage erscheint nach einem Klick auf das Symbol.

Wenn das Schema erstellt wird, erscheint sein Symbol in der Symbolleiste der Schemata. Die Symbole der Schemata werden verwendet, um schnell auf mögliche Aktionen eines Schemas zuzugreifen. Das Bedienfeld des Schemas erscheint nach einem einfachen Klick auf das Symbol. Bei einem Doppelklick auf das Symbol wird das ausgewählte Schema in die Mitte des Bildschirms verschoben. Jedem Schema kann ein Name zugeordnet werden. Sie können das Schema frei im Arbeitsbereich verschieben.

Erstellen eines Schemas


Um dem Schema neue Elemente hinzuzufügen, sollten diese aus der Elementleiste auf das Schema gezogen werden.

Wenn ein Element aus der Elementleiste in einen sauberen Raum gezogen wird, wird ein neues Schema erstellt, das nur dieses Element enthält. Jedem Element kann ein Name zugeordnet werden.

Nach dem Klicken auf ein Element erscheint dessen Einstellungsfenster. Sie können die Parameterwerte des Elements ändern oder als Standardwerte definieren. Neben dem Setzen von Parametern stehen auch Optionen zum Klonen, Löschen, Zurücksetzen von Einstellungen und der Zugriff auf eine kurze Beschreibung eines Elements und seiner Parameter zur Verfügung.

Elemente

Nach dem Anklicken eines Elements in der Elementleiste öffnet sich dessen Einstellungsfenster. Wenn in diesem Fall die Parameter für ein Element aus dem Panel geändert werden, werden sie später für alle neuen Kopien dieses Elements verwendet.

Die Elemente lassen sich in drei Gruppen einteilen.

  1. Elemente zur Durchführung bestimmter Aktionen (Eröffnung neuer Positionen, Benachrichtigungen, Änderung bestehender Positionen, usw.), wenn bestimmte Bedingungen auftreten. Die Bedingung, die notwendig ist, um eine Aktion auszuführen, heißt Trigger.
  2. Objekt-Elemente (Tick, Balken, Symbol, Position, Pending Order, Indikator). Zuerst müssen Sie ein Objekt anlegen und seine Parameter konfigurieren, und erst dann können Sie Informationen darüber erhalten.
  3. Elemente zur Gewinnung von Informationen über das Objekt (aktuelle Preise, Informationen über den Kontostand, Handelshistorie, etc.).
Elementparameter und Objektdaten können von verschiedenen Typen sein. Beispielsweise haben Währungskurse den Typ einer Dezimalzahl, und der Positionskommentar wird als String angegeben. Die Nummer des Balkens hat den Typ einer ganzen Zahl, und der Moment seiner Öffnung hat den Typ Zeit.

Elemente können mit logischen Links verbunden werden. Ein Link überträgt Daten von einem Element zum anderen.

Nur Elemente und Parameter gleicher Art oder Typen, die ohne Datenverlust ineinander übergehen, können mit Links verbunden werden.

Um einen neuen Link zu erstellen, "ziehen" Sie den Rand des Elements. Nach einem Klick auf den Link erscheint ein Fenster mit den Einstellungen.

Verbindungselemente


Das obige Bild zeigt, wie das Hilfsprogramm aussehen würde, das auf einen neuen Balken hinweist.

Links können nur Elemente und Parameter des gleichen Typs oder der Typen verbinden, die ohne Datenverlust in beide Richtungen übertragen werden können.

Einige Aktionen können auf eine Gruppe von ausgewählten Elementen angewendet werden.

Um eine Gruppe von Elementen zu erstellen, wählen Sie den Abschnitt des Schemas, indem Sie die Taste Ctrl gedrückt halten. Alle Elemente, die in diese Zone fallen, werden ausgewählt. Außerdem wird das Element hervorgehoben, das Sie es anklicken, während Sie gleichzeitig die Taste Ctrl gedrückt halten.

Nach dem Anklicken eines Elements in der ausgewählten Gruppe erscheint das Einstellungsfenster der Gruppe. Die ausgewählte Gruppe kann geklont, gelöscht oder in einer Datei gespeichert werden. Zusätzlich können Sie ein Snippet anlegen, das aus Elementen der Gruppe besteht. Ein neues Snippet erscheint auf der Snippets-Leiste und steht zum Hinzufügen in die neuen Schemata zur Verfügung. Mit der Symbolleiste der Snippets können Sie die Parameter eines beliebigen Snippets ändern.

Snippets


Die anderen Möglichkeiten des Programms werden mit dem beispielhaften Erstellen von Expert Advisors aufgezeigt.


Beispiel #1: Expert Advisor "Kreuzen gleitender Durchschnitte"

Betrachten wir eine klassische Handelsstrategie, die auf zwei gleitenden Durchschnitten basiert.

Die Strategie kann wie folgt kurz beschrieben werden.

Wir kaufen, wenn der schnelle gleitende Durchschnitt (MA) den langsamen MA nach oben kreuzt. Wir verkaufen, wenn der schnelle MA den langsamen nach unten kreuzt. Wir schließen Positionen, wenn das entgegengesetzte Signal auftritt, sowie durch Stop Loss und Take Profit.

Nun lassen Sie uns die Strategie in einer formaleren Art und Weise als eine Reihe von Regeln / Bedingungen beschreiben.

  • Gleitende Durchschnitte sollten mit den Schlusskursen der Balken errechnet werden. Wir arbeiten nur mit den vollständigen Balken. Alle Handelsaktionen werden beim Öffnen des Balkens nach dem Erscheinen des Signals durchgeführt.
  • Die Periodenlängen der schnellen und langsamen Durchschnitte sollten in den Eingangsparametern des EA einstellbar sein.
  • Ein Kaufsignal (und das Signal eine Verkaufsposition zu schließen) ist der Zustand, in dem der schnelle MA des vorherigen Balkens niedriger war als der langsame und während des aktuellen Balkens sich unter den langsameren bewegte.
  • Ein Verkaufssignal (und das Signal eine Kaufposition zu schließen) ist der Zustand, in dem der schnelle MA des vorherigen Balkens höher war als der langsame und während des aktuellen Balkens sich über den langsameren bewegte.
  • Es darf immer nur eine Position existieren.
  • Alle Positionen sollten eine feste Losgröße haben. Die Losgröße sollte in den Eingabeeinstellungen des EA einstellbar sein.
  • Die Werte von Stop Loss und Take Profit in Punkten müssen in den Eingabeparametern des EA einstellbar sein.
  • Das EA sollte nur mit dem Symbol des Diagramms funktionieren, auf dem es platziert ist. Der Zeitraum für die Berechnung der Indikatoren sollte dem Zeitraum des aktuellen Charts entsprechen.
  • Es sollte möglich sein, dass mehrere EAs auf demselben Konto mit einer eindeutigen Kennung, der Magicnummer, arbeiten können. Dieser Parameter muss in den Eingangseinstellungen des EA eingestellt werden.
  • Es sollte möglich sein, einen benutzerdefinierten Kommentar für die Positionen des Expert Advisors anzugeben.

Dieses Regelwerk ist gut genug, um als EA-Spezifikation zu dienen. Beginnen wir die Entwicklung dieses Handelsroboters mit dem visuellen Strategieentwickler.

Die Periodenlängen gleitender Durchschnitte sollten als Eingabeparameter des Expert Advisors angelegt werden.

Verwenden Sie dazu eines der Elemente Input. Es gibt ein separates Element für verschiedene Arten von Eingabeparametern.

Die Periodenlänge des Indikators ist ganzzahlig. Wir werden das entsprechende Element verwenden. Lassen Sie uns ein neues Schema erstellen und zwei solche Elemente hinzufügen, ihnen Namen geben und ihre Werte anpassen. Für den schnelle MA setzen wir den Standardwert auf 14 und für den langsame MA auf 28. Diese Werte können im Strategie-Tester weiter optimiert werden.

MAs Periodenlänge


Unsere Strategie verwendet einen Standardindikator, jedoch mit zwei unterschiedlichen Periodenlängen.

Wir benötigen zwei Elemente namens Moving Average.

Fügen wir sie unserem Schema hinzu und verbinden die Elemente der Periodenlängen der Indikatoren mit den Parametern Periodenlängn der Indikatoren. Danach wird das Schema so aussehen:

Indikatoren


Standardmäßig verwenden Indikatoren das Symbol und den Zeitrahmen des aktuellen Charts. Das ist genau das, was wir brauchen. Der Zeitraum für die Berechnung der Indikatoren wird den entsprechenden Elementen entnommen.

Um nun die Bedingungen für Kauf-/Verkaufssignale zu bestimmen, müssen wir für jeden Indikator zwei Werte erhalten - den des vorherigen Balkens und den des aktuellen.

Um den Indikatorwert zu erhalten, sollte das Element Indikatorwert verwendet werden. Fügen wir 4 solcher Elemente zu unserem Schema hinzu und erstellen die entsprechenden Links.

Die Balken sind von der Gegenwart bis in die Vergangenheit nummeriert. Der aktuelle unvollständige Balken hat die Nummer 0. Die Nummer 1 wird dem vorher gebildeten Balken zugeordnet, die Nummer 2 dem Balken davor und so weiter.

In unserer Strategie werden nur vollständige Balken verwendet. So verwenden wir für den aktuellen Balken den Wert = 1 und für den vorherigen Balken den Wert = 2. Für alle vier Elemente werden entsprechende Werte eingestellt.

Wert der MAs


Nun müssen wir die Werte der Indikatoren vergleichen und prüfen, ob die Eingabebedingungen erfüllt sind oder nicht.

Um Zahlen zu vergleichen, verwenden wir das Element Compare. Dieses Element gibt den Wert "true" zurück, wenn zwei Zahlen die angegebene Beziehung erfüllen, andernfalls "false". Fügen wir zwei solcher Elemente zu unserem Schema hinzu. In der ersten werden wir prüfen, ob währen des vorherigen Balkens der schnelle MA über der langsamen lag. Im zweiten Element prüfen wir, ob der schnelle MA während des aktuellen Balkens höher geworden ist als der langsame. Lassen Sie uns die entsprechenden Links erstellen und die Parameter für diese Vergleichselemente konfigurieren.

Wertevergleich


Das Kaufsignal entsteht, wenn gleichzeitig zwei Bedingungen erfüllt sind:

  • der schnelle MA war NICHT über der langsamen MA während des vorherigen Balkens
  • der schnelle MA stieg über den langsamen MA während des aktuellen Balkens

Um die gleichzeitige Erfüllung dieser Bedingungen zu überprüfen, verwenden wir das Element "logical AND". Dieses Element gibt den Wert "true" zurück, wenn ALLE Bedingungen erfüllt sind und den Wert "false", wenn mindestens eine davon nicht erfüllt ist.

Fügen wir dem Schema zwei solcher Elemente hinzu und verbinden Sie beide Vergleichselemente mit jedem von ihnen.

Dabei müssen wir einige der Links "umkehren". Das Vergleichselement liefert "true", wenn die schnelle MA höher war als die langsame MA während des vorherigen Balkens, aber wir müssen doch prüfen, ob er NICHT höher war. Deshalb werden wir den Ausgabewert umdrehen, indem wir die entsprechenden Links in den Parametern der Elemente anpassen. Umgekehrte Links werden mit roter Farbe auf dem Schema gezeichnet.



Fahren wir mit der Umsetzung der Handelsoperationen fort. Bevor wir eine neue Position eröffnen, müssen wir den aktuellen Status überprüfen und das Signal ignorieren, wenn eine Position in die gewünschte Richtung bereits geöffnet ist, oder die Position schließen, wenn sie in die entgegengesetzte Richtung geöffnet ist. Um dies zu tun, müssen wir die Anzahl der bestehenden Kauf- und Verkaufspositionen zum aktuellen Zeitpunkt kennen.

Um auf die Handelsinformationen zuzugreifen, verwenden Sie das Element Trades Group. Dieses Element bildet eine Gruppe von Positionen, die bestimmte Kriterien erfüllen. Positionen können nach verschiedenen Parametern gefiltert werden, wie z.B. Symbol, Magie, Kommentar, etc.

Wir brauchen ein solches Element für Käufe und eines für Verkäufe. Fügen wir diese beiden Elemente dem Schema hinzu und konfigurieren sie entsprechend:

Positionsgruppen

Um Informationen über eine Positionsgruppe zu erhalten (wir müssen die Anzahl ihrer Position kennen), verwenden wir das Element Trades Group Information (Integer). Fügen wir zwei dieser Elemente zu unserem Schema hinzu. Ihre Rückgabewerte werden mit den Elementen Compare mit Null verglichen.

Positionsnummer


Jetzt müssen wir die endgültigen Bedingungen schaffen - die Trigger (Auslöser) der Handelsgeschäfte. Jeder Trigger enthält zwei Bedingungen.

  1. Die Trigger zum Öffnen einer Kaufposition - (1) es gibt aktuell keine offene Kaufposition und (2) es gibt ein Kaufsignal
  2. Trigger zum Öffnen einer Verkaufsposition - (1) es gibt aktuell keine offene Verkaufsposition und (2) es gibt ein Verkaufssignal
  3. Trigger zum Schließen einer Kaufposition - (1) es gibt eine offene Kaufposition und (2) es gibt ein Verkaufssignal.
  4. Trigger zum Schließen einer Verkaufsposition - (1) es gibt eine offene Verkaufsposition und (2) es gibt ein Kaufsignal.

Da wir die Erfüllung mehrerer Bedingungen überprüfen müssen, werden wir wieder die logischen AND Elemente verwenden, eines für jeden Trigger. Wir fügen dem Schema 4 solcher Elemente hinzu und erstellen die entsprechenden Links.

Beachten Sie, dass die Trigger zum Öffnen von Positionen die Verknüpfungen der Vergleichselemente umgekehrt werden müssen.

Trigger


Die Trigger sind erstellt. Es bleibt nur noch, die Handelselemente hinzuzufügen.

Um eine Position zu eröffnen, verwenden wir das Element Open Trade. Wir brauchen jeweils eines zum Eröffnen von Kauf- bzw. Verkaufspositionen.

Um Positionen zu schließen, verwenden wir das Element Close Trades Group. Auch hier benötigen wir ein Element für das Schließen von Verkaufspositionen und ein weiteres für das Schließen von Kaufpositionen.

Neben den Triggern müssen wir auch die Handelsgruppen selbst mit den Elementen der Close Trades Group verbinden. Nachdem wir diese Elemente hinzugefügt und die entsprechenden Links erstellt haben, sieht das Schema so aus:

Handelselemente


Die Handelslogik des EA ist komplett und fertig. Jetzt müssen wir sicherstellen, dass das Volumen der Positionen, die Magicnummer, der Kommentar der Positionen und die Werte für Stop-Loss / Take-Profit aus den Eingabeparametern des Expert Advisors ermittelt werden können. Dazu benötigen wir wieder die Elemente aus der Gruppe Eingabeparameter.

Das Volumen der Positionen wird durch eine Dezimalzahl gegeben, der Handelskommentar ist ein String, während die Magicnummer, Stop Loss und Take Profit ganzzahlig sind. Fügen wir diese Elemente dem Schema den entsprechenden Parametern der Handelselemente hinzu.

Die Ansicht des fertigen Schemas


Das Schema ist fertig. Nun müssen wir nur noch die ausführbare Datei des EAs erstellen.

Wenn die Eingabeparameter des EA eine bestimmte Reihenfolge aufweisen sollen, müssen wir die Option Arrange Inputs verwenden. Hier werden alle Elemente aufgelistet, die für die Eingabeparameter verantwortlich sind und können nach oben/unten verschoben werden, wobei die Reihenfolge ihres Auftretens im EA-Einstellungsfenster angegeben wird.

Die Reihenfolge der Eingabeparameter des EAs

Jetzt ist alles bereit, den Quellcode zu generieren und eine Expert Advisor zu erstellen. Der gesamte Prozess ist im Bild unten dargestellt und besteht aus den folgenden Schritten.
  1. Das Erstellen der Datei des EAs mit Hilfe des Datei-Navigators des Strategieentwicklers.
  2. Öffnen der erstellten Quellcodedatei des EAs (.mq5) im MetaEditor-Programm.
  3. Durch das Kompilieren des Expert Advisor und entsteht die ausführbare Datei des EAs (.ex5).

Erstellen des EAs

Nach erfolgreicher Kompilierung erscheint eine EA-Datei mit der Erweiterung .ex5 und dem gleichen Namen wie die Quellcodedatei im gleichen Ordner, in dem sich die Quelldatei (.mq5) befindet.

Diese EA-Datei sollte im Ordner Experts des Handelsterminals abgelegt werden und steht dann für die Verwendung im Handelsterminal zur Verfügung.

Wenn wir den erstellten Expert Advisor im Strategie-Tester laufen lassen, sehen wir folgendes Bild:

Verifikation im visuellen Modus

Der EA ist fertig und erfüllt vollständig die ursprünglichen Regeln der Handelsstrategie!


Beispiel #2: Expert Advisor "Martingale Umkehren" Expert Advisor

Wenden wir uns einer anderen sehr populären Handelsstrategie zu, die auf dem Martingalsystem basiert. Die Strategie kann wie folgt beschrieben werden.

Wir eröffnen eine Position in jede Richtung mit der ursprünglichen Losgröße. Wir setzen Stop Loss und Take Profit gleichweit entfernt. Wird die Position gewinnbringend geschlossen, wird die nächste mit der ursprünglichen Losgröße wieder geöffnet. Wenn die Position mit Verlust geschlossen wird, sollte der nächste Handel eine erhöhte Losgröße haben, so dass das Schließen im Gewinn die vorherigen Verluste ausgleicht.

Die technische Spezifikation für einen solchen Roboter könnte so aussehen.

  • Der erste Handel sollte in benutzerdefinierter Richtung (Eingabeparameter) und mit der ursprünglichen Losgröße (Eingabeparameter) geöffnet werden.
  • Für jede offene Position werden die gleichen Stop-Loss- und Take-Profit in Punkten gesetzt (Eingabeparameter).
  • Schließt der Handel mit Gewinn, wird die nächste Position in umgekehrter Richtung mit der ursprünglichen Losgröße eröffnet.
  • Wird der Handel mit Verlust geschlossen, wird die nächste Position in die entgegengesetzte Richtung mit erhöhter Losgröße eröffnet (Lot-Multiplikator - Eingabeparameter).
  • Es sollte möglich sein, den Kommentar für alle Positionen des EAs anzugeben (Eingabeparameter).
  • Es sollten mehrere EAs gleichzeitig laufen können (Magicnummer - Eingabeparameter).
  • Der EA sollte das Handelsinstrument des Charts handeln, auf dem er gestartet wurde. Der Zeitrahmen spielt keine Rolle.

Fangen wir an, diesen Expert Advisor mit der visuellen Strategieentwickler zu erstellen.

Um die Strategie umzusetzen, benötigen wir Informationen über den aktuellen Stand (das Vorhandensein offener Positionen) und die Handelsgeschichte (wir müssen die Richtung, den Gewinn und die Losgröße der letzten Position kennen).

Wir bilden zwei Handelsgruppen: die der geschlossenen Positionen (Historie) und die der aktuellen Positionen (aktuell). Wir fügen auch die Magicnummer zu den Eingabeparametern.

Positionsgruppen

Wenn keine offene Position vorhanden ist, muss eine eröffnet werden. Wie im vorherigen Beispiel, ermitteln wir die Anzahl der offenen Positionen mit dem Element Trades Group Information und vergleichen den erhaltenen Wert mit Null. Wenn es keine Positionen gibt, wird dies ein Auslöser für die Eröffnung einer neuen Position sein. In unserem Fall muss dieser Link umgekehrt werden.

Eröffnen der nächsten Position

Wenn es eine offene Position gibt, müssen wir Stop Loss und Take Profit setzen.

Im vorherigen Beispiel wurde dies sofort zum Zeitpunkt der Eröffnung des Handels durchgeführt, aber nicht alle Ausführungsmodi / Broker erlauben dies. Betrachten Sie daher den Fall der Eröffnung einer Position ohne SL und TP und deren Platzierung in der Zukunft.

Die Platzierung (Modifikation) der SL- und TP-Ebenen erfolgt durch das Element Modify Trades Group.

Zusätzlich fügen Sie Elemente für den Eingabeparameter mit Trades Comment und für die Eingabeparameter mit den SL- und TP-Werten in Punkten hinzu.

Setzen der Stopps

Um die Richtung der nächsten Position zu bestimmen, müssen wir die Richtung der letzten geschlossenen Position kennen. Um auf Informationen über die Position zuzugreifen, verwenden Sie das Element Trade Information. Dazu müssen wir das Ticket des letzten Handels kennen. Wir können es vom Element Trades Group Information erhalten.

Die letzte Position

Fragen wir nach dem Typ der letzten Position und ob es eine Kauf oder Verkauf war. Dafür verwenden wir das Element Equal. Damit können wir die die Nummern der verschiedenen Datentypen vergleichen und die Rückgabe von "true" bedeutet, sie sind gleich.

Der letzte Positionstyp

Mit dem Element Variable können wir den Typ der nächsten Position festlegen. Dieses Element gibt bei unterschiedlichen Bedingungen unterschiedliche Werte aus und dient als eine Art Umschalter.

Wenn der vorherige Position ein Kauf war, dann ist der nächste ein Verkauf und umgekehrt. Wenn der Typ des letzten Handels unbekannt ist (wenn noch keine Position eröffnet wurde), wird der Typ aus den Eingabeeinstellungen verwendet. Erstellen Sie es mit Hilfe des entsprechenden Elements.

Der nächste Positionstyp

Jetzt müssen wir das Volumen für den nächsten Handel berechnen. Dazu müssen wir das Ergebnis der letzten geschlossenen Position und deren Volumen kennen. Der Gewinn und das Volumen des Handels wird über die Elemente Trade Information erzielt. Der Gewinn wird mit Null verglichen, um festzustellen, ob der Handel mit Gewinn geschlossen wurde.

Letzter Handelsgewinn und -volumen

Wenn dies die erste Position ist oder wenn die letzte Position im Gewinn geschlossen wurde, beginnen wir einen neuen Zyklus mit dem ersten Losgröße.

Um die Bedingung für einen neuen Zyklus zu ermitteln, verwenden wir das logische Elemen OR. Es gibt "true" zurück, wenn mindestens eine der Bedingungen erfüllt ist, und "false", wenn keine einzige Bedingung erfüllt ist. Wir müssen zwei Bedingungen überprüfen. (1) Die Bedingung für das Schließen mit Gewinns wird dem Element Vergleichen entnommen, das prüft, ob der Gewinn kleiner als Null war (diese Verbindung zum ODER-Element muss umgekehrt werden). (2) Um zu überprüfen, ob dies der erste Handel ist, verwenden Sie das Element AND, wo wir die invertierten Werte aus den Elementen Equal verbinden. Denn wenn der vorherige Handel weder ein Kauf noch ein Verkauf ist, bedeutet das, dass dies die Situation ist, in der es einfach keine vorherige Position gibt.

Neuer Zyklus

Wenn es eine vorherige Position gab, dann müssen wir das nächste Handelsvolumen berechnen. Verwenden Sie dazu das Element Arithmetik. Es führt verschiedene mathematische Operationen mit zwei Zahlen durch. In diesem Fall multiplizieren wir die Losgröße der vorherigen Position mit dem Lot-Multiplikator-Parameter, der mit dem Input-Parameter-Element erstellt wurde. Setzen Sie für unsere Strategie den Standardwert auf 2.

Losgrößen Berechnung

Für die endgültige Berechnung der Lotgröße der nächsten Position verwenden wir das Element Variable, ähnlich der Bestimmung der nächsten Handelsart. Denn wenn wir einen neuen Zyklus beginnen, dann müssen wir das Anfangslos verwenden, aber wenn wir den Zyklus nach einem verlorenen Handel fortsetzen, dann müssen wir die Losgröße des nächsten Handels verwenden, die in der vorherigen Phase berechnet wurde.

Fügen Sie zusätzlich ein Element für die initiale Losgröße (Eingabeparameter) hinzu. Das fertige Schema wird so aussehen:

Die Losgröße der nächstes Position

Für einen schnellen Überblick über die Parameter aller Elemente des Schemas / der Strategie können Sie die Funktion Parameter Layout view verwenden.

In diesem Fall ändert das Schema sein Aussehen und teilt sich in zwei Bereiche auf. Der erste Teil listet alle Parameter auf, die im Schema vorhanden sind, und der zweite Teil listet alle Elemente auf, die jeden der Parameter enthalten. In diesem Layout können wir die Einstellungen für jeden der Parameter in allen Elementen überprüfen.

Stellen wir sicher, dass alle Elemente das aktuelle Symbol des Charts verwenden, mit dem der Experte läuft. Schalten Sie dazu das Schema in den Modus Parameter Layout und wählen Sie in der linken Liste den Parameter Symbolname. Im rechten Bereich sehen Sie dann, dass dieser Parameter in drei Elementen des Schemas vorhanden ist und in jedem von ihnen auf Aktuelles Symbol gesetzt ist, was bedeutet, dass Sie das aktuelle Diagramminstrument verwenden. Bei Bedarf kann dieser Wert in den Namen eines beliebigen anderen Währungspaares aus der Market Watch geändert werden.

Parameter Layoutansicht

Überrpüfen wir den Expert Advisor in dem Strategie-Tester. Davor müssen wir, wie im vorherigen Beispiel die Datei mit dem Quellcode erstellen und es mit dem MetaEditor kompilieren.

Überprüfung im Tester

Die Strategie ist riskant, aber sie funktioniert nach dem vorgegebenen Algorithmus! Es gibt viel Raum, die Strategie weiter zu verbessern, ihre Parameter zu optimieren und Risiken zu reduzieren. Sie können verschiedene Eingabefilter hinzufügen, einen Spread-Filter hinzufügen, den Start eines neuen Zyklus am Freitag vor dem Wochenende deaktivieren, die maximale Losgröße oder die maximale Anzahl von Positionen in einem Zyklus begrenzen oder sich etwas anderes einfallen lassen.


Beispiel #3: Hilfsprogramm "Schließen einer Gruppe von Positionen auf Grund es Gesamtgewinns"

Mit diesem visuellen Strategieentwickler kann man nicht nur Handelsstrategien erstellen, sondern auch einfachere Hilfsprogramme - Utilitys für den Handel.

Jetzt erstellen wir ein Hilfsprogramm, das eine Gruppe von Positionen schließt, wenn das angegebene Gewinnniveau erreicht ist.

Das Hilfsprogramm muss die folgenden Anforderungen erfüllen.

  • Es soll KEINE Positionen eröffnen.
  • Es soll die aktuellen Positionen auf dem Konto mit einer bestimmten Magicnummer (Eingabeparameter) beaufsichtigen.
  • Wenn diese Geschäfte eine bestimmte Höhe des Gesamtgewinns (Eingangsparameter) erreichen, müssen alle Positionen geschlossen werden.
  • Das Hilfsmittel muss beim Schließen einer Gruppe von Positionen eine Warnung generieren, die den Gesamtgewinn und die Anzahl der Versuche, die gesamte Positionsgruppe zu schließen, angibt.

Der letzte Punkt der Anforderungen ist darauf zurückzuführen, dass es nicht immer möglich ist, die Position beim ersten Versuch zu schließen. Die Gründe dafür können unterschiedlich sein. Am häufigsten sind wohl Preise, die ungültig geworden sind (requotes). Je größer die Anzahl der Positionen in einer geschlossenen Gruppe ist, desto wahrscheinlicher ist es, dass eine von ihnen beim ersten Versuch nicht geschlossen wird, insbesondere in Zeiten erhöhter Volatilität.

Der Auslöser für das Schließen einer Gruppe von Positionen ist die Bedingung, dass diese Positionen ein bestimmtes Gewinnniveau erreichen. Daher müssen wir auf diese Gruppe von Positionen und ihre Parameter zugreifen.

Wir erstellen eine Positionsgruppe (das Element Trades-Group) mit der angegebenen Magicnummer (Element Input-Parameter), ermitteln Sie die Anzahl der Positionen darin und vergleichen den erhaltenen Wert mit Null, um festzustellen, ob es mindestens eine zu überwachende Position gibt.

Positionsgruppe

Wir holen uns den aktuellen Gesamtgewinn der Positionsgruppe (Element Trades Group Information) und vergleichen den Wert mit demm vorgegebenen Gewinn für das Schließen (Element Input Parameter).

Gewinn der Positionsgruppe

Jetzt können wir das Element Compare als Auslöser verwenden, um die gesamte Gruppe sofort zu schließen, aber wir werden es auf eine etwas andere Weise tun. Tatsache ist, dass Expert Advisors bei jedem Tick - einmal für jeden Tick - ausgeführt werden. Und im realen Handel ist folgende Situation möglich. Die Bedingung für das Schließen aller Positionen war erfüllt, das Hilfsprogramm begann sie zu schließen, aber aus irgendeinem Grund konnte nur ein Teil dieser Positionen während dieser Zeit geschlossen werden, einige blieben geöffnet. Beim nächsten Tick überprüft das Tool die Erfüllung der Bedingung erneut, aber sie kann nicht mehr erfüllt werden, da ein Teil der Positionen während des vorherigen Ticks geschlossen wurden und sie nicht mehr Teil der betrachteten Gruppe sind.

Die Lösung besteht darin, sich daran zu "erinnern", dass die Bedingung für das Schließen der gesamten Gruppe im Element Variable erfüllt ist. Der EA schließt alle Positionen nach den Eintreffen des nächsten Ticks, wenn diese Variable auf "true" gesetzt wurde, bis alle erfolgreich geschlossen worden sind. Sobald alle Positionen geschlossen wurden, setzen wir die Bedingung auf Schließen zurück (setzen Sie den Wert auf "false") und warten bis der Trigger erneut ausgelöst wird.

Das Schließen von Positionen wird mit dem Element Close Trades Group realisiert.

Schließen einer Positionsgruppe


Die Handelslogik des Utilitys ist fertig und kann bereits voll funktionsfähig sein. Jetzt fügen wir Funktionen zum Zählen von Versuchen, eine Handelsgruppe zu schließen, hinzu.

Dazu verwenden wir wieder das Element Variable, aber diesmal dient es als Zähler. Wir setzen den Wert auf 0 zurück, wenn es keine offenen Positionen in der Gruppe gibt, und erhöhen den Wert um 1 (unter Verwendung des arithmetischen Elements) jedes Mal, wenn wir versuchen, eine Gruppe von Positionen zu schließen.

Zusätzlich zu diesen beiden Elementen benötigen wir auch ein Element, um eine Dezimalzahl in eine ganze Zahl umzuwandeln (Transformation), da wir eine Variable vom Typ integer für den Zähler verwenden und das arithmetische Element den Wert des Dezimaltyps zurückgibt. Wenn wir eine Variable vom Dezimaltyp verwendet hätten, dann hätte diese Umwandlung vermieden werden können.

Wir fügen die Elemente zum Diagramm hinzu und konfigurieren Sie sie, wie unten gezeigt:

Versuchszähler

Es bleibt nur noch, den Meldungstext zu formulieren und mit ihm einen Alarm zu erstellen, wenn die Positionen geschlossen werden. Der Nachrichtentext kann mit dem Element Combine String gebildet werden, das die Nachrichtenteile zu einer einzigen Zeichenkette zusammenfasst.

MetaTrader5 Standard-Alert-Funktion wird mit dem Element Alert verwendet.

Alert

Lassen Sie uns eine weitere Möglichkeit in diesem Beispiel überprüfen. Jedes Schema kann mehrere Aktionen am Ende durchführen - Aktionen, die als Ergebnis der Ausführung des Schemas ausgeführt werden müssen und keine weiteren Aktionen auslösen. In diesem Schema ist es der Alert und das Schließen der Positionsgruppe.

Wenn diese Aktionen in einer bestimmten Reihenfolge ausgeführt werden sollen, z.B. um einen Alert vor dem Schließen der Positionen zu erstellen, muss die Option Arrange Ends verwendet werden. Danach erscheint ein Dialogfenster, in dem Sie, wie bei der Anordnung der Eingabeparameter, die Elemente nach oben und unten verschieben und die Reihenfolge ihrer Ausführung festlegen können.

Das Ende ordnen


Unser Hilfsprogramm ist jetzt fertig. Da dieser Expert Advisor keine Positionen eröffnet und nur ein Handelsassistent ist, muss er nicht im Strategie-Tester getestet werden.

Das Schema kann sofort live ausgeführt werden, auch ohne den Quellcode zu generieren und eine EA-Datei zu erstellen (obwohl dies möglich ist und das fertige EA auf einem separaten Diagramm im Terminal ausgeführt werden kann). Um den Live-Betrieb des Schemas zu starten, drücken Sie die Taste Start / Stop Executing. Wenn es angeklickt wird, beginnt die Ausführung des Schemas auf die gleiche Weise, als ob die EA-Datei auf einem separaten Diagramm gestartet wurde. Diese Option kann für die gleichzeitige Ausführung mehrerer einfacher Hilfsprogramme verwendet werden, ohne dass dafür Quellcode generiert werden muss und ohne dass diese in separaten Diagrammen ausgeführt werden müssen.

Ausführung des Live-Schemas


Schlussfolgerung

Dieser Artikel enthält einen Überblick über den Visuellen Strategieentwickler Mission Automate. Anhand der Beispiele wurde gezeigt, wie man Handelsroboter ohne Programmierung erstellen kann.

Das Herunterladen der Anwendung im Markt und das Ausprobieren in Aktion ist kostenlos und einfach. Enthalten sind 5 fertige Expert Advisors, die auf beliebten Strategien basieren.

For MetaTrader4Mission Automate Demo MT4

For MetaTrader5Mission Automate Demo MT5

Ich habe große Pläne für die weitere Entwicklung dieses Projekts, daher würde ich mich sehr über Kommentare und Vorschläge zur Verbesserung des Programms freuen.

Machen wir Algotrading für alle zugänglich!

Übersetzt aus dem Russischen von MetaQuotes Software Corp.
Originalartikel: https://www.mql5.com/ru/articles/4951

Die Entwicklung eines oszillierenden ZigZag-Indikator Beispiel für die Durchführung der Anforderungsspezifikationen Die Entwicklung eines oszillierenden ZigZag-Indikator Beispiel für die Durchführung der Anforderungsspezifikationen

Der Artikel demonstriert die Entwicklung des ZigZag-Indikators gemäß der im Artikel "Wie man eine Anforderungsspezifikation bei der Bestellung eines Indikators erstellt" beschriebenen Beispiele. Der Indikator wird durch Extrema gebildet, die mit Hilfe eines Oszillators definiert werden. Es besteht die Möglichkeit, einen von fünf Oszillatoren zu verwenden: WPR, CCI, Chaikin, RSI oder die Stochastik.

Wie man den Berechnungsblock eines Indikators in den Code eines Expert Advisors überträgt Wie man den Berechnungsblock eines Indikators in den Code eines Expert Advisors überträgt

Für die Übertragung des Codes eines Indikators in einen Expert Advisor kann es unterschiedliche Gründe geben. Aber wie kann man Vor- und Nachteile eines solchen Ansatzes bewerten? In diesem Artikel wird eine Technologie für die Übertragung des Codes eines Indikators in einen Expert Advisor vorgestellt. Es wurden mehrere Experimente hinsichtlich der Arbeitsgeschwindigkeit des Expert Advisors durchgeführt.

Social Trading. Kann eine gutes Signal weiter verbessert werden? Social Trading. Kann eine gutes Signal weiter verbessert werden?

Die meisten Abonnenten wählen ein Handelssignal nach der Schönheit der Bilanzkurve und nach der Anzahl der Abonnenten. Deshalb achten viele Anbieter heute eher auf schöne Statistiken als auf echte Signalqualität, spielen oft mit Losgrößen und reduzieren die Saldenkurve künstlich nur für ein ideales Erscheinungsbild. Dieses Papier befasst sich mit den Zuverlässigkeitskriterien und den Methoden, mit denen ein Anbieter seine Signalqualität verbessern kann. Eine beispielhafte Analyse einer bestimmten Signalhistorie wird vorgestellt, ebenso wie Methoden, die einem Anbieter helfen würden, diese profitabler und risikoärmer zu gestalten.

Tiefe Neuronale Netzwerke (Teil VI). Gruppen von Klassifikatoren von Neuronalen Netzen: Bagging Tiefe Neuronale Netzwerke (Teil VI). Gruppen von Klassifikatoren von Neuronalen Netzen: Bagging

Der Artikel beschreibt die Methoden des Aufbaus und Trainings von Gruppen von Neuronalen Netzen mit einer Struktur für das Bagging, einer Methode, um Vorhersagen aus verschiedenen Regressions- oder Klassifikationsmodellen zu kombinieren. Es bestimmt auch die Besonderheiten der Hyperparameter-Optimierung für einzelne Neuronale Netzwerk-Klassifikatoren, aus denen sich das Ensemble zusammensetzt. Die Qualität des optimierten Neuronalen Netzes, das im vorherigen Artikel der Serie erhalten wurde, wird mit der Qualität des erzeugten Ensembles Neuronaler Netze verglichen. Möglichkeiten, die Qualität der Klassifizierung des Ensembles weiter zu verbessern, werden geprüft.