Typische Fehler und wie man damit umgeht, wenn man mit dem Handelsumfeld zu tun hat - Seite 7

 
fxsaber:

Ich fürchte, das ist eine krumme Logik. Aber ich könnte natürlich auch falsch liegen. Es wäre interessant, die Logik zu erfahren.

3+ Fuß Schiedsverfahren

 
Комбинатор:

3+ Fuß Arbitrage

Für diesen TS können verschiedene Logiken verwendet werden. In der Regel handelt es sich um das asynchrone Senden von drei Aufträgen. Es gibt aber auch Varianten, bei denen ein synchroner OrderSend zuerst an das Symbol gesendet wird, das am wahrscheinlichsten stark ist. Und wenn der OrderSend in einer offenen Position endet, werden mit der geringsten Wahrscheinlichkeit zwei OrderSendAsync-Aufträge gesendet.

In dieser Situation könnte man meinen, dass die erste "Position" - der Börsenauftrag - einen Mechanismus benötigt, um festzustellen, ob die erste "Position" unvollständig ist. Aber die erste OrderSend geht durch eine Limit-Order zum aktuellen Preis oder etwas schlechter. Sie wird daher nicht als "Position" betrachtet. Bei den beiden anderen handelt es sich meistens um Marktaufträge. Und wenn man sie als "Positionen" zählt, kann man Situationen vermeiden, in denen Positionen wieder geöffnet werden. In diesem Fall hat diese Buchführung keine negativen Auswirkungen.

 

Alles in allem, so wie ich es verstehe, wird es keine Lösung geben. Nicht einmal eine Lösung, sondern ein logisch korrektes Arbeitsprinzip mit der Anzahl der Aufträge und Positionen.

Ich spreche von der Funktion, die für jede Strategie verwendet wird, andere sagen - für jede Strategie - eine andere Krücke.

 
fxsaber:

Dieses Beispiel erwies sich als viel cooler. Der TP, der vom Makler selbst platziert wurde, wurde umgeleitet! Und fast sofort (ich habe 115 ms gewartet - anscheinend war es ein Fehler im MT5) nach der Neuregistrierung platzierte der Broker den nächsten TP, der ausgeführt wurde. Die Kommentare zu den Aufträgen sind auf dem Screenshot nicht zu sehen. Die grüne Farbe istORDER_REASON_TP. Dementsprechend hat der zurückgewiesene Auftrag sogar die ORDER_POSITION_ID.

Es handelt sich nicht um einen abgelehnten Auftrag, sondern um einen normal ausgeführten Auftrag. Wenn sie ausgeführt wird, wird die Positions-ID ermittelt.

Außerdem haben wir zwei Aufträge, von denen einer nicht ausgeführt wird. Nun stellt sich die Frage: Wie viele Positionen (wenn diese Aufträge keine Stop-Aufträge, sondern Positionsaufträge wären), also - wie viele Positionen würde Ihnen Ihr Ansatz zurückgeben? Die Antwort lautet: eine mehr, was falsch ist. Warum sollten Sie das dann tun?

 
Artyom Trishkin:

Es handelt sich nicht mehr um einen abgelehnten Auftrag, sondern um einen normal ausgeführten Auftrag. Wenn sie ausgeführt wird, wird die Positions-ID empfangen.

Sie haben eine falsche Vorstellung.


Und noch etwas: Es gibt zwei Aufträge, von denen einer nicht ausgeführt wurde. Nun stellt sich die Frage: Wie viele Positionen (wenn es sich bei diesen Aufträgen nicht um Stop-Aufträge, sondern um Positionsaufträge handelte), also wie viele Positionen würde Ihnen Ihr Ansatz einbringen? Die Antwort lautet: eine mehr, was falsch ist. Warum sollten Sie das dann tun?

Machen wir es noch einmal. Nehmen wir an, es gäbe zwei offene Stellen. Und lassen Sie uns einen solchen Auftrag für die Zukunft erteilen. Die Funktion liefert 2+1=3. TS geht davon aus, dass es drei Positionen gibt und alles in Ordnung ist. In 16 ms kommt die Ummantelung. TS prüft, wie viele Positionen - 2+0=2. Und es braucht drei! - sendet einen weiteren Marktauftrag. Dann wieder 2+1=3. Und der Auftrag wird ausgeführt, wobei 3+0=3 herauskommt.

 
Artyom Trishkin:

Im Allgemeinen wird es - so wie ich es verstehe - keine Lösung geben. Nicht einmal eine Lösung, sondern ein logisch korrektes Arbeitsprinzip mit der Anzahl der Aufträge und Positionen.

Ich spreche von der Funktion, die für jede Strategie verwendet wird, andere sagen - für jede Strategie - eine andere Krücke.

Ich habe meine Meinung nicht geändert. Die Funktion bleibt für 99,9 % der EAs und Handelsplattformen universell.

 
fxsaber:

Sie haben eine falsche Vorstellung.


Gehen wir es noch einmal durch. Nehmen wir an, es gäbe zwei offene Stellen. Und wir geben diese Art von Marktauftrag für die Zukunft. Die Funktion gibt 2+1=3 zurück. TS sieht sich drei Positionen an und alles ist in Ordnung. In 16 ms kommt die Ummantelung. TS prüft, wie viele Positionen - 2+0=2. Und es braucht drei! - sendet einen weiteren Marktauftrag. Dann wieder 2+1=3. Und der Auftrag wird ausgeführt, wobei 3+0=3 herauskommt.

#896615 - zurückweisen, und hat KEINE ID-Position.

Sagen wir es anders. Nehmen wir an, es gäbe zwei offene Stellen. Wir erhalten ein Signal zur Eröffnung einer dritten Position, senden uns eine Handelsanfrage und erhalten diesen umgekehrten Marktauftrag. Wenn es drei Positionen gibt, wird unser EA dazu übergehen, weitere Handelsanfragen unter Verwendung eines anderen Symbols zu senden. Die Funktion gibt 2+1=3 zurück. TS betrachtet drei Positionen und beginnt mit der Berechnung der Volumina, nimmt/stoppt drei weitere Positionen - durch ein anderes Symbol, sendet Handelsaufträge zur Eröffnung durch ein anderes Symbol. Nach 16 ms kommt das Rückgebot von einem anderen Symbol. TS schaut, wie viele Positionen - 2(aktuell)+3(2 Positionen und ein Markt von einem anderen Symbol)=5. Und es sollten sechs sein! - sendet einen weiteren Marktauftrag für das aktuelle Symbol zu einem völlig anderen Preis und berechnet das Volumen und die Takeoffs/Stops der neuen Positionen für das dritte Symbol. Dann passiert das gleiche Chaos noch einmal.

Und dann kratzen wir uns am Kopf - warum ist er verrückt geworden?

Oder glauben Sie, dass Sie Funktionen nur für eine - Ihre - Strategie und Logik des TS-Gebäudes erstellen müssen? Sie irren sich.

 
fxsaber:

Ich habe meine Meinung nicht geändert. Die Funktion bleibt für 99,9 % der EAs und Handelsplattformen universell.

Nein. Nur für eine Verhaltenslogik.

Und es gibt Tausende von ihnen.

 
fxsaber:

Ich habe meine Meinung nicht geändert. Die Funktion bleibt für 99,9 % der EAs und Handelsplattformen universell.

Die Funktion sollte das zurückgeben, was von ihr verlangt wird. Eindeutig und bedingungslos, und nicht so, dass der Nutzer später entscheiden muss, was er braucht.

Die Logik, die ich vorschlage, sollte folgendermaßen aussehen

  • Frage: Wie viele Stellen gibt es?
  • Antwort: zwei

... Oder es sollte so sein:

  • Frage: Wie viele Stellen gibt es?
  • Antwort: Moment mal - das ist noch nicht klar
  • Abwarten, dann die Frage: Wie viele Stellen gibt es?
  • Antwort: drei

Und Sie schlagen vor:

  • Frage: Wie viele Stellen gibt es?
  • Die Antwort lautet: drei.
  • Ok, so lange habe ich gewartet, zähle weiter und öffne ein anderes Symbol ... Nach einer Weile: Was für ein Blödsinn... Frage: Wie viele Stellen?
  • Antwort: zwei.
  • Frage: Warum haben Sie drei gesagt?
  • Antwort: Ich dachte, du könntest es später brauchen
  • Frage: wie viele Positionen auf dem anderen Symbol
  • Antwort: drei
  • Ja? Sind Sie sicher? Und so verlor Geld auf das andere Symbol mit der letzten Antwort ...
 
Artyom Trishkin:

#896615 ist zurückgewiesen und hat KEINE ID-Position.

Lesen Sie die Zahl im dritten linken roten Kästchen im Screenshot oben.

Sagen wir es anders. Nehmen wir an, es gäbe zwei offene Stellen. Wir erhalten ein Signal zur Eröffnung einer dritten Position, senden eine Handelsanfrage und erhalten diesen umgeleiteten Marktauftrag. Wenn wir drei Positionen haben, wird unser EA dazu übergehen, weitere Handelsanfragen unter Verwendung eines anderen Symbols zu senden. Die Funktion gibt 2+1=3 zurück. TS betrachtet drei Positionen und beginnt mit der Berechnung der Volumina, nimmt/stoppt drei weitere Positionen - durch ein anderes Symbol, sendet Handelsaufträge zur Eröffnung durch ein anderes Symbol. Nach 16 ms kommt das Rückgebot von einem anderen Symbol. TS schaut, wie viele Positionen - 2(aktuell)+3(2 Positionen und ein Markt von einem anderen Symbol)=5. Und es sollten sechs sein! - sendet einen weiteren Marktauftrag für das aktuelle Symbol zu einem völlig anderen Preis und berechnet das Volumen und die Takeoffs/Stops der neuen Positionen für das dritte Symbol. Dann passiert das gleiche Chaos noch einmal.

Und dann kratzen wir uns am Kopf und fragen uns, warum er verrückt geworden ist.

Wenn Sie die verbogene Handelslogik nicht schreiben und ausarbeiten, werden Sie nicht nur Ihren eigenen Ruf ankratzen. Soweit ich weiß, ist das bei der krummen TK, die wahrscheinlich die Freiberufler überschwemmt hat, nicht ungewöhnlich. Und weil das Geld nicht riecht, nimmt man sie nach dem Prinzip, wenn sie einen Scheiß verlangen, macht man es und vergisst es. Nichts, was auch nur annähernd damit vergleichbar ist, wurde jemals in einem Alptraum geschrieben. Aber ich bin sicher, dass die Freiberufler viel besser als ich wissen, wie es um die Qualität der Fäkalien in der TK bestellt ist. Also ja, für unzureichende TCs kann die von @Combinator vorgeschlagene Option sehr nützlich sein - die Füße aus dem TC zu nehmen, sobald eine Marktorder mit Null-ID gefunden wurde.

Oder sind Sie der Meinung, dass wir Funktionen nur für eine - Ihre - Strategie und Logik beim Aufbau des TS erstellen müssen? Sie irren sich.

Ich denke, wir müssen zumindest nachdenken. Und kein geeignetes Umfeld für die Vermehrung abscheulicher TCs schaffen. Leider bin ich nicht in der Lage, ein Kriterium für die Definition eines Bodens unter den TZs zu formulieren. Um niemanden zu verletzen, werde ich das Weltbild umkehren - ich selbst auf dem Grund, und die bekannte TK wird auf den Gesetzen der Physik schweben.


Das Rezept ist, wie man so schön sagt, universell:

  1. Treffen Sie auf einen Marktauftrag mit Null-ID - steigen Sie sofort aus.
  2. MT5-OrderSend wurde so umgeschrieben, dass es immer ein Ergebnis ungleich Null zurückgibt - der Quellcode wurde in KB veröffentlicht.
  3. Nach jedem OrderSend oder Sleep senden Sie an Punkt 1.
Mit diesem Ansatz funktioniert jede (absolut 100%ige) TK.