Diskussion zum Artikel "Die Transaktionen des Handels Anfrage- und Antwortstrukturen, Beschreibung und Protokollierung" - Seite 5

 
Alexey Viktorov #:

Wolodja, wir beide haben schon oft über diese Stimme gesprochen. Ich habe alles erklärt, so gut ich konnte, und du schienst alles zu verstehen, aber jetzt geht es wieder los....

Die Funktion OnTradeTransaction ist eine Ereignisverarbeitungsfunktion. Die Transaktion ist ein Ereignis, das gestern stattgefunden hat. Die Funktion OnTradeTransaction hätte gestern funktionieren müssen, aber heute nicht. Heute gibt es kein Ereignis DIESER Transaktion... Heute gab es welche und wird es wahrscheinlich auch noch geben, aber andere.

Ich bin sehr alt geworden. Ich bin bereits in meinem siebten Lebensjahrzehnt. Ich vergesse vieles, und ich übe von Fall zu Fall! ))

Es stellt sich heraus, dass wir für den heutigen Tag keine Transaktion brauchen, sondern einfach eine Schleife durchlaufen:

   for(int i=0; i<PositionsTotal(); i++)
     {
      if(PositionGetTicket(i))
         Print(PositionGetInteger(POSITION_IDENTIFIER));
     }

und voila! Hier ist eine offene Position. Ist das so? ))

Mit freundlichen Grüßen, Vladimir.

 
Artyom Trishkin #:

Die Daten werden auf dem Server gespeichert. Das Terminal empfängt sie in seiner Umgebung und der Expert Advisor verwendet sie dann.

Artem, guten Morgen! Ich bin heute früh aufgestanden und habe ins Terminal geschaut, und da sehe ich, dass zu Beginn einer neuen Handelssitzung der Expert Advisor mit dem Code, den ich Ihnen vorhin in meiner Nachricht gezeigt habe, die vorgestern eröffnete Position "plötzlich gesehen" hat und damit gearbeitet hat, wie es nach dem Algorithmus sein sollte. Es ist einfach eine Art von Wunder! Ich beschloss, den Expert Advisor im Strategietester für vorgestern und gestern laufen zu lassen. Im Strategietester funktionierte der Expert Advisor perfekt - er fand die vorgestern eröffnete Position und arbeitete gestern mit ihr, als wäre sie in den Notizen vermerkt. Ich möchte Sie auf diese Tatsache aufmerksam machen!!! Im Strategietester wurde die Position vorgestern eröffnet, der Expert Advisor hat sie gestern gefunden und weiter auf ....

Im Strategietester ist das eine Sache, aber im realen Handel ist das ganz anders. Und gestern ist diese Situation zum ersten Mal aufgetreten, als der Expert Advisor eine offene Position aus heiterem Himmel nicht "sehen" wollte.

Frage - wie kann das sein?

Mit freundlichen Grüßen, Vladimir.

 
MrBrooklin #:

Artem, guten Morgen! Heute bin ich früh aufgestanden und habe ins Terminal geschaut, und da sehe ich, dass zu Beginn einer neuen Handelssitzung, der Expert Advisor mit dem Code, den ich Ihnen früher in meiner Nachricht gezeigt habe, die vorgestern eröffnete Position "plötzlich gesehen" hat und mit ihr gearbeitet hat, wie es nach dem Algorithmus sein sollte. Es ist einfach eine Art von Wunder! Ich beschloss, den Expert Advisor im Strategietester für vorgestern und gestern laufen zu lassen. Im Strategietester funktionierte der Expert Advisor perfekt - er fand die vorgestern eröffnete Position und arbeitete gestern mit ihr, als wäre sie in den Notizen vermerkt. Ich möchte Sie auf diese Tatsache aufmerksam machen!!! Im Strategietester wurde die Position vorgestern eröffnet, der Expert Advisor hat sie gestern gefunden und weiter....

Frage - wie kann das sein?

Mit freundlichen Grüßen, Vladimir.

Ich weiß es nicht. Das ist dein Code. Du hast ihn geschrieben. Er funktioniert so, wie er geschrieben ist.

 
Artyom Trishkin #:

Ich weiß es nicht. Es ist dein Code. Du hast ihn geschrieben. So wie er geschrieben ist, so funktioniert er auch.

Ich verstehe den Code. Er ist sehr einfach. Artem, ich habe meine vorherige Nachricht ein wenig bearbeitet, bitte sehen Sie sie sich an. Ich habe einige weitere Informationen hinzugefügt. Vielleicht wird es Ihnen helfen, es irgendwie zu verstehen.

Mit freundlichen Grüßen, Vladimir.

Außerdem habe ich hinzugefügt, dass der Expert Advisor gestern zum ersten Mal seit 8 Monaten, in denen ich auf einem Live-Konto gehandelt habe, eine offene Position nicht "gesehen" hat. Das hat mich aus meinem Trott gerissen.

 
MrBrooklin #:

Ich verstehe den Code. Es ist die einfachste. Artem, ich habe meine vorherige Nachricht ein wenig bearbeitet, bitte schauen Sie es sich an. Ich habe einige weitere Informationen hinzugefügt. Vielleicht wird es helfen, es irgendwie zu verstehen.

Mit freundlichen Grüßen, Vladimir.

Außerdem habe ich hinzugefügt, dass nach 8 Monaten Handel auf einem Live-Konto gestern zum ersten Mal der Expert Advisor keine offene Position "gesehen" hat. Das hat mich aus meinem Trott gerissen.

Stresstests für einen solchen Fall sind notwendig, nehmen Sie die Gabel aus dem Computer sofort nach der Änderung der Handelsumgebung, schneiden Sie das Internet oder machen Sie es super langsam, so dass der Mangel an Internet nicht behoben ist, und Handelsaufträge sind praktisch nicht gesendet.... oder irgendetwas anderes, um an solch ein Nicht-Personal zu denken. Die reale Handelsumgebung und ihre Fixierung selbst auf eine kleine Anzahl von Handelsgeschäften kann zu unvorhersehbaren Ausfällen führen)))))

Artem's Artikel in der ersten haben darüber, wie man aufzeichnen und wie man die realen)))))

Saber hat einen kühleren Ansatz im Allgemeinen, es erstellt eine virtuelle Kopie der Handelsumgebung und zählt dort alles))))

 
Valeriy Yastremskiy #:
Stresstests für einen solchen Fall sind notwendig, ziehen Sie den Stecker aus dem Computer sofort nach der Änderung der Handelsumgebung, schneiden Sie das Internet oder machen Sie es super langsam, so dass der Mangel an Internet nicht behoben ist, und Handelsaufträge sind praktisch nicht gesendet.... oder etwas anderes, um an einen solchen Nicht-Standard zu denken.

Guten Morgen, Valery! Alles, was in Ihrer Nachricht aufgeführt wurde, all dies geschah wiederholt, und sogar wiederholt, während aller acht Monate des Handels auf dem realen Konto. Gleichzeitig sah der EA die Position am nächsten Tag und am übernächsten Tag. Der Code der Funktion OnTradeTransaction() funktionierte in allen acht Monaten des realen Handels korrekt.

Ich habe noch keine Erklärung dafür, was passiert ist, aber das Einzige, was mir einfällt , ist ein Serverfehler auf der Seite des Forex-Händlers. Wenn Sie alle meine Beiträge zu diesem Thema aufmerksam lesen, werden Sie eine solche Meldung finden:

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Diskussion des Artikels "Trading Transactions. Anfrage- und Antwortstrukturen, Beschreibung und Log-Ausgabe"

MrBrooklin, 2023.10.18 04:48 PM

Artem, guten Morgen! Ich bin heute früh aufgestanden und habe ins Terminal geschaut, und da sehe ich, dass zu Beginn einer neuen Handelssitzung der Expert Advisor mit dem Code, den ich Ihnen vorhin in meiner Nachricht gezeigt habe, die vorgestern eröffnete Position "plötzlich gesehen" hat und mit ihr gearbeitet hat, wie es laut Algorithmus sein sollte. Es ist einfach eine Art von Wundern! Ich beschloss, den Expert Advisor im Strategietester für vorgestern und gestern laufen zu lassen. Im Strategietester funktionierte der Expert Advisor perfekt - er fand die vorgestern eröffnete Position und arbeitete gestern mit ihr, als wäre sie in den Notizen vermerkt. Ich möchte Sie auf diese Tatsache aufmerksam machen!!! Im Strategietester wurde die Position vorgestern eröffnet, der Expert Advisor hat sie gestern gefunden und weiter auf ....

Im Strategietester ist das eine Sache, aber im realen Handel ist das ganz anders. Und gestern ist diese Situation zum ersten Mal aufgetreten, als der Expert Advisor eine offene Position aus heiterem Himmel nicht "sehen" wollte.

Frage - wie kann das sein?

Mit freundlichen Grüßen, Vladimir.

Mit freundlichen Grüßen, Vladimir.
 
Aufgrund der Tatsache, dass das TradeTransaction-Ereignis aus irgendeinem Grund verpasst werden kann, und auch, weil es möglich ist, einen "Race"-Status zu haben (zum Beispiel, wenn ein Auftrag nicht mehr aktiv ist, aber noch nicht in der Geschichte, oder es gibt keinen aktiven Auftrag, aber noch keine offene Position), habe ich einen Roboter, der alle aktiven Aufträge und seine Gesamtposition (Netting) in seinem Zustand speichert. Der Zustand wird bei jeder Änderung und bei Arbeitsende in eine Datei zurückgesetzt. Beim Start und in regelmäßigen Abständen während des Betriebs wird die Synchronisation überprüft und gegebenenfalls der Zustand synchronisiert.
 
JRandomTrader #:
Ich habe einen Roboter, der alle aktiven Aufträge und seine Gesamtposition (Netting) in seinem Status speichert. Der Zustand wird bei jeder Änderung und bei Arbeitsende in eine Datei zurückgesetzt. Beim Starten und in regelmäßigen Abständen während des Betriebs wird die Synchronisierung überprüft und der Zustand gegebenenfalls synchronisiert.

Vielen Dank für die interessante Lösung für dieses Problem. Ich werde versuchen, sie in meinem EA zu implementieren.

Mit freundlichen Grüßen, Vladimir.

 
MrBrooklin #:

Danke, dass Sie eine interessante Lösung für ein ähnliches Problem gefunden haben. Ich werde versuchen, es in meinem EA zu implementieren.

Mit freundlichen Grüßen, Vladimir.

Es kann nicht nur ein Fehler sein, und was ist ein Fehler))))) Den Zustand der Handelsumgebung zu fixieren ist nicht gerade eine einfache Aufgabe. Und wenn eine Bestellung auf einem Instrument, ist es nicht einmal geglaubt, dass es notwendig ist. Aber auf eine gute Art und Weise ist es notwendig.

Im Prüfgerät ist die ideale Ausführung, im wirklichen Leben ist sie fast ideal, aber manchmal ist sie nicht ideal und sogar unzureichend.

Daher müssen wir im wirklichen Leben das Problem irgendwie lösen, damit der Expert Advisor versteht, was mit den Aufträgen passiert. Und während es bei Aufträgen klar ist, dass man sie sendet und überprüft, ist es bei Aufträgen komplizierter. Bei jedem Tick oder seltener überprüfen Sie den Auftragsstatus, oder schauen Sie auf den Preis, wenn er plötzlich mehr oder weniger als der Preis des Auftrags wurde, um den Auftragsstatus zu überprüfen. )))

 

Guten Morgen, Artyom! Gibt es einen grundsätzlichen Unterschied für die Funktion OnTradeTransaction(), wo sie sich befinden sollte - vor der Funktion OnTick() oder nach ihr? Wenn es ein grundlegender Unterschied ist, warum?

Mit freundlichen Grüßen, Vladimir.