Strukturregeln. Lernen, wie man Programme strukturiert, Erforschung von Möglichkeiten, Fehlern, Lösungen usw. - Seite 19

 
komposter:

MetaDriver sagt es richtig, und sein System ist korrekt. Dick_fx würde auch hinzufügen, dass der "Trading Driver" mit 10-20 Plattformen arbeiten sollte, um die besten Preise zu nutzen.

Die Verwendung eines solchen korrekten Systems ist jedoch nur unter idealen Bedingungen sinnvoll - keine Fehler in der Strategie, kein Eingreifen des Benutzers, keine höhere Gewalt... In der Realität ist dies jedoch selten der Fall.

Lassen Sie mich ein Beispiel von dick_fx geben: 25 Strategien arbeiten, der Aggregator (Trade Driver) sammelt sie zu einer Nettoposition und setzt sie in den Markt, alles ist in Ordnung. Plötzlich läuft bei der 17-ten Strategie etwas schief und sie gibt ungesunde Prognosen ab - sie sagt, man solle bei 50 % der Einlage eröffnen. Expert Advisor öffnet sich gehorsam.

Was macht ein triviales Schließfach a la MT4:

  • entfernt den 17. EA aus dem Diagramm (es ist leicht, ihn durch die Magie im Deal zu finden),
  • Schließen Sie die entsprechende Position (bei MT4) oder einen Teil der Position (bei MT5),
  • liest Protokolle, die von diesem EA erstellt wurden, um die Situation zu analysieren.

Kommen wir nun zur "korrekten Buchführung". Was sollte der Händler tun, um den Fehler zu korrigieren (ein 50%iger Margenhandel - ein offensichtlicher Logikfehler)?

  • Finden Sie heraus, welche Strategie sie erzeugt hat (wie? aus den Protokollen?),
  • Suchen Sie den entsprechenden Code und bearbeiten Sie ihn (return(0)?),
  • ODER in der Positionssummenschleife, gegenüber der gewünschten Strategie (die Zahl darf nicht verwechselt werden!), weiter setzen;
  • Kompilieren Sie den Expert Advisor (wenn es sich um MT4 handelt - schließen Sie zuerst das Terminal, oder geben Sie nach der Kompilierung die richtigen Einstellungen an),
  • Die Analyse der Situation - ein eigener Song (wenn nicht mit eigenen Protokollen mit Aufteilung in Strategien versehen).

Die Frage ist: Was ist einfacher? Offensichtlich ist die Variante mit MT4.

Und was ist billiger? Offensichtlich ist die Option mit Netting.

Was ist die Schlussfolgerung? Um einen Markttreiber mit GUI von MT4 zu machen ;)

Das Problem der Lokalisierung einer fehlerhaften Strategie in einer Menge zusammengefasster heterogener Strategien besteht zwar, ist aber noch nicht so dramatisch geworden. Ich persönlich fasse (in großem Umfang) nur homogene Strategien zusammen, z.B. unterschiedlich optimierte neuronale Netze. Aber dort ist alles einfacher - die Signale der Strategien sind normalisiert (-1...+1), jede Strategie leistet einen mikroskopisch kleinen Beitrag zur Gesamtposition, die Zuverlässigkeit des Schemas wird durch "statistische Überlegenheit" erreicht. Auf der anderen Seite ist es komplizierter - es ist fast unwirklich, einen Fehler in einer solchen Menge rechtzeitig zu entdecken. Nur durch individuelle Tests (vorzugsweise durch automatisierte Tests).

Ich kann versuchen, Ideen für diese Lokalisierung zu generieren, aber nicht versuchen, "reflexartig" auf 4 zu springen, und nur den Raum der Optionen fühlen - vielleicht wird etwas Besseres gefunden werden. :)

// Wahrscheinlich wäre es unmöglich, einen individuellen Aktienindikator (aka Tester) für jede Strategie besser zu erfinden, aber bis jetzt scheint es eine zu große Belastung zu sein.

 
komposter:

MetaDriver sagt es richtig, und sein System ist korrekt. Dick_fx würde auch hinzufügen, dass der "Trading Driver" mit 10-20 Plattformen arbeiten sollte, um die besten Preise zu nutzen.

Die Verwendung eines solchen korrekten Systems ist jedoch nur unter idealen Bedingungen sinnvoll - keine Fehler in der Strategie, kein Eingreifen des Benutzers, keine höhere Gewalt... In der Realität ist dies jedoch selten der Fall.

Lassen Sie mich ein Beispiel von dick_fx geben: 25 Strategien arbeiten, der Aggregator (Trade Driver) sammelt sie zu einer Nettoposition und setzt sie in den Markt, alles ist in Ordnung. Plötzlich läuft bei der 17-ten Strategie etwas schief und sie gibt ungesunde Prognosen ab - sie sagt, man solle bei 50 % der Einlage eröffnen. Der Expert Advisor öffnet sich gehorsam.

Was macht ein triviales Schließfach a la MT4:

  • entfernt den 17. EA aus dem Diagramm (er ist durch die Magie im Handel leicht zu finden),
  • Schließen Sie die entsprechende Position (bei MT4) oder einen Teil der Position (bei MT5),
  • liest Protokolle, die von diesem EA erstellt wurden, um die Situation zu analysieren.

Kommen wir nun zur "korrekten Buchführung". Was sollte der Händler tun, um den Fehler zu korrigieren (ein 50%iger Margenhandel - ein offensichtlicher Logikfehler)?

  • Finden Sie heraus, welche Strategie sie erzeugt hat (wie? aus den Protokollen?),
  • Suchen Sie den entsprechenden Code und bearbeiten Sie ihn (return(0)?),
  • ODER in der Positionssummenschleife, gegenüber der gewünschten Strategie (die Zahl darf nicht verwechselt werden!), weiter setzen;
  • Kompilieren Sie den Expert Advisor (wenn es sich um MT4 handelt - schließen Sie zuerst das Terminal, oder geben Sie nach der Kompilierung die richtigen Einstellungen an),
  • Die Analyse der Situation - ein eigener Song (wenn nicht mit eigenen Protokollen mit Aufteilung in Strategien versehen).

Die Frage ist: Was ist einfacher? Offensichtlich ist die Variante mit MT4.

Und was ist billiger? Offensichtlich die Option Netting.

Was ist die Schlussfolgerung? Um einen Markttreiber mit GUI von MT4 zu machen ;)

Man hat das Gefühl, dass MT5 mit Positionen handelt.

Netting ist ein Buchhaltungssystem und nicht mehr als das, MT4 hat nur die Auftragshistorie, MT5 hat sowohl die Auftragshistorie als auch deren Summierung in einer Position.

D.h. MT5 hat eindeutig mehr Informationen zu verarbeiten.

Wir sollten auch bedenken, dass jeder Auftrag eine Magie und einen Kommentar hat, genauso wie in MT4. Sie ermöglichen es uns zu erkennen, welche Aggregatorstrategie einen Auftrag mit einer Marge von 50 % erteilt hat.

Wenn wir nicht wissen, wie man diese Art von magischen Zahlen und Kommentaren verwendet, werden wir nicht sehen, wie einfach es ist, die Reihenfolge zu identifizieren.

Wenn wir einen MetaTrader 5 als Datenfeed verwenden wollen und dann eine Out-Order in dieselbe Order setzen, die eigentlich geschlossen werden soll, dann werden in den geschlossenen Orders nur die Orders aufgelistet, die Out-Orders haben, und in den offenen Orders, die keine Out-Orders haben.

 
TheXpert:

Der Handelstreiber senkt die Zuverlässigkeit des Systems.

Glauben Sie das wirklich nicht? Und Sie sprechen so energisch über den Fahrer als etwas wirklich Cooles.

Hier ein Beispiel: Wir haben einen Arbitrageur mit Rundlauffunktion. Der erste Auftrag wird per Limit ausgeführt, dann wird die Runde per Market geschlossen.

Was passiert im internen Tester? Der Kreis ist geschlossen und es gibt keine Requotes, Requotes, Pings und andere Dinge, die den Handel stören.

Stellen wir uns nun vor, dass nach dem Limit-Requote (der Auslöser war da, die Position erschien nicht) der Kurs zurückging und dies um Mitternacht geschah (das Gesetz des Glücks) und die Verbindung für diese Zeit unterbrochen wurde.

Das Signal wurde erkannt und es gibt eine Position im internen Tester; sie sollte eingestellt werden. Dies führte zu einem enormen Verlust nach Arbitrage-Standards. In der Tat endete die Antwort mit einer Weiterleitung, so dass es nicht notwendig ist, eine Position zu eröffnen.

Die besten Schuhe sind die, die für Ihre Füße maßgeschneidert sind. Je vielseitiger, desto weniger zuverlässig.

 

TheXpert:

TheXpert:

Der Handelstreiber verringert die Zuverlässigkeit des Systems.

Glauben Sie wirklich nicht daran? Und den Fahrer so heftig als etwas wirklich Cooles zu diskutieren.

Beispiel: Wir haben einen Round-Robin-Arbitrageur. Der erste Auftrag wird auf dem Limit ausgelöst, dann schließt sich der Kreis auf dem Markt.

Was passiert im internen Tester? Der Kreis ist geschlossen, es gibt keine Re-Jacks, Requotes, Pings und andere Dinge, die den Handel stören.

Stellen wir uns nun vor, dass nach dem Limit-Requote (der Auslöser war da, die Position erschien nicht) der Preis zurückging, aber es geschah um Mitternacht (das Gesetz des Glücks) und die Verbindung war für diese Zeit verloren.

Das Signal wurde erkannt und es gibt eine Position im internen Tester; sie sollte eingestellt werden. Dies führte zu einem enormen Verlust nach Arbitrage-Standards. In der Tat endete die Antwort mit einer Zurückweisung, so dass es nicht notwendig ist, eine Position zu eröffnen.

Die besten Schuhe sind die, die auf den Fuß zugeschnitten sind. Je vielseitiger, desto weniger zuverlässig.

Sieh an, sieh an, sieh an.


Herzlichen Glückwunsch zum Geburtstag an Sie....!

--

Andriyuha, natürlich ist dieser Treiber für Prognosestrategien gedacht, nicht für Arbitragestrategien. Und das eine schließt das andere nicht aus. Der Platz der Arbitragestrategien ist etwas weiter unten im Kanal, nämlich im Aggregator. Ich plane dieses Modul (Arbitrage). Wenn wir das Schema beibehalten... Ich habe allerdings erst gestern darüber geschrieben, und zwar hier

https://www.mql5.com/ru/forum/105007/page9#821911

und weiter hier

https://www.mql5.com/ru/forum/105007/page10#821949

 
Urain:

Gehen Sie von der Aufgabe aus. Welche Aufgaben werden in der GUI am meisten nachgefragt?

Sie können es von dort aus tun. Beschreiben Sie, was Sie erreichen wollen, wählen Sie die gemeinsamen Merkmale aus, erstellen Sie das Gerüst, fügen Sie dann weitere Dinge hinzu und sehen Sie, wie einfach es ist, das Gerüst zu ändern.

Um zu verstehen, was es sein soll, schreiben Sie es um. So sieht es für mich aus.

So etwas würde mir gefallen:

Urain:
Wie wäre es, wenn Sie die API-Referenz über das Referenzmodul herstellen? Dann können Sie ein Modul ändern und die Plattform wechseln.

Ich meine, ich muss mir einen universellen (: verzeihen Sie mir TheXpert :) anpassbaren Ereignis-Router ausdenken. Zum Anschluss an TC auf der einen und GUI auf der anderen Seite.

--

TheXpert:
...

Die besten Schuhe sind die, die speziell für Ihren Fuß angefertigt werden. Je vielseitiger, desto weniger zuverlässig.

// Andrei, der Zweck von Universallösungen ist die Mehrfachnutzung. Ich kenne die Nachteile selbst. ))

 
Urain:

Man hat das Gefühl, dass der MT5 in Positionen handelt.

Netting ist ein Buchhaltungssystem und nicht mehr als das, MT4 hat nur die Auftragshistorie, MT5 hat sowohl die Auftragshistorie als auch deren Summierung in einer Position.

D.h. MT5 hat eindeutig mehr Informationen zu verarbeiten.

Wir sollten auch bedenken, dass jeder Auftrag eine Magie und einen Kommentar hat, genauso wie in MT4. Sie ermöglichen es uns zu erkennen, welche Aggregatorstrategie einen Auftrag mit einer Marge von 50 % erteilt hat.

Wenn wir nicht wissen, wie man diese Art von magischen Markern und Kommentaren verwendet, werden wir sehen, wie schwierig es ist, den Markt zu identifizieren und welche Strategien wir in der Reihenfolge setzen.

Wenn wir einen MetaTrader 5 als Datenfeed verwenden wollen und dann eine Out-Order in dieselbe Order setzen, die eigentlich geschlossen werden soll, dann werden in den geschlossenen Orders nur die Orders aufgelistet, die Out-Orders haben, und in den offenen Orders, die keine Out-Orders haben.

Sie haben das Thema des Vorteils eines Ordersystems (MT4) gegenüber einem Netto-Ordersystem (MT5) praktisch abgeschlossen. So etwas ist mir nicht in den Sinn gekommen, obwohl es offensichtlich funktioniert und nahe liegt.
 
MetaDriver:
Ich habe nicht an einen solchen Trick gedacht, obwohl er offensichtlich funktioniert und in der Nähe ist.
Ich finde es seltsam, dass mir das nicht eingefallen ist :) dann braucht man einen zweiten Hinweis - eigentlich müssten es drei zusammenhängende Magier sein, denn es gibt auch TP und SL.
 
sergeev:
Seltsam, dass es nicht gekommen ist :) dann ein zweiter Hinweis für dich - eigentlich müssten es drei verwandte Magier sein, denn es gibt auch TP und SL.

Für mich nicht relevant - ich verwende keine (strategischen) Handelsstopps, aber danke für den Hinweis. ))

--

Wap alle diese Probleme sind meist weit hergeholt (bei Netting), oder von Kunden aus Job. Die quartäre Form der "Diversifizierung der Strategien", die sich darunter verbirgt, ist ein nackter Atavismus, der nicht besser ist als die Fortbewegung. Man kann die gesamte Geschichte sowohl der empfohlenen Positionen als auch der Ausführung (Marktpositionen) auf eine Platte schreiben. Für jede Teilstrategie einzeln. Wenn der Schreiber keine Zeit verschwendet, legen Sie ihn in einen separaten Thread (Expert Advisor) und füttern ihn mit den Informationen durch benutzerdefinierte Ereignisse. Für die Analyse der "Vollzugswirklichkeit" kann sie durchaus nützlich sein.

 
Urain:
Und wenn Sie eine API-Referenz über das Referenzmodul? erstellen, können Sie ein Modul ändern und die Plattform wechseln.

Ganz genau. Es ist nicht notwendig, ein separates Modul zu schreiben. Denn der Datenlieferant ist genau dieses Modul. Ich werde das Schema eines solchen Antrags am Montag entwerfen. Was die GUI betrifft, so brauchen wir keinen "Event-Router" zu entwickeln, wie Vladimir vorschlägt. Das Laufzeitmodul unterstützt die GUI-Schnittstelle, was bedeutet, dass jeder TC, der an das Laufzeitmodul angeschlossen ist, standardmäßig mit dem GUI-Panel arbeitet, auch wenn er nichts darüber weiß (der Schaltplan wird am Montag verfügbar sein). Das Laufzeitmodul ist hier wie eine Adapterklasse. Das Prinzip ist einfach:

Jedes System, das weiß, wie es mit dem Laufzeitmodul arbeiten kann, kann miteinander interagieren, ohne etwas über das andere System zu wissen.

 
MetaDriver:
An so etwas habe ich noch gar nicht gedacht, obwohl es offensichtlich funktioniert und in meiner Nähe zu finden ist.

Es ist seltsam, Vladimir, dass dies für Sie eine Offenbarung ist. Ich verwende dieses Schema nun schon seit fast einem Jahr bei meiner Arbeit.

Ja, verstehen Sie, dass es nicht um Netting geht. Wie Vladimir richtig bemerkte, herrschen Algorithmen vor, und man kann kein großes und vor allem skalierbares Projekt aufbauen, ohne zu wissen, wie man die Daten richtig strukturiert. Achten Sie auf die rege Diskussion des Markttreiberschemas, der eine braucht dies, der andere braucht das, und innerhalb dieses Schemas müssen wir immer mehr neue Module, Zusammenhänge, verschiedene "Event-Router" einführen. Und was wird aus einem Projekt, wenn es von Dutzenden oder zwei Händlern mit unterschiedlichen Aufgaben und unterschiedlichen Marktkenntnissen genutzt wird?

Aus irgendeinem Grund kommen mir die Worte von Alexander Radischtschew in den Sinn: "Das Tier ist schelmisch groß, stoisch und bellt".