TSR - Wiederbelebung von Handelssystemen

 

Fortsetzung des Themas: Wo ist die Grenze zwischen passenden und echten Mustern?


TSR ist eine Abkürzung für Trading Systems Recovery


Ich poste hier ohne eine Beschreibung der Theorie und ohne Screenshots. Screenshots werden in der Code Base zu finden sein


Und ich werde diejenigen warnen, die besonders begabt sind:

1. Die beigefügte Version des Expert Advisors wurde auf ein für Ausbildungszwecke geeignetes Minimum reduziert

2. Zu den Fragen der Verbesserung des Expert Advisors wenden Sie sich bitte an die BFG.

Wenn Sie Fragen haben, zum Beispiel: "Warum erhalte ich unterschiedliche Ergebnisse?" Der Autor gibt keine Antwort.



Machen wir ein Experiment mit einem Handelssystem, das auf der Vorhersage der zukünftigen Richtung der Kursbewegung durch die Anpassung der Gewichtungskoeffizienten des elementaren einschichtigen neuronalen Netzes - Perceptron auf historischen Daten beruht. Das Prinzip dieses Handelssystems wurde in meinem Artikel "Wie man ein Handelssystem findet" ausführlich beschrieben. Betrachten wir die historischen Daten für das Währungspaar EURUSD für die letzten 9 Monate oder mehr auf dem H1-Zeitrahmen-Chart. Wir werden sie in drei unabhängige Abschnitte von jeweils drei Monaten unterteilen. Die erste wird für den abschließenden Test verwendet, während die beiden anderen für die Anpassung der Geschichte verwendet werden. Um das Handelssystem nicht separat laufen zu lassen, habe ich gleich zwei Perceptrons in einem Handelssystem kombiniert. Und ich habe die Funktion Supervisor() erstellt, mit deren Hilfe das Handelssystem drei Betriebsarten hat, je nach dem Eingangsparameterpass: 1 - Anpassung und Testen des ersten Perzeptrons, 2 - Anpassung und Testen des zweiten Perzeptrons, 3 - Filterung durch Aussieben inkonsistenter Messwerte beider Perzeptrons im Testmodus ohne Optimierung oder im Autohandelsmodus auf einem Demo- oder Echtdepot.

Anpassbar an die historischen Daten sind die Perceptron-Gewichte x11, x12 ... x42 sowie p und sl. Der Eingabeparameter sl ist eine Konstante für alle Abschnitte. Stop-Loss- und Take-Profit-Niveaus werden für alle offenen Positionen durch diesen Wert festgelegt. Ein weiterer Eingabeparameter p - die Verzögerungszeit für die Eröffnungskursdifferenz - ist ebenfalls eine Konstante. Der Einstieg in den Markt erfolgt zu Beginn einer neuen Balkenformation, d.h. entsprechend den Eröffnungskursen der Balken und den Werten des Perceptrons, abhängig vom Wert des Eingabeparameters pass, und der Ausstieg nur bei Auslösung eines Stop Loss oder Take Profit. Die Optimierung erfolgt mit Hilfe des genetischen Algorithmus zur Identifizierung von Extremwerten, wobei der maximale Saldo als Extremwert genommen wird. Der Anfangsbetrag, z.B. $1000000, sollte während der Optimierung sehr groß sein, um zu verhindern, dass der Algorithmus bei Nachschussforderungen stecken bleibt. Eingabeparameter: Lots - Volumen der zu eröffnenden Positionen in Lots und mn - eindeutige magische Zahl, damit der Expert Advisor die Verwaltung seiner eigenen Aufträge (die er eröffnet hat) nicht mit den Aufträgen anderer (die er nicht eröffnet hat) verwechselt.


In der ersten Phase müssen wir herausfinden, welche Werte die Eingangsvariablen p und sl haben sollten. Dazu wählen wir die letzten beiden Teile der Historie aus, d.h. von vor 6 Monaten bis heute. Wir setzen alle Parameter der Perceptron-Gewichte auf Werte von Start = 0 bis Stop = 200 in Schritten von 1. Stellen Sie den p-Wert von Start = 3 bis Stop =100 in 1er-Schritten ein, stellen Sie den sl-Wert von Start = 100 bis Stop =1000 in 10er-Schritten ein (bzw. von 10 bis 100 in 1er-Schritten bei vierstelligen Kursen). Setzen Sie den Durchlasswert auf 1. Markieren Sie die folgenden zu optimierenden Parameter: x11, x21, x31, x41, p und sl. Alle anderen Kontrollkästchen sollten deaktiviert werden. Aktivieren Sie die Optimierung. Sobald die Optimierung abgeschlossen ist, stellen Sie die Eingabeparameter nach dem besten Durchgang ein.


Der zweite Schritt besteht darin, die Gewichte des ersten Perzeptrons auf dem zweiten Abschnitt der historischen Daten anzupassen. Stellen Sie das Datum und die Uhrzeit der Optimierung von vor 6 Monaten auf vor 3 Monaten ein. Heben Sie die optimierten Parameter nur bei den Eingangsvariablen p und sl auf. Führen Sie die Optimierung durch. Nachdem die Anpassung abgeschlossen ist, stellen Sie die Eingabeparameter entsprechend dem besten Durchgang ein.


Dritter Schritt: Anpassung der Gewichte des zweiten Perzeptrons an den dritten Abschnitt der historischen Daten. Stellen Sie das Datum und die Uhrzeit der Optimierung von vor 3 Monaten auf den heutigen Tag. Deaktivieren Sie die optimierten Parameter: x11, x21, x31, x41 und setzen Sie sie für x12, x22, x32 und x42. Die anderen Kontrollkästchen müssen deaktiviert werden. Setzen Sie die Eingangsvariable pass auf 2. Optimierung starten. Sobald die Optimierung abgeschlossen ist, stellen Sie die Eingabeparameter nach dem besten Durchgang ein.


Das ist alles, unser Handelssystem wurde an die historischen Daten von vor 6 Monaten bis zum heutigen Tag angepasst. Speichern wir die Werte der Eingabeparameter in der Einstellungsdatei. Setzen Sie die Eingangsvariable pass auf 3. Deaktivieren Sie "Datum verwenden" und starten Sie den Test. Wir sehen uns die Testtabelle an. Wir sehen, dass die Kurve des Gleichgewichts und des Eigenkapitals im rechten Teil des Diagramms nach oben und im linken Teil nach unten tendiert. Nun müssen wir dafür sorgen, dass die Waage im Bereich außerhalb der Einstellprobe nach oben tendiert. Wir bewegen den Mauszeiger auf die Bilanzlinie, wo der Anstieg des Gewinns beginnt, und sehen uns das Datum in der Quickinfo an. Es stellt sich heraus, dass die Gleichgewichtskurve vor fast neun Monaten, vom heutigen Tag an gerechnet, ohne 10 Tage, d. h. 8 Monate und 20 Tage, nach oben tendierte. Und die Anpassung wurde über einen Zeitraum von 6 Monaten durchgeführt. Es gibt also einen erfolgreichen Test außerhalb der optimierten Probe . Wir heben diesen Bereich außerhalb der Stichprobe hervor, um ihn eingehender zu analysieren. Im Großen und Ganzen sind die Ergebnisse recht zufriedenstellend, auch wenn sie deutlich hinter den Ergebnissen von J. Soros zurückbleiben, aber besser sind als die von W. Niederhoffer.


Um sicherzugehen, dass wir uns in einigen Teilen der Geschichte mit der Anpassung beschäftigt haben, ist es notwendig und ausreichend, das Kontrollkästchen "Datum verwenden" zu deaktivieren. Und führen Sie den Test des Expert Advisors mit den Werten 1 und 2 durch die gesamte verfügbare Historie. In jedem dieser Modi ist zu erkennen, dass der Anstieg der Gleichgewichtskurve nur in den Zeiträumen zu beobachten ist, für die bestimmte Perceptrons angepasst wurden. Für alle anderen Zeiträume der Geschichte gibt es keinen positiven Trend, abgesehen von einzelnen Buckeln, die in Tälern enden.


Wie wir gesehen haben, haben beide Perceptrons zwar die Vorwärtstests außerhalb der optimierten Stichprobe historischer Daten nicht bestanden, aber der Filter ihrer gemeinsamen Signale lieferte dennoch positive Ergebnisse bei historischen Daten, von denen zum Zeitpunkt der Anpassung nichts bekannt war. Sie können auch mit anderen Handelssystemen experimentieren, z. B. mit solchen, die auf der Aufschlüsselung einfacher gleitender Durchschnitte oder auf fortgeschritteneren mehrschichtigen neuronalen Netzen basieren. Wenn das Handelssystem robust ist, ist es wahrscheinlicher, dass es bei gefilterten Handelssignalen außerhalb des Optimierungszeitraums positive Ergebnisse erzielt. Wenn er nicht robust ist, wird er im optimierten Zeitraum mit aktiviertem Filter keine positiven Ergebnisse liefern. Die Robustheit des TS ist jedoch im Vergleich zu den Gemeinkosten für Spread, Swap und Maklerprovision zweitrangig. Daher sind positive Ergebnisse bei Forward-Tests bei erheblichem Overhead nur ein Traum, da die erwartete Auszahlung zwangsläufig negativ ist.



Dateien:
tsr.mq4  4 kb
 

Ich stimmte mit Reshetov in vielerlei Hinsicht nicht überein (nicht bei diesem Thema). Er und ich hatten gelegentlich einen Meinungsaustausch, und in der Regel schickte er mich weg, indem er mich explizit oder implizit einen Idioten oder Schwachkopf nannte. Ich für meinen Teil habe es nicht persönlich genommen.

Ich habe eine große Bitte an Sie alle: Lassen Sie sich in diesem Thread nicht auf Flatterhaftigkeit ein. Wenn Sie etwas Konstruktives zu dem Thema zu sagen haben, schreiben Sie, wenn nicht, schreiben Sie nicht.

 

Gg :) ein weiterer Gral für Reshetov Nerds :)

Konstruktiv? Wer sieht sich den OOS von hinten an? Das liegt auf der Hand.

 
TheXpert:


Konstruktiv? Wer sieht sich den OOS von hinten an? Das liegt auf der Hand.


Setzen Sie OOS an die Spitze - niemand wird Sie aufhalten. Der Punkt ist, dass bei TS zuerst der Grund kommt - ein Handelssignal - und dann die Folge - ein offener Auftrag, der mit Gewinn oder Verlust geschlossen wird. Und deshalb hat es keinen Einfluss auf die Ursache-Wirkungs-Beziehungen, egal ob es vor oder hinter dem OOS steht, denn die Signale werden nicht auf dem OOS gesetzt, sondern nur dort auf Lousigkeit geprüft. Die Handelssignale werden nach wie vor den Markteintritten vorausgehen und nicht umgekehrt, d.h. die Reihenfolge wird sich nicht ändern. Wenn der Expert Advisor verliert, verliert er sowohl nach vorne als auch nach hinten. Wenn es profitabel ist, wird es egal sein, wo genau das OOS liegt. Das Wichtigste ist, dass der OOS-Bereich an die Anpassbereiche angrenzt. Und da sich die Märkte ständig verändern und die gewinnbringende Handlung nur eine begrenzte Haltbarkeit hat, ist es verständlich, dass das OOS besser nach hinten losgeht, denn die Zukunft, auf die wir setzen, liegt vor uns.

Um also sicherer zu sein, können wir OOS sowohl vorne als auch hinten testen. Wenn der TS hier oder dort verliert, dann ist er sicher nicht robust.

 
Yuri, was ist in wenigen Sätzen die Essenz und die Schlussfolgerung Ihrer Erkenntnisse?
 
Avals:
Yuri, wie lauten in wenigen Sätzen die Essenz und die Schlussfolgerung Ihrer Erkenntnisse?
Der Anfang ist hier zu finden: https://www.mql5.com/ru/forum/131724
 
Avals:
Yuri, können Sie kurz in ein paar Sätzen erklären, was die Essenz und die Schlussfolgerung Ihrer Erkenntnisse sind?

1. Selbst bei der Anpassung können falsche Signale erkannt und mehr oder weniger stark eliminiert werden. Dazu benötigen wir jedoch mindestens zwei verschiedene Parzellen, auf denen die Optimierung durchgeführt wurde. Indem wir sie auf (un)übereinstimmende Messwerte vergleichen, können wir falsche Signale von potenziell profitablen Signalen trennen. Es ist klar, dass es unmöglich ist, alle falschen Signale ohne Ausnahmen auszuschalten, d.h. ein Teil von ihnen wird ohnehin verloren gehen. Für einige TS reicht es jedoch aus, einen Vorteil in Form einer positiven mathematischen Erwartung zu erhalten.

2. Viele TS wurden zuvor abgelehnt, nur weil sie gut passten, aber in der weiteren Prüfung unbefriedigende Ergebnisse lieferten. Nachdem wir diese TS nun mit der oben beschriebenen Methode analysiert haben, stellt sich heraus, dass einige von ihnen recht gute Arbeitspferde sind. So kann ein Teil der Handelssysteme auf diese Weise wiederbelebt werden.

3. Wenn Sie das Wesen der Methodik verstehen wollen, werden Sie sehen, dass sie zuverlässiger ist als ein einfaches optimiertes und getestetes OOS.

 
Reshetov:
... Es ist verständlich, dass es besser ist, bei OOS nach hinten zu schauen, denn die Zukunft, mit der wir handeln werden, liegt noch vor uns.
Ich habe vor ein paar Jahren selbst überprüft, ob OOS "hinten" etwas "vorne" gibt. Und kam zu dem Schluss, dass die Korrelation keineswegs offensichtlich ist. Es gibt keine besonderen Garantien. Die Erfolgswahrscheinlichkeit des TS kann sich leicht erhöhen, aber der Expert Advisor kann auch keinen Gewinn bringen und ihn verlieren. Wir brauchen hier andere Methoden.
 
voltair:
Was mich betrifft, so habe ich vor ein paar Jahren überprüft, ob OOS "hinten" etwas "vorne" gibt. Und kam zu dem Schluss, dass die Korrelation keineswegs offensichtlich ist. Es gibt keine besonderen Garantien. Die Erfolgswahrscheinlichkeit des TS kann sich leicht erhöhen, aber der Expert Advisor kann auch keinen Gewinn bringen und ihn verlieren. Wir brauchen hier andere Methoden.

Noch einmal, mit der oben genannten Methode niemand verbietet, auf OOS sowohl vorne und hinten zu überprüfen. Wenn der Gewinn bei keinem der Vorwärtsgänge erzielt wird, ist der TS nicht robust und es ist besser, ihn loszuwerden, als zu versuchen, die Totgeburt wiederzubeleben. Was die unterschiedlichen Ergebnisse bei verschiedenen OOS betrifft, so hat niemand eine 100%ige Übereinstimmung vorausgesagt.


Was die Garantien angeht, so habe ich sie niemandem versprochen. Jeder muss die von mir vorgeschlagenen TS auf OOS und Demo- oder Cent-Konten testen und selbst entscheiden, ob er mit dem Ergebnis zufrieden ist oder nicht.


Es würde mich nicht wundern, wenn Sie Ihr ganzes Leben auf der vergeblichen Suche nach einer Methode mit garantierten Ergebnissen verbringen und sterben, ohne sie gefunden zu haben.

 
Reshetov:

Fortsetzung des Themas: Wo ist die Grenze zwischen passenden und echten Mustern?

TSR ist eine Abkürzung für Trading Systems Recovery ..................

......................

Wie wir gesehen haben, haben zwar beide Perceptrons die Vorwärtstests außerhalb der optimierten Stichprobe historischer Daten nicht bestanden, aber der Filter ihrer gemeinsamen Signale ergab dennoch positive Ergebnisse in der Geschichte.

Juri, ich bin sehr erfreut. Selbst ein leichter Neid (ich habe mich vor ein paar Jahren von dieser Idee entfernt) kann die Freude nicht trüben. Das hat mich glücklich gemacht. Ich werde weiter experimentieren.

 
Reshetov:
... niemand verbietet die Überprüfung auf OOS vorne und hinten. ... Wenn ... der TC ist nicht robust und es ist besser, ihn loszuwerden ... die Ergebnisse der verschiedenen OOS unterscheiden sich, so dass keine 100%ige Übereinstimmung versprochen werden kann.
Juri, das ist doch klar. Wer kann schon verbieten, sie zu überprüfen oder loszuwerden? Das ist nicht der Punkt, der Punkt ist (meiner Meinung nach), dass alle diese Kontrollen gleichbedeutend sind mit... Vor-Optimierung! Das heißt, wenn wir ein positives Ergebnis auf OOS erhalten, bekommen wir TC bildlich (und tatsächlich) auf einer anderen Seite optimiert (die jetzt auch OOS umfasst). Wie hoch ist die Wahrscheinlichkeit, dass sie weiter in die Zukunft oder in die Vergangenheit hinein robust sein wird? Welches sind die objektiven Kriterien für die Bewertung der künftigen Robustheit, abgesehen von "ich denke schon"?