Berater für einen Artikel. Tests für alle Teilnehmer. - Seite 4

 
Reshetov:


Ich habe den Expert Advisor so verbessert, dass er die Wahrscheinlichkeit einer zukünftigen Short-Position anhand von Handelssignalen berechnet. Wenn die Wahrscheinlichkeit höher als 0,5 ist, eröffnen wir eine Short-Position, andernfalls eine Long-Position.



Ich habe Take und Losses fixiert, d.h. sie werden nicht durch die Signale rollen. Dies ist notwendig, um das MM anwenden zu können.

Hier ist das Bild: die ersten 136 Trades sind Optimierung, der Rest ist OOS.


Da dieser Thread für Trader uninteressant ist und nur Floodbuster hierher kommen, um über die Persönlichkeit des Topicstaters zu diskutieren, hänge ich den modifizierten Code des Expert Advisors nicht an.


Yuri, hör nicht auf sie. Bitte veröffentlichen Sie den geänderten EA.
 
Andru80:
Yuri, hör nicht auf sie. Bitte veröffentlichen Sie den geänderten EA.

Wenn Sie einen Artikel haben, werden Sie auch einen EA haben. Mal sehen, was was ist... Mit etwas Erfahrung braucht man nicht einmal Tests, um die Idee zu bewerten. Wir werden warten.
 
Figar0:

Wenn der Artikel geschrieben ist, wird der Expert Advisor folgen. Mal sehen, was was ist. Sie brauchen keine Tests, um die Idee einzuschätzen. Wir werden warten.

Ich poste den Expert Advisor vor dem Artikel, damit jeder ihn testen und seine Meinung dazu abgeben kann (obwohl es möglich ist, dass sie wieder anfangen werden, über meine Persönlichkeit zu diskutieren?).


Das Wesentliche liegt nicht einmal im Expert Advisor, sondern in dem Anti-Fitting-Algorithmus, den ich ihm hinzugefügt habe.

Jetzt müssen wir nicht nach erfolgreichen Vorwärtstests suchen und tief in den Testergebnissen graben, sondern die oberen Zeilen der Ergebnisse durchsehen, sie müssen irgendwo sein, es ist durchaus möglich, dass sie in der obersten Zeile stehen.

Die Testergebnisse und die Optimierungsergebnisse können sehr unterschiedlich ausfallen, da die Anti-Anpassung nur während der Optimierung aktiviert und für den Rest der Zeit deaktiviert ist.

Hier ist das Diagramm der oberen Zeile der Testergebnisse (die ersten 404 Geschäfte sind Optimierung, der Rest sind Vorwärtstests):


Der Expert Advisor ist in der beigefügten Datei (es ist vor der Veröffentlichung kompiliert, werde ich seinen Code in dem Artikel zu öffnen).

Die Eingabeparameter sind:

x0, x1, x2, x3, x4, x5, x6, x7 - einstellbar von 0 bis 100 in Schritten von 1. Optimiert.

sl - Stop Loss und Take Profit in Pips. Zum Beispiel können Sie für EURUSD auf H1 bei fünf Ziffern 100 bis 1000 in 50er-Schritten nehmen (bei vier Ziffern entfernen Sie eine Null aus allen Zahlen). Optimiert.

Lots - Volumen in Lots, Sie müssen mindestens 1 Lot zur Optimierung einsetzen. Nicht optimiert.

mn - magische Zahl. Nicht optimiert.

d - Anzahl der Dezimalstellen in der Losgröße. D.h. wenn 0,01 erlaubt ist, muss d = 2 sein. Sie wird nicht optimiert.

Optimierung nach Gewinnfaktor, die Optimierungsergebnisse werden auch nach diesem Parameter sortiert.

Vorsichtshalber füge ich dem ZIP-Archiv eine Datei mit den EA-Einstellungen hinzu, wie ich sie eingerichtet habe.

Dateien:
rnn_v3_1.ex4  7 kb
rnn_v3.zip  1 kb
 

Interessantes Ergebnis!

Jura, verwendest du die Daten des Instruments, an das der EA angehängt ist, für die Analyse?

 
Neutron:

Interessantes Ergebnis!

Jura, verwenden Sie bei der Analyse die Daten des Instruments, an das der EA angeschlossen ist?

Ja, d. h. andere Instrumente werden nicht analysiert. Die TA wird nur mit Eröffnungspreisen durchgeführt.


Im Grunde sind die Einträge nicht sehr anspruchsvoll, so dass ich Ihnen die Codefragmente zeigen kann, in denen all diese Dinge berechnet werden:


   // Считываем показания индикаторов
   double a1 = input(9, 0);
   double a2 = input(9, 1);
   double a3 = input(9, 2);

   // Вычисляем вероятность торгового сигнала для короткой позиции
   double result = getProbability(a1, a2, a3);

   ...

// Показания индикаторов, должны быть в диапазоне от 0 до 1
// p - период индикатора
// shift - смещение вглубь истории в периодах индикатора
double input(int p, int shift) { 
  return (iRSI(Symbol(), 0, p, PRICE_OPEN, p * shift) / 100.0);
}
 

Ich danke Ihnen.

Antifitting... Wenn Sie sich an die Klassiker der NS erinnern, geht es bei der Anti-Anpassung darum, den minimalen Vorhersagefehler in der Vorwärtsbewegung zu finden. Dies kann erreicht werden, indem die Statistiken für etwa hundert unabhängige Läufe mit einer erneuten Schulung von NS bei jedem Lauf durchgeführt werden. Dies ist verständlich, aber aufgrund der endlichen Länge des ursprünglichen BP und seiner Nicht-Stationarität sehr schwierig umzusetzen.

Eine andere Möglichkeit besteht darin, eine Schätzung der optimalen Länge der Trainingsstichprobe zu erhalten. Soweit ich weiß, hat noch niemand dieses Problem auf allgemeine Weise gelöst...

Haben Sie es geschafft?

 
Neutron:

Eine andere Möglichkeit besteht darin, eine Schätzung der optimalen Länge der Trainingsstichprobe zu erhalten. Soweit ich weiß, hat noch niemand dieses Problem in allgemeiner Form gelöst...

Sie müssen das Problem nicht lösen. Es reicht aus, die richtige Länge der Trainingsstichprobe für einen bestimmten Fall zu finden, und das ist sehr einfach zu machen.

Ja, und es ist keine Anti-Passform. Es ist eine Anpassung der zweiten Ebene. Für eine n-stufige Anpassung müssen n+1 Proben getestet werden, wobei die letzte Probe eine Kontrollprobe ist.

Das ist genau das Letzte, was Reshetov nie hat.

 

Wie einfach!

Für jeden Kurvenpunkt müssen Statistiken rekrutiert werden. Und woher nehmen, wenn sich die Preisspanne nach einem Monat komplett ändert?

 

Nein, das ergibt keinen Sinn.

In Juris Fall erfolgt das Erlernen von NS durch einfaches Durchgehen der Gewichte auf dem von mir festgelegten Abschnitt der Geschichte... oder? Wenn ja, dann ist die Analyse einfach das Ergebnis der Geschäfte bei jeder Iteration. Und die Aussage: "...Nun müssen erfolgreiche Vorwärts-Tests nicht lange und tief in den Testergebnissen suchen, sondern wir müssen die obersten Zeilen der Ergebnisse durchgehen, sie müssen irgendwo sein, es ist durchaus möglich, dass in der obersten Zeile ...", ist falsch - erfolgreiche Vorwärts-Tests können überall sein und wir müssen überall suchen.

 
Neutron:

Ich danke Ihnen.

Anti-Fit... Wenn Sie sich an die Klassiker der NS erinnern, reduziert sich die Anti-Anpassung auf die Suche nach dem minimalen Vorhersagefehler in der Vorwärtsrichtung. Dies kann erreicht werden, indem man die Statistiken für etwa hundert unabhängige Läufe mit einer erneuten Schulung von NS bei jedem Lauf durchführt. Dies ist verständlich, aber aufgrund der endlichen Länge des ursprünglichen BP und seiner Nicht-Stationarität sehr schwierig umzusetzen.

Eine andere Möglichkeit besteht darin, eine Schätzung der optimalen Länge der Trainingsstichprobe zu erhalten. Soweit ich weiß, hat noch niemand dieses Problem auf allgemeine Weise gelöst...

Haben Sie es geschafft?

Bei den Handelssystemen ist nur ein Abgleich der Historie möglich. Neuronale Netze haben jeweils zwei Probleme: Anpassung und Umlernen. Und die Umschulung findet auch auf stationären Daten statt.

Bei neuronalen Netzen für adäquate Eingaben ist es jedoch etwas einfacher, wenn wir mit einem neuronalen Netzpaket oder einem selbst erstellten Gitter arbeiten, wenn wir eine von Leonid Velichkovski vorgestellte Methode anwenden: Wir teilen die Trainingsbeispiele in zwei Proben auf: Trainings- und Testproben, und im Lernprozess berechnen wir die Ergebnisse für beide Proben und lehren das Gitter nur anhand der Trainingsprobe. Sobald die Verbesserung der Ergebnisse bei der Testprobe aufhört, d.h. die Ergebnisse sich nicht weiter verbessern, bedeutet dies, dass das Netz ausreichend trainiert wurde und wir an diesem Punkt aufhören sollten. Auf diese Weise erhalten wir ein Netz, das am besten trainiert ist - wir werden nicht besser und können leicht schlechter werden. In diesem Fall ist es egal, wie stark das Netz umtrainiert oder angepasst wird, da wir ein Extremum in der Testprobe haben.

Mit dem in das Terminal eingebauten genetischen Algorithmus ist es viel schwieriger, da wir die Ergebnisse in den Vorwärtsabschnitten nicht berechnen und die Optimierung nicht rechtzeitig beenden können. Aus diesem Grund müssen Sie in den nach Indikatoren sortierten Optimierungsergebnissen manuell nach Vorwärtsbewegungen suchen.

Ich habe einen etwas anderen Weg eingeschlagen:

1. Die Ursache für das Übertraining des neuronalen Netzes wurde ermittelt und beseitigt. D.h. wenn die Trainingsbeispiele stationär sind und keine Widersprüche enthalten, dann ist mein Algorithmus nicht übertrainiert, aber er kann leicht untertrainiert werden, wenn die Anzahl der Beispiele für die Interpolation nicht ausreicht.

2. Bei der Anprobe war es etwas komplizierter. Aber auch dieses Problem erwies sich als lösbar, da die Anpassung hauptsächlich von der Qualität des Lernens abhängt, d.h. von der Angemessenheit des Systems von Belohnungen und Bestrafungen, da der Algorithmus sonst dem Weg des geringsten Widerstands folgt und auf die Art und Weise lernt, die er für einfacher hält, anstatt auf die Art und Weise, die tatsächlich angemessen ist. Ich habe also genau diese Wege des geringsten Widerstands eliminiert, d.h. ich habe den genetischen Algorithmus gezwungen, die Qualität der Berechnung der Ergebniswahrscheinlichkeiten zu bewerten, nicht die Anzahl der Pips.

3. Nicht-Stationarität. Sie konnte überhaupt nicht überwunden werden, da sie nur vom Markt und nicht vom Algorithmus abhängt. Dies ist das einzige, was die Qualität der Prognosen wirklich beeinträchtigt. Aber wenn man die anderen Nachteile der Ausbildung ausklammert, sind die Auswirkungen nicht mehr so groß, dass sie das Einkommen beeinträchtigen.