Schau, wie man Roboter kostenlos herunterladen kann
Finden Sie uns auf Twitter!
und werden Sie Mitglied unserer Fangruppe
Interessantes Skript?
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Hat Ihnen das Skript gefallen?
Bewerten Sie es im Terminal MetaTrader 5
Expert Advisors

Automatisiertes Handelssystem "Сombo" - Experte für den MetaTrader 4

Ansichten:
1245
Rating:
(23)
Veröffentlicht:
2016.03.21 14:48
Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance
Die Aufgabe wird für dieses automatisierte Handelssystem (ATS) wie folgt definiert:

Angenommen wir verwenden ein einfaches Handelssystem - BTS. Es ist notwendig, ein Neuronales Netz zu erzeugen und zu trainieren, Dinge zu tun, die das BTS nicht kann. Das muss auf die Schaffung eines Handelssystems hinauslaufen, das aus zwei sich gegenseitig ergänzenden Systemen besteht, die kombiniert werden: BTS und NN (neuronales Netz).

Anders ausgedrückt: Es ist nicht nötig, die Kontinente wieder zu entdecken, sie wurden alle entdeckt. Warum jemanden lehren, schnell zu laufen, wenn wir ein Auto haben, oder zu fliegen, wenn wir ein Flugzeug haben?

Wenn wir also einen trendfolgenden ATS haben, müssen wir nur das neuronale Netz in einer Strategie gegen den Trend trainieren. Das ist notwendig, weil ein trendfolgendes System in Seitwärtsmärkten nicht erfolgreich ist und Kurseinbrüche oder eine Trendumkehr nicht erkennt. Sie können natürlich zwei ATS' - einen trendfolgenden und eine gegen den Trend handelnden auf demselben Symbol laufen lassen. Andererseits können Sie ein neuronales Netz trainieren, Ihr vorhandenes Handelssystem zu ergänzen.

Für diesen Zweck haben wir ein zweischichtiges neuronales Netz entworfen, das aus zwei Perceptrons in der unteren Schicht und einem Perceptron in der oberen Schicht besteht.
Es gibt drei Ergebnisse dieses neuronalen Netzes:

  1. Eröffne eine Kauf-Position
  2. Eröffne eine Verkauf-Position
  3. Zustand ist unbestimmt

Im dritten Zustand (unbestimmt) wird die Kontrolle dem BTS zu übertragen, wohingegen in den ersten zwei Situationen die Handelssignale dem neuronale Netz übergeben werden.

Das Trainieren des neuronalen Netzes vollzieht sich in drei Stufen, jede trainiert einen Perceptron. In jeder Situation muss das optimierte BTS für die Perceptrons vorhanden sein, sie müssen wissen, was es tun würde.

Ein einzelnes Training der Perceptrons durch einen genetischen Algorithmus wird durch den Mangel an diesem Algorithmus bestimmt: Die Menge von Eingaben, die in mit der Hilfe solcher Algorithmen gesucht sind, wird begrenzt. Jedoch ist jeder Trainingsschritt kohärent und das Neuronale Netz nicht zu groß, so dass die ganze Optimierung nicht zu viel Zeit verschlingt.

Der erste Schritt, der einem Training des NN vorangeht, besteht in der Optimierung des BTS.

Um nicht die Übersicht zu verlieren, benennen die Stufenzahl im Eingang des ATS als "Pass". Die Namen der Eingabe Parameter, die der Zahl im Endzustand entspricht, ist gleich der Schrittnummer.

Ok, beginnen wir mit der Vorbereitung der Optimierung und des Trainings des NN. Wir setzen das Anfangskapital auf 1000000$ (um mögliche Margincalls während der Optimierung zu vermeiden), als Optimierungsgröße "Balance" und aktivieren "Genetischer Algorithmus" im Tab "Testing" der Eigenschaften des EA im Tester.

Gehen wir nun zum Tab "Eingaben" der Eigenschaften des EA und geben die Größe der Positionen ein durch das Eintragen von 1 für die Variable "lots".

Die Optimierung wird gemäß dem Modell durchgeführt: "Open Preis (schnellste Methode zur Analyse der gerade vollendeten Kerze; nur für Expert Adviser, die den Eröffnungspreis überwachen)", sollte diese Methode für den ATS-Algorithmus verfügbar sein.

Schritt 1 der Optimierung. Die Optimierung des BTS:

Setze Eingabevariable "pass" auf 1.
Es werden nur Eingänge der ersten Stufe, d. h. die in 1 enden. So aktivieren wir nur diese Eingänge für die Optimierung und deaktivieren alle anderen.

tp1 - TakeProfit des BTS. Optimierung von 10 bis 100, Schrittweite 1
sl1 - StopLoss des BTS. Optimierung von 10 bis 100, Schrittweite 1
p1 - Periode des CCI verwendet durch den BTS. Optimierung von 2 bis 100, Schrittweite 1


Stufe 2. Training des Perceptrons verantwortlich für die Verkaufssignale:

Setze Eingabevariable "pass" auf 2 (gemäß der Stufe).
Deaktiviere die Eingaben für die Optimierung der vorherigen Stufe. Für Notfälle, sichere in einem File die Resultate der vorherigen Stufe.

Überprüfe die Eingaben für die Optimierung gemäß der Regel: ihre Namen enden mit 2:

x12, x22, x32, x42 - die Wichtungen des Perceptrons, das die Verkaufssignale erkennt. Optimierung von 0 bis 200, Schrittweite 1
tp2 - TakeProfit der Positionen, die durch das Perceptron eröffnet wurden. Optimierung von 10 bis 100, Schrittweite 1
sl2 - StopLoss der Positionen, die durch das Perceptron eröffnet wurden. Optimierung von 10 bis 100, Schrittweite 1
p2 - Perioden der Preisdifferenzen für die Analyse durch das Perceptron. Optimierung von 3 bis 100, Schrittweite 1.

Starten wir das Training unter Benutzung des genetischen Algorithmus.


stufe 3. Training des Perceptrons verantwortlich für die Kaufsignale:

Setze Eingabevariable "pass" auf 3 (gemäß der Stufe).
Deaktiviere die Eingaben für die Optimierung der vorherigen Stufe. Für Notfälle, sichere in einem File die Resultate der vorherigen Stufe.

Überprüfe die Eingaben für die Optimierung gemäß der Regel: ihre Namen enden mit 3:

x13, x23, x33, x43 - die Wichtungen des Perceptrons, das die Kaufsignale erkennt. Optimierung von 0 bis 200, Schrittweite 1.
tp3 - TakeProfit der Positionen, die durch das Perceptron eröffnet wurden. Optimierung von 10 bis 100, Schrittweite 1
sl3 - StopLoss der Positionen, die durch das Perceptron eröffnet wurden. Optimierung von 10 bis 100, Schrittweite 1
p3 - Periode der Preisdifferenzen zur Analyse durch das Perceptron. Optimierung von 3 bis 100, Schrittweite 1.

Starten wir das Training unter Benutzung des genetischen Algorithmus.


Stufe 4 (final). Training der ersten Ebene, d.h. Training des Perceptrons in der oberen Ebene:

Setze Eingabevariable "pass" auf 4 (gemäß der Stufe).
Deaktiviere die Eingaben für die Optimierung der vorherigen Stufe. Für Notfälle, sichere in einem File die Resultate der vorherigen Stufe.

Überprüfe die Eingaben für die Optimierung gemäß der Regel: ihre Namen enden mit 4:

x14, x24, x34, x44 - Wichtungen des Perceptrons dieser Schicht. Optimierung von 0 bis 200, Schrittweite 1.

p4 - Periode der Preisdifferenzen zur Analyse durch das Perceptron. Optimierung von 3 bis 100, Schrittweite 1.

Starten wir das Training unter Benutzung des genetischen Algorithmus.

Das war's, das neuronale Netz wurde trainiert.

Das ATS hat noch eine, nicht optimierbare Eingabevariable, mn - Magic Number. Sie identifiziert die Positionen der Handelssysteme, um sie von denen andere Systeme oder manuellem Handel zu unterscheiden. Der Wert dieser Magic Number muss eineindeutig sein und darf nicht mit denen anderer Positionen übereinstimmen, die nicht von diesem ATS geöffnet wurden.

P.S.

  • Das Anfangskapital sollte ein etwa dem doppelten des maximalen Drawdowns entsprechen, um so ein Sicherheitspolster zu haben.
  • Der EA bereitgestellt, mit seinem Quellcode, wurde nicht optimiert!
  • Wenn Sie den integrierten BTS durch den Algorithmus eines anderen Handelssystems ersetzen, müssen Sie auch den Inhalt der Funktion basicTradingSystem() modifizieren.
  • Um sich die wiederholte Eingabe der Anfangs- und Endwerte und der Werte für die Schritte der Optimierung zu ersparen, können Sie das combo.set File verwenden, es in den \tester Folder kopieren und über die Eigenschaften des EA im Tester laden.
  • Eine erneute Optimierung des EA sollte am Wochenende, d. h. am Samstag oder am Sonntag, durchgeführt werden, aber nur wenn die Ergebnisse der vorhergehenden Woche unbefriedigend waren. Die Existenz von Verlusten bedeutet, dass sich der Markt geändert hat, und eine Neu-Optimierung notwendig ist. Die Existenz von Gewinnen bedeutet, dass der ATS keine Neu-Optimierung benötigt und die Muster im Markt ganz gut erkannt hat.


Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/ru/code/7917

up3x1_premium_v2M up3x1_premium_v2M

Dieses automatisierte Handelssystem ist gedacht für den Einsatz für das Paar Eur/Usd im 1-Stunden Zeitrahmen. Ausgezeichnete Ergebnisse.

FFS_CrossTiming FFS_CrossTiming

Indikator FFS CrossTiming. Er zeigt die kombinierten Trends aller mit dem Chartsymbol verbundenen anderen Symbole. Für mehr schauen sie in den Code des Indikators.

TREND_alexcud TREND_alexcud

Ein Mehr-Zeitrahmen Indikator. Es zeigt die Trendrichtungen der Charts mehrerer Zeitrahmen in einem separaten Fenster.

TZ-Pivot TZ-Pivot

Indicator TZ-Pivot. Empfiehlt ein Zeitintervall. Siehe im Code.