Entwicklung eines plattformübergreifenden Grider-EAs (Teil II): Kursspannenbasiertes Raster in Trendrichtung

31 Juli 2019, 08:39
Roman Klymenko
0
179

Einführung

Im vorherigen Artikel habe ich einen einfachen Grider-EA entwickelt, der sowohl im MetaTrader 4 als auch im MetaTrader 5 läuft. Sein Hauptmerkmal ist, dass er nach der Platzierung eines Netzes keine neuen Aufträge hinzufügt, bis das aktuelle Netz mit einem Gewinn oder einem maximalen Gesamtverlust geschlossen wird.

Nach den Tests zeigte unser Grider seit 2018 einen Gewinn. Leider gilt dies nicht für den Zeitraum 2014-2018, der durch einen stetigen Verlust der Einlage gekennzeichnet ist. Daher ist die Verwendung auf einem realen Konto zu gefährlich. In diesem Artikel werden wir einen Grider-EA entwickeln, der auf einer neuen Handelsidee basiert.

Handelssystem

Die Grundidee des EAs aus dem ersten Teil des Artikels basiert auf der Annahme, dass sich der Preis am häufigsten in eine bestimmte Richtung bewegt. Das bedeutet, dass, wenn wir mehrere Aufträge in die falsche Richtung öffnen, neue Aufträge, die in die richtige Richtung geöffnet werden, in der Lage sind, Verluste auszugleichen. So können wir früher oder später den notwendigen Gewinn für alle offenen Aufträge erzielen. Bei der Umsetzung dieser Idee setzen wir ein Raster von N Kaufaufträgen über den aktuellen Preis und das Raster mit der gleichen Anzahl von Verkaufsaufträgen unter dem aktuellen Preis.

Weitere Tests zeigten jedoch, dass der Preis oft einen oberen Auftrag aktiviert und dann einen unteren Auftrag, nur um wieder nach oben zu gehen. So aktiviert es allmählich alle oder fast alle Kauf- und Verkaufsaufträge, wodurch alle potenziellen Gewinne auf Null reduziert werden. Anscheinend ist ein solches Handelssystem bei weitem nicht perfekt.

Wenn dieses Preisverhalten jedoch so häufig ist und sich der Forex-Preis oft innerhalb einer Spanne bewegt, warum nutzen wir das dann nicht zu unserem Vorteil? Wir werden weiterhin ein Raster auf Kauf über dem aktuellen Preis und eines für Verkauf darunter setzen. Aber wir werden zwei wichtige Änderungen vornehmen.

Zuerst werden wir einen Take-Profit für jede Position und nicht für die gesamte Positionskette festlegen. Einstellungen zur Konfiguration eines Stop-Loss für jede einzelne Order sind ebenfalls zu implementieren. Die Tests zeigen jedoch, dass die Anwendung der Stop-Loss' keinen Gewinn bringt. Deshalb werden wir sie nicht nutzen.

Zweitens werden wir ständig neue Limit-Orders in das Raster aufnehmen, wenn der aktuelle Preis vom vorherigen abweicht. Limit-Orders, von denen der Preis zu weit entfernt ist, werden entfernt. Wenn der Preis also um einen Schritt nach oben geht, fügen wir am Ende des aktuellen Netzes über dem Preis eine neue Kauf-Limit-Order hinzu, eine Verkaufs-Limit-Order wird unter dem aktuellen Preis hinzugefügt, um der erste zu sein, während die letzte Short-Limit-Order unter dem aktuellen Preis entfernt wird. Somit folgt unser Raster dem Preis.

Während eines Trends erhalten wir während der Trendbewegung Auftragsgewinne. Im Falle einer Korrektur erhalten wir Gewinnmitnahmen in Richtung des Trends. Wenn sich der Preis also in einem höheren Zeitrahmen in eine sich ändernde Richtung bewegt, werden wir unabhängig von der Preisrichtung Gewinn erzielen.

Lassen Sie uns nun die tatsächlichen Ergebnisse überprüfen.

Entwicklung der EA-Basisversion

Im Gegensatz zum ersten Artikel werden wir hier nicht den Quellcode des EA analysieren. Sowohl der Quellcode als auch die kompilierte EA für MetaTrader 4 und MetaTrader 5 sind dem Artikel beigefügt, damit Sie einen Blick darauf werfen können. In diesem Artikel werden wir den Algorithmus aufbauen und die Tests durchführen.

Abstand zwischen den Aufträgen des Rasters.

Wir beginnen mit dem Abstand zwischen den Limit-Orders im Raster. Alle Limit-Orders sollten in einen ähnlichen Abstand voneinander gesetzt werden. Dies ist kein Problem, wenn wir das gesamte Raster auf einmal einstellen, ohne es bei Preisänderungen zu bearbeiten. Unser Raster ist jedoch "fließend". Bevor wir eine neue Limit-Order festlegen, müssen wir irgendwie definieren, ob in diesem Rasterschritt eine Limit-Order vorhanden ist.

Wir können nicht einfach überprüfen, ob die Limit-Order zum gleichen Preis vorhanden ist. Der Preis der Order kann um einige Punkte höher oder niedriger sein. Wenn wir dies nicht berücksichtigen, kann unser EA Hunderte von Limit-Orders zu relativ ähnlichen Preisen setzen, die unseren Handel ruinieren.

Um dieses Problem zu vermeiden, werden wir den Abstand zwischen den Limit-Orders in Punkten nicht festlegen. Stattdessen verwenden wir eine Preisdekade, um den Abstand zwischen den Rasterschritten festzulegen. Dies geschieht durch den Parameter Decade for limit orders EA.

Wenn sein Wert positiv ist, gibt er die Dezimalstelle an, auf der die Orders des Rasters gesetzt werden sollen. Der Wert von 2 bedeutet beispielsweise, dass das Gitter bei jedem 1/100 der Preisstufe gesetzt wird. Wenn der aktuelle Preis beispielsweise 1,1234 beträgt, wird das obere Raster für den Kauf auf 1,13, 1,14, 1,15,... eingestellt, während das für den Verkauf auf 1,11, 1,10, 1,09,... eingestellt wird. Mit anderen Worten, der Abstand zwischen den Orders der Raste beträgt 100 Punkte bei 4- und 5-stelligen Symbolen (die meisten Forex-Symbole).

Zum gleichen Preis der Dekade 3 wird das Raster auf der dritten Dezimalstelle liegen:

  • Kauf: 1.124, 1.125, 1.126, 1.127, 1.127, ...;
  • Verkauf: 1.122, 1.121, 1.12, 1.119, ... .

So haben wir den Abstand zwischen den Ordnungen von 10 Punkten. Wenn der Parameterwert 0 ist, hat das Raster den Schritt 1 (z.B. bei 111, 112, 113, 114).

Auch negative Werte werden von diesem Parameter unterstützt. Sie verschieben die Dekade vom Dezimalpunkt nach links. Zum Beispiel bedeutet -1, dass das Gitter mit dem Schrittweite 10 eingestellt wird, während -2 den Schritt 100 bedeutet.

Dieses Platzierungsverfahren des Rasters vereinfacht die Prüfung auf Vorhandensein einer Limit-Order in einer notwendigen Rasterschrittweite, ermöglicht aber auch die Berücksichtigung von Niveaus, die sich aus runden Preisen im Handel ergeben. Tatsächlich haben wir die Limit-Orders in runden Preisen festgelegt.

Es gibt noch einen weiteren Parameter, der die Rasterschrittweite beeinflusst — "Shift in points". Es ermöglicht die Verschiebung der Rasterschrittweite vom runden Preis auf die angegebene Punktzahl. So wird beispielsweise im Falle einer Dekade von 2 und dem Shift (Versatz) von 1 das Raster nicht bei 1.12, 1.13, 1.14, sondern bei 1.121, 1.131, 1.141 platziert, wenn es sich um Kauf-Orders über dem aktuellen Preis und bei 1.119, 1.129, 1.139, wenn es sich um Verkaufs-Orders unter dem aktuellen Preis handelt. Auf diese Weise können wir die Verwendung von runden Preisen noch besser abdecken, in der Hoffnung, dass der Preis in einem ungünstigen Szenario eine Limit-Order nicht berührt, bevor er sich in die entgegengesetzte Richtung bewegt.

Was den Parameter "Shift in points" betrifft, so zeigt der Test, dass er nicht immer zu einem positiven Ergebnis führt.

Haupt EA-Parameter.

Abgesehen von den oben genannten Parametern hat der EA mehrere weitere Parameter:

EA-Parameter

Die wichtigsten unter ihnen sind die folgenden:

  • "Lot size". Die Losgröße definiert das Lot-Volumen, das bei der Festlegung der einzelnen Limit-Orders verwendet wird.
  • "Max number of limit orders in one direction" Parameter. Dieser Parameter definiert die Anzahl der Limit-Orders im Raster auf einer Seite des Preises. Mit anderen Worten, das Raster besteht immer aus einem doppelten Wert dieses Parameters. Sobald sich der Preis in eine der Netzrichtungen bewegt und Limit-Orders in offene Positionen verwandelt, eröffnet der EA neue Limit-Orders (Schließen derjenigen, die zu weit vom Preis entfernt sind), so dass ihre Gesamtzahl auf jeder Seite des Preises wieder dem Parameter entspricht. Genauer gesagt, werden neue Limit-Orders gesetzt, wenn ein neuer Balken im Zeitrahmen erscheint, in dem der EA gestartet wird.
  • "Order take profit". Der Parameter definiert für jede einzelne Limit-Order einen Take-Profit und wird in EA-Rasterschrittweiten angegeben. Der Wert von 2 zeigt beispielsweise an, dass die Position geschlossen ist, wenn sich der Preis zwei nächste Limit-Orders im Raster in seine Richtung bewegt. Wenn Decade for limit orders 3 ist, wird der tatsächliche Take-Profit auf 0,002 des aktuellen Preises (20 Punkte Gewinn) gesetzt.
  • "Order stop loss". Der Parameter definiert für jede Limit-Order in EA-Rasterschritten einen Stop-Loss. Nach den Tests, ist die Platzierung von Stop-Loss in dieser Art von Grider-EA ist ineffizient, daher werden wir sie nicht verwenden.

Ein Take-Profit für einzelne Aufträge sollte separat erwähnt werden. Ein optimaler Wert für diesen Parameter hängt hauptsächlich von der Preisbewegung des Symbols ab. Meistens liegt sie jedoch im Bereich von 1-5. Sowohl die Werte, die näher bei 1, als auch die Werte, die näher bei 5 liegen, haben ihre Vorteile.

Je niedriger der Wert, desto geringer der Positionsgewinn und desto schneller wird sie geschlossen. Dies bietet zwei Vorteile:

  • Selbst in einem kleinen Bereich werden Positionen mit Gewinn bei jeder Preisbewegung in eine der Richtungen eröffnet und geschlossen;
  • Da der Take-Profit gering ist, lässt der Preis bei Korrekturen weniger Aufträge in die entgegengesetzte Richtung, wodurch die Belastung der Einlage reduziert wird.

Ein großer Take-Profit ist ebenfalls von Vorteil:

  • bei großen Trendbewegungen ist der Gesamtgewinn höher, wenn große Take-Gewinne verwendet werden.

So ist bei kleinen Take-Profit der Drawdown des Kontos (und ein potenzieller Gewinn) geringer.

Schließen aller Positionen. Neben dem Take-Profit für einzelne Netzaufträge können Sie bei bestimmten Ereignissen mit einer Reihe weiterer Parameter alle offenen Positionen schließen. Alle diese Parameter sind in einer separaten Gruppe "Closing all positions" zusammengefasst:

  • "Profit, $". Schließen aller offenen Positionen, wenn der Gesamtgewinn eine bestimmte Summe in $ erreicht.
  • "If equity increased, $". Schließen aller offenen Positionen, wenn das Kapital aktuell (um einen bestimmten Wert in $) größer ist als beim Öffnen eines Anfangsrasters. Wenn das Schließen aller Positionen verwendet wird, ist diese Option besser geeignet.
  • "Close all at price exceeding". Dies ist ein Schutzparameter, der das Schließen aller offenen Positionen ermöglicht, wenn der Preis die gehandelte Spanne nach oben verlässt. Es ist ein Preis, zu dem alle offenen Positionen geschlossen werden sollen.
  • "Close all at price less than". Dies ist ein Schutzparameter, der das Schließen aller offenen Positionen ermöglicht, wenn der Preis die gehandelte Spanne nach unten verlässt.

Zunächst mag das Schließen aller Positionen beim Verlassen des Bereichs sehr attraktiv erscheinen. In der Praxis zerstört das jedoch meist den gesamten zuvor erzielten Gewinn. Wie wir unten sehen werden, ist die Entscheidung, was zu tun ist, nachdem der Preis seine Spanne verlassen hat und ein starker Trend zu erkennen ist, ein wesentlicher Bestandteil dieser Handelsstrategie.

Andere Parameter. Wir haben nur einen kleinen Teil der im EA vorhandenen Parameter analysiert. Im Folgenden werden wir uns einige weitere Parameter ansehen. Es gibt jedoch einige Parameter, die wir nicht anwenden werden. Ihre Namen sind mit (-) gekennzeichnet. Jeder von ihnen setzt eine bestimmte Idee um, aber ihre Anwendung bringt keine positiven Ergebnisse. Obwohl sie für uns nutzlos sind, werden wir sie uns trotzdem besprechen. Sie können sie in Ihren Strategien verwenden oder einige Möglichkeiten finden, sie zu verbessern.

Testwerkzeuge

Bevor wir mit dem Test beginnen, lassen Sie uns noch einmal einen Blick auf die Idee werfen, auf der das EA basiert, und wie es umgesetzt wird.

Es ist recht schwierig, die Preisbewegung der meisten Vermögenswerte mit relativer Sicherheit vorherzusagen. Der Preis kann zunächst steigen und ein neues Hoch bilden und dann sinken und ein neues Tief ausbilden. Dann ändert sich die Bewegung wieder, und der Preis steigt etwas niedriger als das vorherige Hoch oder bildet ein neues. Langfristige unidirektionale Preisbewegungen werden in der Regel von Korrekturen begleitet. Das ist genau das, was wir brauchen, denn wir werden unabhängig von der Preisrichtung Gewinne erzielen.

Dazu werden wir Limit-Orders über und unter dem aktuellen Preis platzieren. Die Orders sind in ähnlichem Abstand voneinander zu platzieren. Über dem Preis werden wir Kauf-Orders setzen, wobei wir davon ausgehen, dass, wenn der Preis derzeit steigt, dies auch später der Fall sein wird. Verkaufs-Orders sind unterhalb des Preises zu platzieren.

Die Anzahl der Orders im Raster wird über den Parameter "Max number of limit orders in one direction" eingestellt. Dieser Wert ist hier nicht so wichtig. Wenn ein neuer Balken in einem Zeitrahmen erscheint, in dem das EA gestartet wird, werden wir neue Aufträge zum Netz hinzufügen, wenn der Preis eine der aktuellen Aufträge berührt und sie in eine offene Position verwandelt.

So kann der Parameter "Max number of limit orders in one direction" nur während der sehr schnellen und starken Preisbewegungen relevant sein, wenn der Preis alle Orders des Rasters innerhalb eines einzigen Balkens des Zeitrahmens durchbricht, das sich danach in die gleiche Richtung bewegt.

Zeitrahmen. Die Tests zeigten, dass der EA bessere Ergebnisse auf M5 liefert. Deshalb werden wir hier alle Tests durchführen.

Wahl des Marktes. Die Idee, auf der der EA basiert, macht deutlich, dass Seitwärtsmärkte (einschließlich Forex) die besten für ihn sind. Außerdem wäre es gut, wenn eine Seitwärtsbewegung auf dem Zeitrahmen von W1 oder MN zu sehen wäre, in dem sich der Preis befindet.

Lassen Sie uns zum Beispiel einen Blick auf AUDCAD werfen:

AUDCAD MN

Es gibt eine Seitwärtsbewegung in den letzten 5-10 Jahren. Theoretisch sollte die von uns gewählte Handelsstrategie perfekt für AUDCAD und ähnliche Symbole sein. Überprüfen wir das.

Wir werden den EA mit den folgenden Symbolen testen: EURUSD, AUDUSD und AUDCAD. Für alle Symbole testen wir eine Rasterschrittweite von 10 Punkten (Dekade 3). Wir können mit der größeren Schrittweite von 100 Punkten (Dekade 2) handeln, aber dies wäre ein langfristiger Handel mit einer kleinen Anzahl von Positionen pro Jahr.

Testzeitraum.

In diesem Artikel sind wir nicht an Zeiträumen interessiert, die weniger als ein Jahr dauern. Zu Testzwecken werden wir uns den Zeitraum von 4 Jahren (2015-2019) ansehen und genau für diesen Zeitraum nach den profitabelsten Einstellungen suchen. Der EA besteht den Test nicht für Zeiträume von mehr als 10 Jahren oder besteht ihn mit kleinen Gewinnen bei niedrigen Take-Profits. Also, dies ist kein "Start-und-läuft-10-Jahre" EA.

Testen von EURUSD mit der Stufe von 10 Punkten (Dekade 3)

Zuerst einmal wollen wir die Grundidee der Handelsstrategie testen. Alle Parameter sind standardmäßig eingestellt, auch die, die wir bereits analysiert haben:

  • Kein Stop-Loss;
  • Kein Schließen aller Positionen durch eine Bedingung.

Die Optimierung erfolgt durch einen Take-Profit für einzelne Aufträge sowie durch den Parameter "Shift in points". Optimierungsmethode — 1 Minute OHLC. Danach wird das Endergebnis mit der Methode "Jeder Tick" getestet. Berichte über alle Tests sind dem Artikel beigefügt.

Nach dem Test wurden die besten Ergebnisse mit einem Take-Profit von 2 und einem Shift von 1 Punkt erzielt:

Der erste Test auf EURUSD

Die wichtigsten Testergebnisse:

Symbol
 Max Drawdown
Gewinn
 Erholungsfaktor
 Profit Faktor  Positionen
 EURUSD
 23 522
 20 641
 0.88
 1.39
 40 536

Obwohl wir am Ende einen Gewinn erzielt haben, sind die Ergebnisse nicht zufriedenstellend. Dies wird deutlich durch den Erholungsfaktor, der 0,88 entspricht.

Tatsächlich zeigt der Erholungsfaktor das Verhältnis eines Gewinns zum Maximalen Drawdown an (der Gewinn wird durch den maximalen Drawdown geteilt). Wenn der Wert kleiner als 1 ist, ist der Gewinn niedriger als der Drawdown des EAs.

Ich glaube, die meisten von uns wären mit einem Gewinn von mindestens 100% der Einlage pro Jahr zufrieden. Da wir den Test über den Zeitraum von 4 Jahren durchführen, wären wir mit einem Erholungsfaktor von mehr als 4 zufrieden. Versuchen wir, unser Handelssystem zu verbessern.

"Do not place the nearest orders".

Wie bereits erwähnt, wendet der EA ein gleitendes Raster an, das der Preisbewegung folgt. Wenn sich der Preis nach oben bewegt, setzt der EA eine zusätzliche Limit-Order für den aktuellen Preis.

Aber was ist, wenn die nächstgelegenen Orders bei Korrekturen oft berührt werden und nicht durch den Take-Profit geschlossen werden? Lassen Sie uns zusätzliche Orders deaktivieren, die zu nah am Preis liegen. Dies kann durch den booleschen Parameter " Do not place the nearest orders" erreicht werden. Mal sehen, was nach der Aktivierung passiert:

Der zweite Test mit EURUSD, Dekade 3

Die Unterschiede sind micht so deutlich. Vielleicht zeigen uns die Testergebnisse mehr:

Symbol
 Max Drawdown
Gewinn
 Erholungsfaktor
 Profit Faktor  Positionen
 EURUSD
 12 987
 15 302
 1.18
 1.64
 21 350

Wir haben die Anzahl der Positionen fast auf die Hälfte reduziert. Wenn Sie von den Broker-Boni profitieren wollen, ist das keine gute Nachricht. Auch das Gewinnniveau ist gesunken. Der maximale Drawdown hat sich jedoch fast zweimal verringert und der Erholungsfaktor ist größer als 1.

Der Parameter wirkt bei anderen Werkzeugen im Falle von Dekade 3 genauso (der Abstand zwischen den Orders des Rasters beträgt 10 Punkte). Es ermöglicht die Reduzierung der Anzahl der Positionen, da kleine Preiskorrekturen das Raster nicht erreichen. Befindet sich der Preis derzeit in einem Trend, ist das Szenario vielversprechend. Aber wenn wir uns in einer Seitwärtsbewegung befinden (und der Preis wäre sowieso zu der zuvor geöffneten Order zurückgekehrt), reduziert die Verwendung dieses Parameters das Gewinnpotenzial.

"Entry in the bar direction".

Lassen Sie uns unseren EA weiter verbessern. Fast alle Handels-Gurus empfehlen, nur mit einer lokalen Trendrichtung zu handeln. Wie kann man einen solchen Trend definieren? Ganz einfach. Wenn sich der Kurs gegenüber einem vorherigen Balken nach oben bewegt hat, wird nur gekauft und umgekehrt.

In der Regel wird empfohlen, einen lokalen Trend auf den Tagescharts zu analysieren. Mit anderen Worten, wenn der Preis gestern gestiegen ist, wird heute gekauft. Wenn er sich nach unten bewegt, verkauft. Folgen wir dieser Empfehlung. Neben D1 werden wir auch andere Zeitrahmen testen.

Um den Handel in Barbewegungsrichtung zu konfigurieren, verwenden wir die EA-Parameter aus der Gruppe "In bar direction":

  • "Use entry by bar only". Setzen Sie den auf true, um die Funktion zu aktivieren.
  • "Bar accounting type". Ich versuchte zu vermeiden, gegen den Balken oder mit dem minimalen Take-Profit zu eröffnen. Die Option mit dem minimalen Take-Profit war immer schlechter, daher ist der Standardparameterwert " Do not enter" und ich empfehle, ihn intakt zu lassen.
  • "Balkenindex". In einigen Handelssystemen wird empfohlen, einen lokalen Trend sowohl mit den gestrigen als auch mit den heutigen Balken zu definieren. Mit anderen Worten, wenn sich der Preis gestern nach oben bewegt hat und auch die heutige Bar bullish ist, sollten Sie nur bei Long einsteigen. Lassen Sie uns auch diese Option überprüfen. Der Parameter hat die folgenden Werte: bar 1 (nur den vorherigen Balken prüfen), bar 0 (nur den aktuellen Balken prüfen), bars 0 and 1 (sowohl der vorherige als auch der aktuelle Balken sollten sich in die gleiche Richtung bewegen). Die Tests zeigten, dass die Option bar 1 immer die besseren Ergebnisse liefert. Daher empfehle ich, diesen Parameter intakt zu lassen.
  • "Zeitrahmen". Wählt den Zeitrahmen aus, dessen Balken überprüft werden sollen.

Nach dem Testen der Eingabe durch die Bar in verschiedenen Zeiträumen stellte sich heraus, dass der MN-Zeitrahmen für EURUSD am besten funktioniert:

Prüfung der Eröffnung per Bar mit EURUSD

Die Testergebnisse, dargestellt als Tabelle:

Symbol
 Max Drawdown
Gewinn
 Erholungsfaktor
 Profit Faktor  Positionen
 EURUSD
 13 044
 19 227
 1.48
 1.8
 23 445

Die Eröffnung per Balken verbessert die Ergebnisse für alle Symbole. Die Eröffnung per Bar auf MN ist jedoch höchstwahrscheinlich eine Ausnahme, da D1 in den meisten Fällen perfekt funktioniert. Da wir ein Raster zu einem bestimmten Zeitpunkt nur in eine Richtung einstellen, macht es keinen Sinn, den Parameter "Do not place the nearest orders" zu verwenden.

Handel in einer Seitwärtsbewegung. Wie im Artikelgegenstand angegeben, ist der EA für den Handel in einer Seitwärtsbewegung konzipiert. Wenn sich der Preis also in einer Seitwärtsbewegung auf dem W1- oder MN-Chart befindet, sollten seine Handelsergebnisse besser sein. Lassen Sie uns das überprüfen, indem wir eine Handelsspanne festlegen. Wir benötigen dafür die Parameter "Do not open Long if the price is less than", "Do not open Long if the price exceeds", "Do not open Short if the price is less than" und "Do not open Short if the price exceeds".

Stellen Sie die Parameter "Do not open Long if the price exceeds" und "Do not open Short if the price exceeds" ungefähr auf 1.17849. Die restlichen beiden Parameter auf 1.09314:

Der Handel innerhalb der Spanne mit EURUSD

Die Ergebnisse haben sich definitiv verbessert:

Symbol
 Max Drawdown
Gewinn
 Erholungsfaktor
 Profit Faktor  Positionen
 EURUSD
 2 412
 10 964
 4.55
 6.16
 6 974

"Close all positions when increasing equity".

Am Anfang des Artikels haben wir die Parametergruppe "Closing all positions" beschrieben. Sie beinhaltet den Parameter " When equity increased, $". Die Logik sagt uns, dass der Parameter unsere Ergebnisse verbessern sollte, da er es ermöglicht, alle im Moment eröffneten, verlustbringenden Positionen zu schließen und neu zu handeln. Um dies zu tun, warten Sie einfach, bis der Preis in die Spanne kommt und das Kapital unseres Kontos um den angegebenen Wert erhöht wird. Laut den Handels-Gurus bewegt sich der Preis in einem Bereich von 70% seiner gesamten Zeit.

In Wirklichkeit verbessert die Verwendung dieses Parameters nicht immer die Ergebnisse. Dies geschieht wahrscheinlich deshalb, weil wir verlustbringende Positionen schließen, die sich durch eine Preisumkehr in profitable wandeln könnten.

In unserem Fall verbessert der Parameter "When equity increased, $" jedoch tatsächlich die Ergebnisse. Der Wert von $2.000 erwies sich als der beste:

Test des Schließens aller Positionen bei der Erhöhung des Kapitals mit EURUSD

Die Testergebnisse:
Symbol
 Max Drawdown
Gewinn
 Erholungsfaktor
 Profit Faktor  Positionen
 EURUSD
 3 200
 18 532
 5.79
 3.8
 6 954

Dies ist der letzte Test mit EURUSD, also lassen Sie uns einige Schlussfolgerungen ziehen. Es ist uns gelungen, die Rentabilität von fast 150% pro Jahr bei Verwendung einer festen Losgröße zu steigern. Mit anderen Worten, wenn wir die Losgröße bei der Erhöhung des Kontostandes erhöhen, können wir viel mehr Gewinn erzielen.

Die Ergebnisse sind jedoch nicht beeindruckend. Wir haben 150% pro Jahr erhalten, während der Drawdown fast 100% beträgt. Die meisten Investoren verlangen, dass der Drawdown 20% der Einlage nicht übersteigt. Ich denke, das ist eine etwas seltsame Anforderung, da in diesem Fall 80% des Saldos ungenutzt bleiben. Sie können das auch auf eine Bank einzahlen und mit den restlichen 20% handeln. Eine solche Anforderung besteht jedoch, was bedeutet, dass wir unser Handelsvolumen um das Fünffache reduzieren müssen, um innerhalb des Zielbereichs von 20% zu bleiben. Somit beträgt der erwartete Gewinn 30% pro Jahr und nicht 150%. Die Ergebnisse sind bei weitem nicht perfekt.

Lassen Sie uns andere Symbole testen.

Testergebnisse. Wie bereits erwähnt, sind alle Berichte über jedes Zwischenergebnisses dem Artikel zusammen mit SET-Dateien der Endprüfung sowohl bei EURUSD als auch bei anderen beschriebenen Symbolen beigefügt.

Tests mit AUDUSD mit der Schrittweite von 10 Punkten (Dekade 3)

Beginnen wir mit den Tests mit AUDUSD und den Grundeinstellungen:

  • Kein Stop-Loss;
  • Kein Schließen aller Positionen durch eine Bedingung.

Die Optimierung erfolgte durch einen Take-Profit und den Parameter "Shift in Points". Die besten Ergebnisse wurden bei einem Take-Profit von 3 und der Shift von 0 erzielt:

Basistest mit AUDUSD

Symbol
 Max Drawdown
Gewinn
 Erholungsfaktor
 Profit Faktor  Positionen
 AUDUSD
 21 468
 -546
 -0.03
 0.99
 18 104

Do not place the nearest orders. Auch unter den besten Rahmenbedingungen konnten wir keinen Gewinn erzielen. Aber lassen Sie uns versuchen, den Parameter "Do not place the nearest orders" zu aktivieren:

Do not place the nearest orders, AUDUSD

Symbol
 Max Drawdown
Gewinn
 Erholungsfaktor
 Profit Faktor  Positionen
 AUDUSD
 14 701
 14 415
 0.98
 1.54
 15 049

"Entry in the bar direction".

Das sieht etwas besser aus. Lassen Sie uns die Eröffnung des vorherigen Balkens auf verschiedene Zeiträume testen:

Tages-Balken, AUDUSD

Symbol
 Max Drawdown
Gewinn
 Erholungsfaktor
 Profit Faktor  Positionen
 AUDUSD
 9 186
 8 364
 0.91
 1.56
 8 573

Handel in einer Seitwärtsbewegung

D1 erwies sich als das beste, obwohl sich das Ergebnis ebenfalls etwas verschlechterte. Wie auch immer, lassen Sie es uns nutzen und testen, wie man in einer Seitwärtsbewegung arbeitet. Lassen Sie uns die Grenzen der Spanne grob auf 0,79728 über dem aktuellen Preis und 0,70417 darunter einstellen:

In einer Seitwärtsbewegung, AUDUSD

Symbol
 Max Drawdown
Gewinn
 Erholungsfaktor
 Profit Faktor  Positionen
 AUDUSD
 6 769  11 937
 1.76
 2.35
 7 591

"Close all positions when increasing equity".

Wie erwartet, verbesserten sich die Ergebnisse. Der Erholungsfaktor hat sich nahezu verdoppelt. Abschließend testen wir, ob wir alle Positionen mit einem erhöhten Kapital schließen können:

Close positions if equity is increased, AUDUSD

Symbol
 Max Drawdown
Gewinn
 Erholungsfaktor
 Profit Faktor  Positionen
 AUDUSD
 4 270
 8 552
 2
 1.74
 7 593

Wenn wir Positionen schließen, sobald sich das Kapital um 1 000 erhöht hat, ist es möglich, den Erholungsfaktor auf bis zu 2 zu erhöhen. Das ist ein kleiner Gewinn für das Endergebnis. Vielleicht wird es mit AUDCAD besser gehen...

Tests mit AUDCAD und der Schrittweite von 10 Punkten (Dekade 3)

Zu Beginn des Artikels haben wir das AUDCAD-Chart erwähnt, um die Preisbewegung zu veranschaulichen, die zum EA passt. Der MN-Zeitrahmen zeigt deutlich die Seitwärtsbewegung, innerhalb der sich der Preis bewegt. Jetzt ist es an der Zeit zu überprüfen, wie profitabel der Handel mit diesem Symbol sein wird.

Der Basistest zeigte die besten Ergebnisse beim Take-Profit 4 und der Shift von 0:

Basistest mit AUDCAD

Symbol
 Max Drawdown
Gewinn
 Erholungsfaktor
 Profit Faktor  Positionen
 AUDCAD
 8 216
 16 149
 1.97
 1.53
 17 852

Max orders at the same price.

Mit den Grundeinstellungen erreichten wir den Erholungsfaktor von etwa 2, d.h. das gleiche Ergebnis wie bei den endgültigen Einstellungen bei AUDUSD.

Dieses Ergebnis kann weiter verbessert werden, wenn wir den Parameter "Max Orders at the same price" ändern, den wir im Artikel noch nicht beschrieben haben. Der Standardwert ist 33. Das bedeutet, dass der EA bis zu 33 Positionen zum gleichen Preis in eine Richtung eröffnen kann. In Wirklichkeit bedeutet dies eine unbegrenzte Anzahl von Positionen zu einem einzigen Preis, da wir während der Tests nie mehr als 10 Positionen zu einem einzigen Preis eröffnet haben.

Wie werden Positionen zu einem einzigen Preis eröffnet? Ganz einfach. Angenommen, der Preis steigt und berührt die nächstgelegene Order. Danach rollt der Preis zurück, so dass der EA eine neue Limit-Order über dem gleichen Preis setzt. Danach testet der Preis das Niveau erneut und berührt eine platzierte Order, usw..

Wir haben die Parameter "Max Orders at a single price" bisher nicht berücksichtigt, da die Eröffnung einer unbegrenzten Anzahl von Positionen zum gleichen Preis eine Steigerung der EA-Profitabilität ermöglichte. Bei AUDCAD ist das jedoch anders. Vielleicht hat das etwas mit der Symbolpreisbewegung zu tun, aber wenn wir die Platzierung von Limit-Orders für Preise, die bereits zur Eröffnung von Positionen verwendet wurden, deaktivieren, wird das Ergebnis besser sein. Setzen Sie daher die " Max order at a single price" auf 1: 

Platzieren Sie keine Order, wenn es zu dem Preis bereits Positionen gibt, AUDCAD

Symbol
 Max Drawdown
Gewinn
 Erholungsfaktor
 Profit Faktor  Positionen
 AUDCAD
 5 896
 18 087
 3.07
 2.63  10 821

"Do not place the nearest orders".

Es ist uns gelungen, den Erhöhungsfaktor um mehr als 1,5 mal zu erhöhen. Kommen wir nun zurück zu den ausgetretenen Pfaden und testen die Aktivierung des " Do not place the nearest orders" Parameter:

"Do not place the nearest orders", AUDCAD

Symbol
 Max Drawdown
Gewinn
 Erholungsfaktor
 Profit Faktor  Positionen
 AUDCAD
 5 656
 13 692
 2.42
 2.61
 8 306

Wir müssen zugeben, die Ergebnisse sind etwas schlechter geworden. Versuchen wir jedoch, den Test unter Berücksichtigung dieses Parameters fortzusetzen.

"Entry in the bar direction".

Die Tests für Eröffnungen in Richtung der Bewegung des vorherigen Balkens erwiesen sich als der beste Zeitrahmen dafür:

Dem D1-Balken folgend, AUDCAD

Symbol
 Max Drawdown
Gewinn
 Erholungsfaktor
 Profit Faktor  Positionen
 AUDCAD
 3 857
 8 848
 2.29
 2.58
 5 487

Das hat jedoch nicht die Ergebnisse verbessert. Tatsächlich wurden sie schlimmer.

Handel in einer Seitwärtsbewegung.

Setzen wir den Test fort, indem wir die Spanne einstellen, in dem der EA arbeiten soll. Der obere Grenzpreis beträgt 1,02603, der untere 0,93186.

Handeln in einer Seitwärtsbewegung, AUDCAD

Symbol
 Max Drawdown
Gewinn
 Erholungsfaktor
 Profit Faktor  Positionen
 AUDCAD
 2 684
 9 692
 3.61
 3.33
 5 224

Die Seitwärtsbewegung hat uns nicht im Stich gelassen und die Ergebnisse leicht verbessert.

"Close all positions when increasing equity".

Die letzte Optimierung mit den Standardeinstellungen:

"Close all positions when increasing equity", AUDCAD

Symbol
 Max Drawdown
Gewinn
 Erholungsfaktor
 Profit Faktor  Positionen
 AUDCAD
 2 818
 6 022
 2.14
 1.74
 5 479
Selbst mit dem besten Ergebnis (closing at equity of $1 000) haben wir den Erholungsfaktor nur in der Nähe der ersten Testergebnisse.

Alternativer Test. Verwerfen wir die Parameter, die den Erholungsfaktor verschlechtert haben, und führen wir einen Test ohne sie durch. Das bedeutet, dass wir " Do not place the nearest orders" und deaktivieren und in Richtung der Bar eröffnen. Außerdem werden wir nicht alle Positionen schließen, wenn wir das Eigenkapital erhöhen:

Alternative Tests mit AUDCAD

Symbol 
 Max Drawdown
Profit 
 Erholungsfaktor
 Profit Faktor  Positionen
 AUDCAD
 5 124
 19 121
 3.73
 3.17
 10 301

Das Ergebnis hat sich verbessert, aber nur geringfügig. Wir haben etwa 100% Gewinn pro Jahr.

Was tun, wenn der Preis die Spanne verlässt?

Nach allen Tests haben wir einiges erreicht. Sie können kaum als vielversprechend bezeichnet werden, aber trotzdem gibt es noch einen Gewinn. Dennoch ist es zu trügerisch.

Die Rentabilität der EAs wurde durch die Begrenzung ihrer Handelsspanne erreicht. Eine solche Spanne ist der Geschichte entnommen, und wir können nicht sicher sein, ob der Preis dort bleiben wird. Wir können ein paar Mal Glück haben und sehen, wie der Preis von der Range-Grenze zurückfällt. Aber irgendwann wird unser Glück zu Ende gehen. Also, was werden wir tun?

Eine mögliche Option ist das Schließen aller Positionen. Das klingt nach einer guten Option. Aber in Wirklichkeit bedeutet dies, einen Großteil oder den gesamten Gewinn zu verlieren. Um weiter in der Wunde zu stochern, wird der Preis am nächsten Tag mit Sicherheit wieder steigen.

Nach den Tests ist die beste Option, zu warten, bis der Preis in die Spanne zurückkehrt. Alternativ können Sie auch warten, bis der Preis eine neue Bandbreite findet und darauf handeln, bevor der Preis zur vorherigen zurückkehrt.

Das kann Jahre dauern. Allerdings wird der Preis früher oder später zurückkehren.

Wenn Sie nicht fünf oder mehr Jahre warten wollen, dann ist die einzige Option, manuell zu handeln und zu versuchen, mit Karten, die Sie auf der Hand haben, einen Vorteil gegenüber dem Markt zu erlangen.

Weitere EA-Parameter

Bislang haben wir nur die EA-Parameter diskutiert, die in der Lage sind, die Rentabilität zu verbessern. Jeder der Parameter repräsentiert eine bestimmte Idee. Es gab viele Ideen, die während der EA-Entwicklung getestet wurden. Leider haben die meisten von ihnen die EA-Ergebnisse nur weiter verschlechtert. Daher wurde der entsprechende Code entfernt oder die Parameter, die eine Idee umsetzen, mit "-" am Anfang ihres Namens gekennzeichnet.

Wir werden uns diese Parameter hier ansehen, aber laut den Tests wird eine Änderung ihrer Werte nichts Gutes bringen.

"Limit order type". Standardmäßig setzt das EA Kaufaufträge über den aktuellen Preis und Verkaufsaufträge unter den aktuellen Preis. Diese Orders werden als Buy-Stop und Sell-Stop bezeichnet. Der Standardwert des Parameters ist STOP.

Wenn er auf LIMIT gesetzt wird, verwendet der EA Buy-Limit-Orders und Sell-Limit-Orders. Mit anderen Worten, sein Verhalten wird sich drastisch ändern: Er wird Verkaufsaufträge über den Preis und Kaufaufträge unter den Preis setzen und damit gegen einen Trend handeln. Dies könnte auch einen gewissen Gewinn bringen, wird aber im Vergleich zum Drawdown deutlich niedriger sein.

"Increasing a lot in a chain". Standardmäßig haben alle Aufträge im Raster das gleiche Volumen. Dieser Parameter ermöglicht es jedoch, dass das Volumen jeder neuen Order im Raster gegenüber der vorherigen zu erhöhen. Eine solche Erhöhung kann sowohl in der arithmetischen als auch in der geometrischen Progression erfolgen.

Die Tests zeigen, dass sie einen erzielten Gewinn erhöhen können, aber nur durch die Erhöhung des maximalen Drawdown. Somit ist der Erholungsfaktor immer niedriger als bei Verwendung einer festen Losgröße.

"Use trailing stop". Die gesamte Gruppe von Parametern ermöglicht es, für jeden einzelnen Auftrag einen Trailing-Stop zu aktivieren. Leider erwies sich dies nach den Tests keine gute Idee.

Schlussfolgerung

In diesem Artikel haben wir ein weiteres mögliches Raster untersucht. Es ist besser als das, das wir im vorherigen Artikel analysiert haben. Aber wir haben immer noch eine sehr riskante Handelsstrategie erhalten, die früher oder später die Einlage zerstören kann.

Bedeutet dies, dass ein Grid nicht verwendet werden kann, um ein relativ gutes EA mit geringem Risiko zu entwickeln? Ich würde zu einer solchen Schlussfolgerung noch nicht kommen, da wir noch eine andere Möglichkeit haben, einen Grider-EA zu organisieren.

Wir werden es im nächsten Artikel besprechen. Wie üblich werden wir uns auf eine plattformübergreifende EA konzentrieren. Er ist in der Lage, die folgenden Ergebnisse von 2010 bis 2019 für eine feste Losgröße zu erzielen:

Symbol
 Max Drawdown
Gewinn
 Erholungsfaktor
 Positionen
 USDCAD
 953
 7 328
 7.69
 3 388
 NZDUSD  1 404
 11 288
 8.04  2 795
 SBUX (2013-2019)
 140  1 890
 13.5  442

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

Beigefügte Dateien |
trendmeEA.ex5 (157.19 KB)
trendmeEA.mq5 (140.84 KB)
trendmeEA.ex4 (66.98 KB)
trendmeEA.mq4 (140.84 KB)
SET_files.zip (25.38 KB)
Gescheites "Marktgedächtnis" durch Differentiation und Entropieuntersuchung Gescheites "Marktgedächtnis" durch Differentiation und Entropieuntersuchung

Der Anwendungsbereich der Fraktionalen Differenziation ist breit genug. Beispielsweise wird in der Regel eine differenzierte Zeitreihe in maschinelle Lernalgorithmen eingegeben. Das Problem ist, dass es notwendig ist, neue Daten entsprechend der verfügbaren Historie anzuzeigen, die das Modell des maschinellen Lernens erkennen kann. In diesem Artikel werden wir einen originellen Ansatz zur Differenzierung von Zeitreihen betrachten. Der Artikel enthält zusätzlich ein Beispiel für ein selbstoptimierendes Handelssystem, das auf einer erhaltenen differenzierten Reihe basiert.

Bibliothek für ein leichtes und schnelles Entwickeln vom Programmen für den MetaTrader (Teil VI): Ereignisse von Änderungen von Orders und Positionen Bibliothek für ein leichtes und schnelles Entwickeln vom Programmen für den MetaTrader (Teil VI): Ereignisse von Änderungen von Orders und Positionen

In den vorherigen Artikeln haben wir begonnen, eine große plattformübergreifende Bibliothek zu erstellen, die die Entwicklung von Programmen für MetaTrader 5 und MetaTrader 4 Plattformen vereinfacht. Im siebten Teil haben wir die Aktivierung der Verfolgung von StopLimit-Orders hinzugefügt und die Funktionsweise zur Verfolgung anderer Ereignisse von Orders und Positionen vorbereitet. In diesem Artikel werden wir die Klasse zur Verfolgung von Ereignissen der Order- und Positionsänderung entwickeln.

Bibliothek für ein leichtes und schnelles Entwickeln vom Programmen für den MetaTrader (Teil IX): Kompatibilität mit MQL4 - Datenvorbereitung Bibliothek für ein leichtes und schnelles Entwickeln vom Programmen für den MetaTrader (Teil IX): Kompatibilität mit MQL4 - Datenvorbereitung

In den vorherigen Artikeln haben wir begonnen, eine große plattformübergreifende Bibliothek zu erstellen, die die Entwicklung von Programmen für MetaTrader 5 und MetaTrader 4 Plattformen vereinfacht. Im achten Teil haben wir die Klasse zur Verfolgung von Ereignissen der Auftrags- und Positionsänderung implementiert. Hier werden wir die Bibliothek verbessern, indem wir die vollständige Kompatibilität mit MQL4 herstellen.

Entwicklung eines plattformübergreifenden Expert Advisors zur Festlegung von StopLoss und TakeProfit basierend auf den Risikoeinstellungen. Entwicklung eines plattformübergreifenden Expert Advisors zur Festlegung von StopLoss und TakeProfit basierend auf den Risikoeinstellungen.

In diesem Artikel erstellen wir einen Expert Advisor für die automatisierte Berechnung der Losgrößen bei der Eröffnung auf Basis von Risikowerten. Auch der Expert Advisor kann TakeProfit mit dem gewählten Verhältnis zu StopLoss automatisch platzieren. Das heißt, er kann einen TakeProfit basierend auf einem beliebigen Verhältnis berechnen, z.B. 3 zu 1, 4 zu 1 oder einem anderen ausgewählten Wert.