Bei einer Anwendung des OOP

 

Ich schreibe gerade einen EA an einen Kunden und die Situation ist wie folgt. Es gibt keine klare Zielvorgabe für alle Punkte, aber es gibt Ideen, die er testen möchte. Das heißt, die Arbeit ist näher an der Forschung.

Er sagt, ich weiß gar nicht, was ich machen soll, es gibt Varianten von Eingaben, die möchte ich ausprobieren, kann ich das machen? Ich werde mehrere Varianten des Expert Advisors schreiben müssen? Und Inputs nach Volumen können natürlich nicht in einer Funktion enthalten sein und sollten dynamisch vom Markt getragen werden. Mit anderen Worten: Es kann 1... N. Ich gebe eine vereinfachte Beschreibung der Situation.

Lassen Sie uns eine Basisklasse erstellen, in der alles unverändert bleibt, und von dieser Klasse werden wir Nachkommen mit geändertem Verhalten haben.

- Und was ist eine Klasse?

Der Kunde versteht ein wenig von MQL, ist aber kein Programmierer. Ich begann zu erklären, aber er verstand nicht.

Ich habe im Internet ein Bild gefunden, das die Klassifizierung der Tierarten zeigt. Ich sagte: Vereinfachen wir es und nehmen wir an, dass sie sich alle aus einander entwickelt haben.

Ich sage: Unsere Basisklasse wären die antiken Flagellaten. Verfügt über grundlegende Funktionen, nur das Nötigste. Daraus entstehen dann Protozoen, Vielzeller usw. Und jeder Nachkomme enthält alle Funktionen seines Elternteils.

- Oh, ich verstehe! Und sogar die Säugetiere werden die Funktionalität der antiken Flagellaten haben, habe ich recht?

- Ja, das ist richtig.

Nun überlege ich, wie dieser Fall in einem Tester optimal genutzt werden könnte, die Strategie ist kein Scalper oder Ticker, für einen Tester geeignet. Auch bei den erschreckenden Rätseln, wer die Suckers sind ))

Klassen

**

 
Alexey Volchanskiy:

...

Ich sage: Unsere Basisklasse wären die antiken Flagellaten. Es verfügt über die grundlegenden Funktionen, nur das Nötigste. Daraus entstehen dann Protozoen, Vielzeller usw. Jeder Nachkomme enthält alle Funktionen seines Elternteils.

...

Leider entpuppte sich die Idee der Vererbung als ein Stock mit zwei Enden. Sie könnten sich ungewollt verletzen. Deshalb ist es besser, die Vererbung nur in sehr begrenztem Umfang zu nutzen.
 
Vasiliy Sokolov:
Leider erwies sich die Idee der Vererbung als zweischneidiges Schwert. Sie könnten sich aus Versehen selbst k.o. schlagen. Deshalb sollten Sie die Vererbung nur in sehr begrenztem Umfang einsetzen.

Dieser EA wird wahrscheinlich nicht mehr als zwei Vererbungsbeziehungen haben. Das Bild dient nur zur Veranschaulichung der Vererbung. Ich selbst bin kein Anhänger von Komplikationen, aber der Herrgott... der sich gerne amüsiert))).

Was den "Klumpen" in der Standardbibliothek angeht, so ist dieser ziemlich tief, vor allem bei Controls.

 
Alexey Volchanskiy:

Dieser EA wird wahrscheinlich nicht mehr als zwei Vererbungsbeziehungen haben. Das Bild dient nur zur Veranschaulichung der Vererbung. Ich selbst bin kein Anhänger von Komplikationen, aber der Herrgott... der sich gerne amüsiert))).

Was das "Lecken" angeht, schauen Sie sich die Standardbibliothek an, das ist eine ziemlich tiefe Ebene, besonders in Controls.

Leider ist die Standardbibliothek kein Benchmark. Einige Kurse sind einfach Meisterwerke, andere sind ohne jegliches Verständnis für das Thema geschrieben (wahrscheinlich von verschiedenen Personen).
 
Vasiliy Sokolov:
Leider ist die Idee der Vererbung zu einem zweischneidigen Schwert geworden. Sie könnten sich ungewollt verletzen. Deshalb sollten Sie die Vererbung nur in sehr begrenztem Umfang einsetzen.

Darf ich Ihnen ein Beispiel für "zashib" geben?

Ich hingegen versuche immer, Vererbung und Polymorphismus so weit wie möglich zu nutzen. Es ist sehr praktisch, virtuelle Funktionen zu haben, die bei Bedarf für die von Ihnen erstellten Objekte aufgerufen werden...

Es gibt Fälle, in denen alle Nachkommen die Funktionalität der Vorgängerklasse übernehmen, die die Nachkommen nicht mehr benötigen - aber ich sehe hier keine besonderen Probleme. Benutzen Sie es nicht, das ist alles. Ich spreche noch nicht einmal von geschützter Vererbung, wenn die Benutzer der Klasse nicht mehr auf die Funktionen des Vorgängers verweisen können, und hier ist es sehr einfach, "unnötige Funktionen zu entfernen".

 
George Merts:

Darf ich Ihnen ein Beispiel für "zashib" geben?

Ich hingegen versuche immer, Vererbung und Polymorphismus so weit wie möglich zu nutzen. Es ist sehr praktisch, virtuelle Funktionen zu haben, die bei Bedarf für Objekte, die erstellt werden, aufgerufen werden...

Es gibt Fälle, in denen alle Nachkommen Funktionen der Vorgängerklasse übernehmen, die die Nachkommen nicht mehr benötigen, aber ich sehe hier kein besonderes Problem. Benutzen Sie es nicht, das ist alles. Ich spreche noch nicht einmal von geschützter Vererbung, wenn die Benutzer der Klasse nicht mehr auf die Funktionen des Vorgängers verweisen können, und hier ist es sehr einfach, "unnötige Funktionen zu entfernen".

Gut geschrieben. Ich verwende virtuelle Funktionen ausgiebig in diesem Projekt, sehr praktisch. Die Nachfolgeklassen haben unterschiedliche "Verhaltensweisen", aber die gleiche Schnittstelle. In MQL gibt es keinen Begriff für eine Schnittstelle, aber es ist nicht schwer, sie zu imitieren.

Ich habe schon daran gedacht, die Instanzen aller Nachkommen in ein Array zu packen und sie in einer Schleife mit Aufrufen von virtuellen Funktionen laufen zu lassen. Und die erfolgreichsten Signale auf irgendeine Weise auszuwählen, an die ich noch nicht gedacht habe. Bislang ist nicht klar, wie die "Güte" zu bestimmen ist. Es besteht also die Möglichkeit, durch Anpassung an den sich wandelnden Markt eine fliegende Optimierung vorzunehmen.

Ich denke, es ist besser, dies nicht im funktionierenden EA zu tun, sondern in seiner kleinen Modifikation, die parallel zum Schreiben von Informationen zumindest in eine Datei funktioniert, die Austauschgeschwindigkeit ist hier nicht wichtig.

Was ist mit der"Funktionalität der Vorgängerklasse, die die Nachkommen nicht mehr benötigen" - egal, die Funktionen existieren ohnehin als eine einzige Kopie im Speicher. Natürlich wird für jede Instanz Datenspeicher zugewiesen, aber bei den heutigen Gigabytes an Arbeitsspeicher ist das nicht mehr so wichtig.

 
Sie sollten besser die ToR beschreiben, denn es ist nicht klar, was Sie meinen und was Klassen damit zu tun haben.
 
Alexey Volchanskiy:

Ich schreibe gerade einen Ratgeber für einen Kunden, und die Situation ist wie folgt. Es gibt keine klare Zielvorgabe für alle Punkte, aber es gibt Ideen, die er testen möchte. Das heißt, die Arbeit ist näher an der Forschung.

Er sagt, ich weiß gar nicht, was ich machen soll, es gibt Varianten von Eingaben, die möchte ich ausprobieren, kann ich das machen? Ich werde mehrere Varianten des Expert Advisors schreiben müssen? Und Inputs nach Volumen können natürlich nicht in einer Funktion enthalten sein und sollten dynamisch vom Markt getragen werden. Mit anderen Worten: Es kann 1... N. Ich gebe eine vereinfachte Beschreibung der Situation.

Lassen Sie uns eine Basisklasse erstellen, in der alles unverändert bleibt, und von dieser Klasse werden wir Nachkommen mit geändertem Verhalten haben.

- Und was ist eine Klasse?

Der Kunde versteht ein wenig von MQL, ist aber kein Programmierer. Ich begann zu erklären, aber er verstand nicht.

Ich habe im Internet ein Bild gefunden, das die Klassifizierung der Tierarten zeigt. Ich sagte: Vereinfachen wir es und nehmen wir an, dass sie sich alle aus einander entwickelt haben.

Ich sage: Unsere Basisklasse wären die antiken Flagellaten. Verfügt über grundlegende Funktionen, nur das Nötigste. Daraus entstehen dann Protozoen, Vielzeller usw. Und jeder Nachkomme enthält alle Funktionen seines Elternteils.

- Oh, ich verstehe! Und sogar die Säugetiere werden die Funktionalität der antiken Flagellaten haben, habe ich recht?

- Ja, das ist richtig.

Nun überlege ich, wie dieser Fall in einem Tester optimal genutzt werden könnte, die Strategie ist kein Scalper oder Ticker, für einen Tester geeignet. Auch bei den erschreckenden Rätseln, wer die Suckers sind ))

**

Wenn Sie nicht wissen, was sie wollen, können Sie sie bitten, dies manuell zu tun. Oder lassen Sie sie selbst testen, was sie nicht wissen...
 
Alexey Volchanskiy:

Ich schreibe gerade einen EA an einen Kunden und die Situation ist wie folgt. Es gibt keine klare Zielvorgabe für alle Punkte, aber es gibt Ideen, die er testen möchte. Das heißt, die Arbeit ist näher an der Forschung.

Er sagt, ich weiß gar nicht, was ich machen soll, es gibt Varianten von Eingaben, die will ich ausprobieren, kann ich das machen? Ich werde mehrere Varianten des Expert Advisors schreiben müssen? Und Inputs nach Volumen können natürlich nicht in einer Funktion enthalten sein und sollten dynamisch vom Markt getragen werden. Mit anderen Worten: Es kann 1... N. Ich gebe eine vereinfachte Beschreibung der Situation.

Lassen Sie uns eine Basisklasse erstellen, in der alles unverändert bleibt, und von dieser Klasse werden wir Nachkommen mit geändertem Verhalten haben.

- Und was ist eine Klasse?

Der Kunde versteht ein wenig von MQL, ist aber kein Programmierer. Ich begann zu erklären, aber er verstand nicht.

Ich habe im Internet ein Bild gefunden, das die Klassifizierung der Tierarten zeigt. Ich sagte: Vereinfachen wir es und nehmen wir an, dass sie sich alle aus einander entwickelt haben.

Ich sage: Unsere Basisklasse wären die antiken Flagellaten. Verfügt über grundlegende Funktionen, nur das Nötigste. Daraus entstehen dann Protozoen, Vielzeller usw. Und jeder Nachkomme enthält alle Funktionen seines Elternteils.

- Oh, ich verstehe! Und sogar die Säugetiere werden die Funktionalität der antiken Flagellaten haben, habe ich recht?

- Ja, das ist richtig.

Nun überlege ich, wie dieser Fall in einem Tester optimal genutzt werden könnte, die Strategie ist kein Scalper oder Ticker, für einen Tester geeignet. Auch bei den erschreckenden Rätseln, wer die Suckers sind ))

**

Die Hauptsache ist, dass es bequem zu benutzen ist. Um verschiedene Eingaben auszuprobieren, können Sie dies nach Eingabesatznummern sortiert tun. D.h. es gibt eine Sammlung von Eingabesätzen. Falls sinnvoll, 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.
 
Alexey Busygin:
Sie sollten Ihre Aufgabenstellung besser beschreiben, denn es ist nicht klar, was Sie meinen und was Klassen damit zu tun haben.

Wie lautet der Auftrag, den mir der Kunde erteilt hat? )) Glauben Sie, dass das politisch korrekt ist?

Oder ist es für Sie etwas Exotisches? Oder ist es für Sie eine Art Exotik? Für mich ist es ein ganz normales Arbeitsmittel.

 
Vladimir Pastushak:
Sie sollten erst entscheiden müssen, was sie wollen, und dann darum bitten... Oder lassen Sie sie selbst testen, was sie nicht wissen...
Warum nicht? Ich liebe Forschung, besonders wenn sie bezahlt wird.)