English Русский 中文 Español 日本語 Português
Wettbewerb an Expert Advisors innerhalb eines Expert Advisor

Wettbewerb an Expert Advisors innerhalb eines Expert Advisor

MetaTrader 4Handelssysteme | 4 Mai 2016, 14:47
1 540 0
Evgeniy Trofimov
Evgeniy Trofimov

Einleitung

Liebe Entwickler und Analysten!

Oft sind viele Handelssysteme (Trading Systems "TS") für einen bestimmten Zeitraum stabil, aber auf längere Sicht beginnt die Performance-Kurve sich nach unten zu bewegen. Der Händler wird zunehmends enttäuscht und beginnt, neue Grale zu erfinden, die Parameter zu optimieren, usw.

Ich zeige Ihnen ein Tool zur Durchführung virtueller Trades - VirtualTrend.mqh. Mit der von mir vorgeschlagenen Funktion, können Sie virtuelle Trades eröffnen, schließen und verfolgen.

Es verfügt über die folgenden nützlichen Merkmale:

  1. Es können anpassungsfähige Expert Advisors kreiert werden, die abhängig von den Ergebnissen früherer Trades, den virtuellen Handel aktivieren und deaktivieren können.
  2. Mehrere Handelssysteme (in diesem Beispiel werden 5 Handelssysteme vorgestellt) werden abhängig von ihrer Rentabilität prozentual bewertet. Der Wettbewerb führt zur Entscheidung, welches Handelssystem das empfehlenswerteste für den Handel im realen Markt ist.
  3. Es können Handelsstrategien implementiert werden, die mehrere offene Trades durch ein Instrument in der MetaTrader5-Plattform verwenden, so dass kumulative Positionen entstehen (diese Funktion wird in diesem Artikel nicht beschrieben, aber als eine Variante vorgeschlagen).

Werfen wir einen Blick auf die ersten beiden Aussagen.

Lassen Sie uns den Competition_v1.0.mq4 Code als Beispiel für einen anpassungsfähigen Expert Advisor hernehmen; auf Basis des Wettbewerbs wird ein Handelssystem bestimmt, das verwendet werden soll. Der Expert Advisor verwendet 5 (Sie können mehr hinzufügen, wenn Sie wollen) Handelssysteme, die nicht zufällig, sondern aufgrund der mehr oder weniger stabilen Arbeit mit dem täglichen Zeitrahmen von EURUSD ausgewählt werden.

Wichtig! Sie sollten nur die stabilen Handelssysteme verwenden, die Gewinn machen oder in einem bestimmten Zeitraum immer verlustbringend sind.

Zum Beispiel kann ein Handelssystem, dessen Abfolge von Gewinnen "PPPPPPPLLLLLLLLPPLPPPPPPPP" ist, den Bedingungen entsprechen, die in diesem Expert Advisor verwendet werden; wenn die Abfolge von Gewinnen jedoch "LLPPLPLLPPPLLPLPPLPLPLLLPPLPL" wäre, würde es nicht passen ("L" – verlustbringender (Losing) Trade, "P" – gewinnbringender (Profitable) Trade).

Ein Handelssystem, bei dem verlustbringende Trades häufiger sind als gewinnbringende, aber die gewinnbringenden Trades den früheren Verlust abdecken, können ebenfalls nicht verwendet werden, da der Expert Advisor es nicht schafft, sich der Rentabilität anzupassen.

Die Stabilität eines Handelssystems wird "durch Beobachtung" der Ergebnisse von Tests bestimmt, die für den maximalen Zeitraum (gesamte Historie) im Strategie-Tester durchgeführt werden. Das erhaltene Diagramm, das die Bilanzveränderung anzeigt, ermöglicht die Bestimmung der durchschnittlich gewichteten Anzahl der Trades, die zu einer Änderung der Tendenz führen. Zum Beispiel führ ein Handelssystem die folgende Sequenz von Trades durch: PPPPPPPPLLLLLLPPPPPPPPPLPLLLLLLLLLLLPPPPPPPLLLLLLLLLLLLLPPPPPPLLLLLLLLLLPLPPPLLPPPPPP. Die Tendenz der Bilanz ändert sich nach ca. 6-8 Trades. Für die Berechnung der Bewertung wird empfohlen, den Zeitraum zur Durchschnittsbildung der Bilanz so einzustellen, dass er der Hälfte dieser Trades entspricht. In diesem Fall also 3 oder 4.

Das Aktivieren und Deaktivieren des Bewertungssystems, das dem Expert Advisor hilft, sich den Dynamikveränderungen der Rentabilität anzupassen, erfolgt über den Parameter RatingON. Mit ihm können Sie leicht einen Zeitraum zur Mittelwertbildung der Bilanz finden und ihn für den Parameter Tх.PeriodRating einstellen.

Jedes Handelssystem kann nach Ihrem Willen durch die Verwendung des Parameters Tх.Enabled aktiviert oder deaktiviert werden, wobei х die Anzahl der Handelssysteme ist.

Alle Tests von Handelssystemen, die unten dargestellt sind, wurden für EURUSD (D1 Zeitrahmen) für den Zeitraum von 01.01.1999 bis 01.06.2010 durchgeführt.

Handelssystem Nr. 1

  • Einstiegsbedingung: wenn der schnelle Moving Average den langsamen kreuzt (siehe T1_SignalOpen() Funktion).
  • Ausstiegsbedingung: umgekehrte Kreuzung (siehe T1_SignalClose() Funktion).


Abbildung 1.Der Test des Handelssystems Nr. 1 ohne Anpassung (RatingON = false)

Das Testergebnis ermöglicht eine Schlussfolgerung, dass bei dieser Strategie, nach etwa 18-20 Trades sich die Dynamik der Rentabilität ändert.

Deshalb wird der T1.PeriodRating Parameter auf 20 gesetzt.

The test of the trading system №1 with adaptation enabled (RatingON = true)

Abbildung 2.Der Test des Handelssystems Nr.2 mit aktivierter Anpassung (RatingON = true)

Handelssystem Nr. 2

  • Einstiegsbedingung: wenn der CCI Indikator ein bestimmtes Niveau von oben nach unten kreuzt (siehe T2_SignalOpen() Funktion).
  • Ausstiegsbedingung: wenn das Signal in der entgegengesetzten Richtung erscheint (siehe T2_SignalClose () Funktion).

Während des Tests für den gleichen Zeitraum haben wir herausgefunden, dass die Stabilität in etwa 10 Trades entspricht.


Abbildung 3.Der Test des Handelssystems Nr. 2 ohne Anpassung


Abbildung 4.Der Test des Handelssystems Nur. 2 mit aktivierter Anpassung

Handelssystem Nr. 3

Die Logik hinsichtlich dem Ein- und Aussteigen ist die gleiche wie beim Handelssystem Nr. 1. Allerdings sind die Zeiträume der Mittelwertbildung von Moving Averages unterschiedlich.

Ein kleiner Exkurs:Sie können den gesamten Competition_v1.0.mq4 Code umschreiben und ihn mit Strategien kombinieren, die nur aus Moving Averages mit unterschiedlichen Zeitäumen bestehen.

Ich habe diese interessante Untersuchung noch nicht durchgeführt, aber sobald ich es mache, werde ich Sie informieren.


Abbildung 5.Der Test des Handelssystems Nr. 3 ohne Anpassung

Dieses Handelssystem führt wenige Trades über einen langen Zeitraum (fast 11 Jahre) durch. Ich empfehle diese Strategie nicht im realen Handel einzusetzen, da die Anzahl der Trades im Strategie-Tester zu klein ist.

Ich habe diese Strategie für mehr Augenscheinlichkeit meiner Entwicklung der Anpassung hinzugefügt. Der Parameter T3.PeriodRating ist für diese Strategie auf 2 eingestellt.


Abbildung 6.Der Test des Handelssystems Nr. 3 mit aktivierter Anpassung

Handelssystem Nr. 4

Ich habe diese Strategie oft in der Literatur gesehen.

Es scheint selbst ohne der Anpassung attraktiv zu sein, aber dessen Verwendung im Handel erfordert kein automatisiertes Handeln, da es ein langfristiges ist.

  • Es betritt den Markt, sobald drei Moving Averages in der Reihenfolge angeordnet sind und wenn der MACD höher als der festgelegte Wert ist - T4.LimitMACD (siehe T4_SignalOpen() Funktion).
  • Es steigt aus dem Markt aus, wenn der Preis den zweiten Moving Average kreuzt (siehe T4_SignalClose() Funktion).


Abbildung 7.Der Test des Handelssystems Nr. 4 ohne Anpassung

Diese Handelsstrategie hat eine konstante Stabilität, so dass der Verarbeitungszeitraum der Daten für die Berechnung der Bewertung nicht weniger als 20 Trades sein sollte. Ich stelle den Paramter folgendermaßen ein: T4.PeriodRating=20.


Abbildung 8.Der Test des Handelssystems Nr. 4 mit aktivierter Anpassung

Handelssystem Nr. 5

Dieses Handelssystem wird von mir entwickelt und ich möchte es in einer solchen anspruchsvollen Art und Weise mit Ihnen teilen.

  • Wir kaufen, wenn der CCI Indikator das angegebene Niveau T5.LevelCCI von unten nach oben kreuzt (siehe T5_SignalOpen() Funktion). Stellen Sie den Pegel zum Schließen von Trades MyLevel niedriger ein als den Pegel zum Eröffnen T5.LevelCCI durch T5.TralingCCI Indikatorpunkte. Beobachten Sie den CCI Indikator und ziehen Sie das Nivau zum Schließen MyLevel mit einem bestimmten Schritt nach oben, damit der Abstand zwischen dem aktuellen Wert des CCI Indikators und dem MyLevel Niveau, nicht größer wird als der doppelte Wert von T5.TralingCCI.
  • Schließen Sie die geöffnete Kauf-Position, wenn der CCI Indikator das MyLevel Niveau von oben nach unten kreuzt (siehe T5_SignalClose() Funktion).


Abbildung 9.Der Test des Handelssystems Nr. 5 ohne Anpassung

Solch ein Chart kann ohne Anpassung gelassen werden, aber wie auch immer, stellen Sie folgendes ein: T5.PeriodRating=10.


Abbildung 10.Der Test des Handelssystems Nr. 5 mit aktivierter Anpassung

Multi-System Expert Advisor

Die Arbeit von 5 Expert Advisors mit und ohne Anpassung wird oberhalb demonstriert.

Wir werden jetzt ein Beispiel für die kollaborative Arbeit dieser Expert Advisors betrachten:

Symbol

EURUSD (Euro vs US Dollar)

Zeitraum

Tag (D1) 24.05.1999 00:00 - 05.07.2010 00:00 (01.01.1999 - 05.07.2010)

Modell

Kontrollpunkte (eine sehr grobe Methode, die Ergebnisse dürfen nicht berücksichtigt werden)

Parameter

RatingON=false; FastTest=true; file="virtual.csv"; MinRating=50; _tmp1_="---- Trading system 1 ----"; T1.Enabled=1; T1.Magic=101; T1.lot=0.1; T1.Fast=10; T1.Slow=100; T1.TS=7000; T1.PeriodRating=20; _tmp2_="---- Trading system 2 ----"; T2.Enabled=1; T2.Magic=102; T2.lot=0.1; T2.PeriodCCI=30; T2.LevelCCI=200; T2.SL=500; T2.PeriodRating=10; _tmp3_="---- Trading system 3 ----"; T3.Enabled=1; T3.Magic=103; T3.lot=0.1; T3.Fast=30; T3.Slow=200; T3.TS=5000; T3.PeriodRating=2; _tmp4_="---- Trading system 4 ----"; T4.Enabled=1; T4.Magic=104; T4.lot=0.1; T4.SL=5000; T4.TS=5000; T4.LimitMACD=0.002; T4.PeriodRating=60; _tmp5_="---- Trading system 5 ----"; T5.Enabled=1; T5.Magic=105; T5.lot=0.1; T5.PeriodCCI=90; T5.LevelCCI=100; T5.TralingCCI=100; T5.SL=5000; T5.TS1=5000; T5.PeriodRating=10;






Balken im Test

2994

Modellierte Ticks

219840

Qualität der Modellierung

n/a

Ursprüngliche Einzahlung

500000,00





Gesamter Nettogewinn

617173,70

Bruttogewinn

1342671,82

Bruttoverlust

-725498,13

Gewinnfaktor

1,85

Erwartete Auszahlung

2373,74



Absolute Inanspruchnahme

76798,13

Maximale Inanspruchnahme

172676,05 (28,98%)

Relative Inanspruchahme

28,98% (172676,05)


Gesamtanzahl der trades

260

Short Positionen (gewinnbringend %)

126 (29,37%)

Long Positionen (gewinnbringend %)

134 (33.,58%)


Gewinnbringende Trades (% von Gesamtanzahl)

82 (31,54%)

Verlustbringende Trades (% von Gesamtanzahl)

178 (68,46%)

Größter

gewinnbringender Trade

78151,67

verlustbringender Trade

-18831,39

Durchschnittlicher

gewinnbringender Trade

16374,05

verlustbringender Trade

-4075,83

Maximale Anzahl

aufeinanderfolgender Gewinne (Gewinn)

6 (89681,19)

aufeinanderfolgender Verluste (Verlust)

21 (-100325,23)

Maximaler

aufeinanderfolgender Gewinn (Anzahl der Gewinne)

95057,65 (3)

aufeinanderfolgender Verlust (Anzahl der Verluste)

-100325,23 (21)

Durchschnittlich

aufeinanderfolgende Gewinne

2

aufeinanderfolgende Verluste

4



Abbildung 11.Der Test des Multi-System Expert Advisor ohne Anpassung

Das Ergebnis der Kombination der Handelssysteme ist ein erhöhter Gewinn, eine erhöhte Inanspruchnahme und eine größere Anzahl von Trades.

Sehen wir uns nun den gleichen Test, aber mit dem aktivierten RatingON Parameter an.

Zeitraum

Tag (D1) 24.05.1999 00:00 - 05.07.2010 00:00 (01.01.1999 - 05.07.2010)

Modell

Kontrollpunkte (eine sehr grobe Methode, die Ergebnisse dürfen nicht berücksichtigt werden)

Parameter

RatingON=true; FastTest=true; file="virtual.csv"; MinRating=1; _tmp1_="---- Trading system 1 ----"; T1.Enabled=1; T1.Magic=101; T1.lot=0.1; T1.Fast=10; T1.Slow=100; T1.TS=7000; T1.PeriodRating=20; _tmp2_="---- Trading system 2 ----"; T2.Enabled=1; T2.Magic=102; T2.lot=0.1; T2.PeriodCCI=30; T2.LevelCCI=200; T2.SL=500; T2.PeriodRating=10; _tmp3_="---- Trading system 3 ----"; T3.Enabled=1; T3.Magic=103; T3.lot=0.1; T3.Fast=30; T3.Slow=200; T3.TS=5000; T3.PeriodRating=2; _tmp4_="---- Trading system 4 ----"; T4.Enabled=1; T4.Magic=104; T4.lot=0.1; T4.SL=5000; T4.TS=5000; T4.LimitMACD=0.002; T4.PeriodRating=60; _tmp5_="---- Trading system 5 ----"; T5.Enabled=1; T5.Magic=105; T5.lot=0.1; T5.PeriodCCI=90; T5.LevelCCI=100; T5.TralingCCI=100; T5.SL=5000; T5.TS1=5000; T5.PeriodRating=10;






Balken im Test

2994

Modellierte Ticks

219840

Qualität der Modellierung

n/a

Ursprüngliche Einzahlung

500000,00





Gesamter Nettogewinn

227123,75

Bruttogewinn

388438,79

Bruttoverlust

-161315,05

Gewinnfaktor

2,41

Erwartete Auszahlung

2341,48



Absolute Inanspruchnahme

10921,17

Maximale Inanspruchnahme

76482,03 (12,48%)

Relative Inanspruchnahme

12,48% (76482,03)


Gesamtanzahl der Trades

97

Short Positionen (gewinnbringend %)

50 (40,00%)

Long Positionen (gewinnbringend %)

47 (46,81%)


Gewinnbringende Trades (% von Gesamtanzahl)

42 (43,30%)

Verlustbringende Trades (% von Gesamtanzahl)

55 (56,70%)

Größter

gewinnbringender Trade

71192,28

verlustbringender Trade

-12680,47

Durchschnittlicher

gewinnbringender Trade

9248,54

verlustbringender Trade

-2933,00

Maximale Anzahl

aufeinanderfolgender Gewinne (Gewinn)

5 (80463,85)

aufeinanderfolgender Verluste (Verlust)

13 (-50753,48)

Maximaler

aufeinanderfolgender Gewinn (Anzahl der Gewinne)

80463,85 (5)

aufeinanderfolgender Verluste (Anzahl der Verluste)

-50753,48 (13)

Durchschnittlich

aufeinanderfolgende Gewinne

2

aufeinanderfolgende Verluste

3


Abb. 12.Der Test des Multi-System Expert Advisor mit aktivierter Anpassung

Die Bilanzlinie ist abgeflacht, die Anzahl der dramatischen Inanspruchnahmen hat sich verringert, der Gewinn ist um das 2,71-fache gestiegen, die Inanspruchnahme ist um das 2,32-fache gesunken, die Anzahl der Trades ist um das 2,68-fache gesunken, der Gewinnfaktor hat sich um das 1,3-fache erhöht.

In Abb. 12 ist anders als in den vorangegangenen Tests, das Diagramm mit den Volumen erschienen. Es ist als Ergebnis des aktiven Bewertungssystems aufgetreten.

Es agiert auf folgende Art und Weise - zuerst werden die Gewinne Tх.PeriodRating aller geschlossenen virtuellen Trades summiert. Der erhaltene Wert wird durch die Anzahl der Tage dividiert, an denen die Trades durchgeführt wurden. Der erhaltene Wert wird dem kumulativen Gewinn aus allen offenen Positionen hinzugefügt und die Summe wird dann durch die Anzahl der Tage dividiert, die sie bereits aktiv sind.

Wenn der erhaltene Wert negativ ist, dann wird er auf Null gestellt. Dieser Vorgang wird für jedes Handelssystem durchgeführt.

Das Bewertungssystem zeigt ein Handelssystem nach dem anderen, wobei magische Zahlen verwendet werden, die den aktiven Handelsstrategien in den Tх.Magic ursprünglichen Parametern zugeordnet sind. Es sucht nach dem profitabelsten Handelssystem, indem es den größten Wert beim Gewinn sucht. Dieses Handelssystem wird dann mit 100% bewertet.

Allen anderen Handelssystemen werden Bewertungen zugewiesen, die in Relation zum führenden Handelssystem stehen. Am Ende wird eine Tabelle mit drei Spalten erstellt.

Beispiel:

Magie
Gewinn
Bewertung, %
1
9
40.9
2
0
0.0
3
3
13.6
4
10
45.5
5
0
0.0
6
17
77.3
7
0
0
8
12
54.5
9
0
0.0
10
22
100.0

Beim realen Handel wird der erhaltene Wert für die Bewertung mit dem Einsatzbetrag Tх.lot multipliziert und danach durch 100 dividiert. In diesem Fall werden alle Handelssysteme mit einer Bewertung größer als Null am realen Handel teilnehmen.

Damit nur das führende Handelssystem am realen Handel teilnimmt, stellen Sie den Parameter MinRating im Competition_v1.0 Exper Advisor auf 100 ein.

Fazit

Die vorgestellte Methode gibt keine hundertprozentige Garantie, dass ein Gewinn erzielt wird; ich kann Ihnen allerdings sagen, dass die Glättung der Bilanzkurve gewährleistet ist. Und zwar wird eine Abnahme beim Gewinn, bei der Inanspruchnahme und bei der Anzahl ausgeführter Trades garantiert. Eine Erhöhung des Gewinnfaktors ist wahrscheinlich.

Es liegt an Ihnen zu entscheiden, ob sie gut ist oder nicht.

Die Beschreibung der Parameter des Competition_v1.0.mq4 Expert Advisor:

  • RatingOn – Bewertung einschalten (wenn ausgeschaltet, müssen die Trades in der Datei dem realen Handel entsprechen)
  • FastTest – ändern Sie nicht die Datei, bei jeder Änderung der Anordnung von virtuellen Trades während dem Testen.
  • file - Datei des virtuellen Handels (erscheint im Ordner TerminalPath()+"\experts\files")
  • MinRating – Mindestbewertung (in Prozent), die für das Eröffnen einer echten Position erforderlich ist
  • Tх.Enabled – Handelssystem-Schalter
  • Tх.Magic – magische Nummer
  • Tх.lot – maximales Volumen, das für den Handel verwendet wird, wenn die Bewertung 100% ist
  • Tх.Fast– Zeitraum des schnellen МА
  • Tх.Slow– Zeitraum des langsamen MА
  • Tх.SL – Stop Loss in Punkten
  • Tх.TS1 – einmalig nachziehender Stop in Punkten (zieht den Stop Loss zu einem Break-Even-Punkt)
  • Tх.TS– nachziehender Stop in Punkten
  • Tх.PeriodRating - Zeitraum zur Mittelwertbildung für die Bewertung (Anzahl der Trades in der Historie)
Links zu ähnlichen Themen: http://forum.mql4.com/ru/23455

Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalartikel: https://www.mql5.com/ru/articles/1578

Beigefügte Dateien |
RealTrend.mqh (8.17 KB)
VirtualTrend.mqh (36.03 KB)
Verbesserung der Codequalität mit Hilfe eines Komponententests Verbesserung der Codequalität mit Hilfe eines Komponententests
Selbst einfache Programme haben oft Fehler, die unglaubhaft zu sein scheinen. "Wie konnte ich das kreieren?" ist unser erster Gedanke, wenn ein solcher Fehler aufgedeckt wird. "Wie kann ich so etwas verhindern?" ist die zweite Frage, die uns aber weniger häufig in den Sinn kommt. Es ist unmöglich, einen absolut einwandfreien Code zu kreieren, vor allem bei großen Projekten, but es ist möglich, Technologien für eine rechtzeitige Fehlererkennung zu verwenden. Der Artikel beschreibt, wie die MQL4 Codequalität mit Hilfe des beliebten Komponententestverfahren verbessert werden kann.
Die Magie der Filtration Die Magie der Filtration
Die meisten Entwickler automatischer Handelssysteme verwenden irgendeine Form von Filtration für Handelssignale. In diesem Artikel erkunden wir die Erstellung und Implementierung von Bandpass- und diskreten Filtern für Expert Advisors, um die Eigenschaften des automatisierten Handelssystems zu verbessern.
Die Verwendung von WinInet in MQL5   Teil 2:  POST-Anfragen und -Dateien Die Verwendung von WinInet in MQL5 Teil 2: POST-Anfragen und -Dateien
In diesem Artikel werden wir uns weiterhin mit den Grundlagen von internetbasierten HTTP-Anfragen und dem Informationsaustausch mit Servern befassen. Es werden neue Funktionen der CMqINet-Klasse, Methoden der Informationsübertragung mit Formularen, das Senden von Dateien mit POST-Anfragen sowie Autorisierungen auf Webseiten mit Ihrem Login unter Verwendung von Cookies behandelt.
Schützt Euch Selbst, Entwickler! Schützt Euch Selbst, Entwickler!
Der Schutz geistigen Eigentums ist immer noch ein großes Problem. Dieser Artikel beschreibt die grundlegenden Prinzipien des MQL4-Programme Schutz. Mit diesen Prinzipien können Sie sicherstellen, dass die Ergebnisse Ihrer Entwicklungen nicht von einem Dieb gestohlen werden, oder zumindest seine "Arbeit" zu erschweren, so sehr, dass er sich einfach weigern wird es zu tun.