Bei einer Anwendung des OOP - Seite 2

 
Avals:
Die Hauptsache ist, wie man es danach benutzt. Um verschiedene Eingaben auszuprobieren, können Sie dies nach Eingabesatznummern sortiert tun. D.h. es gibt eine Sammlung von Eingabesätzen. Wenn praktisch, dann als Array von Funktionen. Die einfachsten - unbedingter Kauf oder Verkauf nach Markt. Oder bedingt)). Dann lassen wir den Optimierer laufen und schauen uns die verschiedenen Eingabesätze an.
Ja, bisher scheint es so zu sein, dass wir die Anzahl der Strategien in den Einstellungen festlegen und im Optimierer nach Anzahl optimieren. Aber das ist nur der Anfang, ich träume schon lange davon, eine Selbstoptimierung on the fly zu machen.
 
Alexey Volchanskiy:
Ja, bisher scheint es so zu sein, dass wir die Nummer der Strategie in den Einstellungen festlegen und nach der Nummer im Optimierer optimieren. Aber das ist das erste Mal, dass ich davon träume, eine Selbstoptimierung im laufenden Betrieb durchzuführen.
Was ist der Zweck dieser Selbstoptimierung (Zielfunktion)?
 
Avals:
Was ist der Zweck dieser Selbstoptimierung (Zielfunktion)?

Das Ziel ist offensichtlich. Erstens fehlt dem Optimierer im Tester der aktuelle Tag, zumindest im MT4. Und ich tue es für MT4.

Zweitens kann sich der Markt im Laufe des Tages stark verändern, ohne dass es dafür einen Grund gibt (Nachrichten). Wahrscheinlich haben Sie es schon bemerkt, eine träge Wohnung... Und plötzlich, als hätte man Senf unter den Schwanz gestrichen, beginnen die Zitate zu reißen. Entweder es ist eine Wohnung, oder es ist das totale Chaos.

Ich denke, wir können solche Bedingungen klassifizieren und bei ihrer Festlegung die erforderliche Änderung der Strategie berücksichtigen. Wie kann man das tun? Ich habe nicht genug Mumm, um eine KI zu entwickeln. Aber die Methode der Optimierung kann indirekt den Zustand bestimmen.

Bislang sind dies nur ungetestete Gedanken.

 
Alexey Volchanskiy:
Ja, es scheint so weit, in den Einstellungen legen wir die Anzahl der Strategien fest und optimieren nach Zahlen im Optimierer. Aber das ist das erste Mal, dass ich seit langem davon träume, eine Selbstoptimierung im laufenden Betrieb durchzuführen.

Soweit ich weiß, möchte Ihr Kunde alle Strategien, die er kennt, in einen Experten packen. Sie können diese Aufgabe erst dann erledigen, wenn Sie eine Liste von Strategien haben. Ich schlage vor, die ToR gemeinsam auszuarbeiten.

Wenn Sie PLUS zu dieser Liste von Strategien das Thema Selbstoptimierung ansprechen, dann schreiben Sie ihm ein neuronales Netz, erfinden Sie das Rad nicht neu und verblüffen Sie Ihren Kunden nicht mit Grundkenntnissen der Programmierung. Das ist genau das, was er von Ihnen verlangt.

 
George Merts:

Und kann ich Ihnen ein Beispiel für ein "Bashing" geben?

Hier ist es. Hierarchie der Handelsklassen in der Standardbibliothek:

Das bedeutet, dass das Geldverwaltungsmodul ein Expert Advisor ist. Trailing Stop ist ebenfalls ein Expert Advisor. Expert Advisor umfasst andere Expert Advisors. Diese inkonsistente Vererbung resultiert aus der Tatsache, dass sowohl Trailing-Stop als auch Money-Management Zugang zu einigen privaten Daten und Methoden eines grundlegenden Expert Advisors benötigen.

Übrigens, es gibt lange Girlanden von Erbschaften. CIndicators verwenden CIndicatorBuffer, der seinerseits seine übergeordneten Methoden aufruft. Dies hat zur Folge, dass eine einfache Verfolgung des Indikatorwerts zu einer sehr verwirrenden Aufgabe wird. Nach drei rekursiven Aufrufen verlieren wir völlig den Sinn dafür, woher etwas kommt.

Und dies ist nur ein Beispiel für eine schlechte Vererbung. In der Tat wird jede mehr oder weniger große Hierarchie von Klassen, die auf Vererbung basiert, fast immer inkonsistent, verwirrend und rekursiv. Das macht die Fehlersuche und Weiterentwicklung extrem schwierig.

Wir sind der Meinung, dass die Tiefe der Vererbung auf 1-2 Stufen begrenzt werden sollte. Darüber hinaus sollte die erste Ebene von der globalen und universellen Definition des CObjects der Null-Ebene (alle sind Objekte) erben und die spezifischen Entitäten "Expert", "Indicator", "Trailing Stop" implementieren. Die zweite Ebene sollte die spezifische Implementierung von "Expert Advisor basierend auf MACD", "SMA-Indikator", "Trailing Stop", etc. Der Einsatz der dritten Stufe muss jedoch streng geahndet und verfolgt werden.

Mit anderen Worten, es zeigt sich, dass die Klassifizierung nur dann ein wirklich wertvolles Instrument ist, wenn sie es ist:

  1. Begrenzt und schafft keine langen Vererbungshierarchien;
  2. Gemeinsame Nutzung mit horizontaler Gestaltung auf der Grundlage von Schnittstellen und Einschlüssen.

 
Gulnaz Akhtyamova:

Soweit ich weiß, möchte Ihr Kunde alle Strategien, die er kennt, in einen Experten packen. Sie können diese Aufgabe erst dann erledigen, wenn Sie eine Liste von Strategien haben. Ich schlage vor, die ToR gemeinsam auszuarbeiten.

Wenn Sie PLUS zu dieser Liste von Strategien das Thema Selbstoptimierung ansprechen, dann schreiben Sie ihm ein neuronales Netz, erfinden Sie das Rad nicht neu und verblüffen Sie Ihren Kunden nicht mit Grundkenntnissen der Programmierung. Das ist genau das, was er von Ihnen verlangt.

Er hat diese Möglichkeit nicht gesehen, es war meine Idee. Sie haben die Aufgabenstellung. Selbstoptimierung ist mein Gedanke, während ich unterwegs bin. Ich habe immer Recht )
 
Vasiliy Sokolov:

Hier ist es. Hierarchie der Handelsklassen in der Standardbibliothek:

Das bedeutet, dass das Geldverwaltungsmodul ein Expert Advisor ist. Der Trailing-Stop ist ebenfalls ein Expert Advisor. Expert Advisor umfasst andere Expert Advisors. Diese inkonsistente Vererbung resultiert aus der Tatsache, dass sowohl Trailing-Stop als auch Money-Management Zugang zu einigen privaten Daten und Methoden eines grundlegenden Expert Advisors benötigen.

Übrigens, es gibt lange Girlanden von Erbschaften. CIndicators verwenden CIndicatorBuffer, der seinerseits seine übergeordneten Methoden aufruft. Dies hat zur Folge, dass eine einfache Verfolgung des Indikatorwerts zu einer sehr verwirrenden Aufgabe wird. Nach drei rekursiven Aufrufen verlieren wir völlig den Sinn dafür, woher etwas kommt.

Und dies ist nur ein Beispiel für eine schlechte Vererbung. In der Tat wird jede mehr oder weniger große Hierarchie von Klassen, die auf Vererbung basiert, fast immer inkonsistent, verwirrend und rekursiv. Das macht die Fehlersuche und Weiterentwicklung extrem schwierig.

Wir sind der Meinung, dass die Tiefe der Vererbung auf 1-2 Stufen begrenzt werden sollte. Darüber hinaus sollte die erste Ebene von der globalen und universellen Definition des CObjects der Null-Ebene (alle sind Objekte) erben und die spezifischen Entitäten "Expert", "Indicator", "Trailing Stop" implementieren. Die zweite Ebene sollte die spezifische Implementierung von "Expert Advisor basierend auf MACD", "SMA-Indikator", "Trailing Stop", etc. Der Einsatz der dritten Stufe muss jedoch streng geahndet und verfolgt werden.

Jetzt verstehe ich die Idee. By the way, die einfache Art und Weise habe ich diese in meinem Handel Roboter implementiert, wie ich darauf hingewiesen. Nur die Namen sind anders.

ZS: Worin haben Sie eine solche Grafik erstellt? Etwas à la Doxygen?

 
Vasiliy Sokolov:

Hier ist es. Hierarchie der Handelsklassen in der Standardbibliothek:

Das bedeutet, dass das Geldverwaltungsmodul ein Expert Advisor ist. Der Trailing-Stop ist ebenfalls ein Expert Advisor. Expert Advisor umfasst andere Expert Advisors. Diese inkonsistente Vererbung resultiert aus der Tatsache, dass sowohl Trailing-Stop als auch Money-Management Zugang zu einigen privaten Daten und Methoden eines grundlegenden Expert Advisors benötigen.

Übrigens, es gibt lange Girlanden von Erbschaften. CIndicators verwenden CIndicatorBuffer, der seinerseits seine übergeordneten Methoden aufruft. Dies hat zur Folge, dass eine einfache Verfolgung des Indikatorwerts zu einer sehr verwirrenden Aufgabe wird. Nach drei rekursiven Aufrufen verlieren wir völlig den Sinn dafür, woher etwas kommt.

Und dies ist nur ein Beispiel für eine schlechte Vererbung. In der Tat wird jede mehr oder weniger große Hierarchie von Klassen , die auf Vererbung basiert, fast immer inkonsistent, verwirrend und rekursiv. Das macht die Fehlersuche und Weiterentwicklung extrem schwierig.

Wir sind der Meinung, dass die Tiefe der Vererbung auf 1-2 Stufen begrenzt werden sollte. Darüber hinaus sollte die erste Ebene von der globalen und universellen Definition des CObjects der Null-Ebene (alle sind Objekte) erben und die spezifischen Entitäten "Expert", "Indicator", "Trailing Stop" implementieren. Die zweite Ebene sollte die spezifische Implementierung von "Expert Advisor basierend auf MACD", "SMA-Indikator", "Trailing Stop", etc. Der Einsatz der dritten Stufe muss jedoch streng geahndet und verfolgt werden.

Mit anderen Worten, es zeigt sich, dass die Klassifizierung nur dann ein wirklich wertvolles Instrument ist, wenn sie es ist:

  1. Begrenzt und schafft keine langen Vererbungshierarchien;
  2. Wird in Verbindung mit der horizontalen Gestaltung auf der Grundlage von Schnittstellen und Einschlüssen verwendet.

+ sehr wahre Gedanken.

 
Alexey Volchanskiy:

ZS: Womit wurde ein solches Diagramm erstellt? Etwas à la Doxygen?

Ja, wenn nur ;) Ich habe etwa eine Stunde lang in SnagIt daran herumgefeilt. Ich habe es speziell für meinen Artikel gemacht.
 
Vasiliy Sokolov:
Ja, wenn nur ;) Ich habe etwa eine Stunde lang in SnagIt daran herumgefeilt. Ich habe es speziell für meinen Artikel gemacht.
Ooh, handgemacht )))) Respekt!