AUFTRAG_POSITION_ID - Seite 17

 

OrderGetInteger - funktioniert nur mit schwebenden Aufträgen auf dem Markt

HistoryOrderGetInteger - arbeitet mit ausgefüllten Aufträgen in der Historie

 

Falls noch jemand Interesse hat, sind der Code, die ausführbare Datei und die EA-Protokolldatei beigefügt.

MT-5 FORTS

Schlussfolgerungen:

1. Solange der Auftrag nicht vollständig ausgeführt oder gelöscht ist, gibt es KEINE Historie zu ihm.

Die ORDER_POSITION_ID für den teilweise ausgeführten Auftrag ist nicht gesetzt.

Danke an alle, ich habe es verstanden.

Dateien:
Test_orders.zip  26 kb
 
йSerj_Che:
HI 0 10:29:25.468 Trades : Börsenkauf 2.00 SBRF-9.14 am Markt
JE 0 10:29:25.531 Trades : accepted exchange buy 2.00 SBRF-9.14 at market
NM 0 10:29:25.562 Trades : exchange buy 2.00 SBRF-9.14 at market placed for execution in 88 ms
MN 0 10:29:25.562 Trades : deal #4522433 buy 2.00 SBRF-9.14 at 6903 done (based on order #4988264)
IE 0 10:29:26.640 Trades : exchange sell 2.00 SBPR-9.14 at market
DL 0 10:29:26.734 Trades : accepted exchange sell 2.00 SBPR-9.14 at market
MQ 0 10:29:26.734 Trades : exchange sell 2.00 SBPR-9.14 at market placed for execution in 92 ms
KF 0 10:29:26.734 Trades : deal #4522434 sell 1.00 SBPR-9.14 at 5255 done (based on order #4988265)

DK 0 10:29:26.734 Trades : deal #4522435 sell 1.00 SBPR-9.14 at 5255 done (based on order #4988265)

Jetzt ist es eine Teilausführung.

Leute, kommt schon, diese Auflistung zeigt, dass eine Order (#4988265) durch zwei Trades (#4522435 &#4522434) ausgeführt wurde und hat nichts mit einer Teilausführung zu tun.

Nehmen wir an, wir möchten 50 VTBR-9,14-Kontrakte am Markt kaufen. Wir können nur von Liquiditätsanbietern kaufen, d. h. von denjenigen, die Limit-Verkaufsaufträge erteilen. Ihre Höhe und ihr Volumen sind in der oberen Hälfte der Tasse zu erkennen. Schauen wir es uns an:

Wir erteilen einen Kaufauftrag. Unser Auftrag kann nur von 4 verschiedenen Verkäufern ausgeführt werden. Wir können sehen, dass wir 1 Kontrakt bei 3874, 40 Kontrakte bei 3875, 1 Kontrakt bei 3876 und 28 Kontrakte bei 3877 kaufen können. Das bedeutet, dass unsere Bestellung von 4 Verkäufern gleichzeitig durch 4 Angebote erfüllt werden würde:

Transaktion #
Preis

Band/

verfügbares Volumen.

Insgesamt

Band

Zeit
1
3874
1/1
112:21:341
2
3875
40/40
4112:21:351
3
3876
1/1
4212:21:363
4
3878
8/28
5012:21:365

Achten Sie auf die Uhrzeit. Der Zeitpunkt des Abschlusses eines Geschäfts fällt nicht unbedingt mit dem Zeitpunkt der Auftragserteilung zusammen. Lassen Sie mich noch ein weiteres Beispiel anführen, um es zu verdeutlichen:

Teilweise Ausführung.

Nehmen wir an, wir wollen 100 Kontrakte VTBR-9.14 zu einem Preis von nicht schlechter als 3873 kaufen. Wir setzen das BuyLimit für 100 Kontrakte auf den Stand von 3873. Wenn wir den Auftrag erteilen, gibt es jedoch bereits mehrere Verkäufer, die ihre Kontrakte zu einem günstigeren Preis als dem in unserem Auftrag angegebenen verkaufen:

Band
Preis
1
3871
3
3872
1
3872
39
3872
263872

Unmittelbar nach der Erteilung dieses Limit-Auftrags werden 5 Abschlüsse getätigt, die unseren Limit-Auftrag teilweise ausführen wird. in Höhe von 70 Verträgen (1+3+1+39+26).

Die ausgeführten Geschäfte werden in die Transaktionshistorie aufgenommen, und der Limit-Auftrag selbst ist weiterhin aktiv und wird auf der Registerkarte "Handel" angezeigt, wie er ist:

Sobald unsere Order Limit-Orders aus der Gegenrichtung zusammenführt, wird ihr Preis das beste Angebot für diejenigen sein, die ihre Kontrakte verkaufen wollen:

Band
Preis
30 (Dies ist unser Angebot)
3873
2 (die Angebote der anderen Teilnehmer sind schlechter)
3872
12
3871

Da unser Angebot besser ist und der Markt liquide ist, wird unser Auftrag von anderen Marktteilnehmern mit gegenläufigen, marktgerechten oder schwebenden Aufträgen ausgeführt.

Nach einiger Zeit wird der Auftrag ausgeführt und in die "Historie" aufgenommen.

Wenn wir den gesamten Prozess in Bezug auf die Zeit analysieren, ergibt sich folgendes Bild:

1. Wir setzen einen Limit-Auftrag. Die Einstellungszeit entspricht der ORDER_TIME_SETUP_MSC.

2. Die durch diesen Auftrag initiierten Geschäfte werden ausgelöst. Diese Abschlüsse werden sofort in die Historie aufgenommen. Der Auftrag selbst befindet sich immer noch auf der Registerkarte "Handel" und sieht so aus wie in der Abbildung oben dargestellt.

3. Nach einiger Zeit werden alle Geschäfte ausgelöst, der Auftrag erhält das erforderliche Volumen und wird in die Auftragshistorie aufgenommen. Seine Ausführungszeit ORDER_TIME_DONE entspricht in der Regel dem zuletzt ausgeführten Geschäft.

Der Auftrag hat aus bestimmten Gründen (mangelnde Liquidität, Verfall des Auftrags) nicht das erforderliche Volumen erreicht. In diesem Fall wird sie in die Historie mit dem Status "teilweise ausgeführt" verschoben. Das bedeutet, dass nicht das gesamte angeforderte Volumen durch Geschäfte ausgeführt werden kann.

Beachten Sie das Bildschirmfoto dieser Bestellung:

Der Auftrag wurde innerhalb von 25 Sekunden (!) ausgeführt und befand sich die ganze Zeit über in der Registerkarte der aktiven Aufträge. Und nur der letzte Handel wurde in die Geschichte verschoben. Sein ORDER_TIME_DONE ist nun gleich dem Zeitpunkt des letzten Geschäfts.

 

P/S Wie versprochen (bezüglich der Veröffentlichung der Antwort von Servicedesk).

Ich werde keine Antwort vom Service Desk erhalten, weil ich meinen Antrag zurückgezogen habe, da er nicht mehr benötigt wurde.

Ich danke komposter für seinen Vorschlag, einen Test-EA zu schreiben mit

Ich werde Sie auf dem Laufenden halten und Ihnen detaillierte Protokolle zur Verfügung stellen.

 
papaklass:

Alles klar!? Willst du dich nicht bei Integer bedanken, der dich den ganzen Abend begleitet und dich zum Nachdenken gebracht hat?

Hilf dir selbst nach einer solchen Einstellung...

Möchten Sie fortfahren?
 
papaklass:

Alles klar!? Willst du dich nicht bei Integer bedanken, der dich den ganzen Abend begleitet und dich zum Nachdenken gebracht hat?

Bedienen Sie sich nach einer solchen Einstellung...

Das war seine Schuld, du hättest ihm nicht beim Denken helfen sollen, du hättest es für ihn tun sollen.
 
sandex:
Das ist sein Fehler, er hätte nicht mitdenken sollen, aber er hat es für ihn getan.

sandex:

Sie suchen im falschen Teil,OrderGetInteger(ORDER_POSITION_ID) - Sie versuchen, in dem Teil zu suchen, der nicht an der Eröffnung/Änderung/Schließung der Position beteiligt war

Sie müssen wie folgt aussehen HistoryOrderGetInteger(ticket,ORDER_POSITION_ID)

-----------------

Ihr Kommentar?

Möchten Sie fortfahren?

 
Mikalas:

sandex:

Sie suchen im falschen Teil,OrderGetInteger(ORDER_POSITION_ID) - Sie versuchen, in dem Teil zu suchen, der nicht an der Eröffnung/Änderung/Schließung der Position beteiligt war

Sie müssen wie folgt aussehen HistoryOrderGetInteger(ticket,ORDER_POSITION_ID)

-----------------

Ihr Kommentar?

Möchten Sie fortfahren?

Warum? Warum tun Sie das? Als ob der Mann Blödsinn geschrieben hätte? Es wäre kein Unsinn, wenn du nicht deinen eigenen Unsinn geschrieben hättest. Sie haben geschrieben, dass der Auftragseingang in der Auftragshistorie erscheint und noch auf dem Markt ist.

Möchten Sie fortfahren?

 

Die Vollendung ist, glaube ich, die letzte.

Kein Forum, an dem ich jemals teilgenommen habe oder teilnehme

Es gibt keine solche Einstellung der Forumsnutzer zueinander!

Ein Forum ist eine Gemeinschaft von Gleichgesinnten, die Lösungen (Diskussionen)

Sie ist eine Gemeinschaft von Gleichgesinnten, die gemeinsam Probleme lösen und sich gegenseitig helfen können.

Alle Menschen sind UNTERSCHIEDLICH - der eine erfasst das Wesentliche der Frage sofort, der andere braucht Zeit,

um es zu verstehen.

Denken Sie in aller Ruhe darüber nach!

P / S Und ich danke Yurich und komposter, gerade weil.

Ich habe mich bei Yurich und komposter bedankt, weil sie nichts Unnötiges gesagt haben.

Für einen Mann (auch wenn er sich irrt oder falsch liegt).

Sie sind ein Beispiel für echte Forenbenutzer!

 
papaklass:

Ich sitze bereits im Parterre. Ich freue mich darauf.... :)

Sasha, das ist eine sehr bequeme Position, um einen Kick zu bekommen...