Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Guten Tag, Renat!
Könnten Sie zu der folgenden Situation bei FORTS (real) Stellung nehmen?
Es ist ein Preis im Becher mit einem Volumen von 8. Dieser Band wurde von zwei Korrespondenten erstellt (4 mit dem gleichen Preis)
Ich kaufe (verkaufe) dieses Volumen (8)mit einer Limit-Order.
Es geschieht Folgendes:
1. Wenn der Auftrag vollständig erfüllt ist, erhalte ich in OnTradeTransaction:
2. Wenn die Order mit dem Volumen des 2. Korrespondenten gefüllt wird, erhalte ich in OnTradeTransaction folgendes:
3. Wenn die Order mit dem Volumen des 1. Korrespondenten gefüllt wird, erhalte ich in OnTradeTransaction:
Warum? Denn im zweiten und dritten Fall wurde der Auftrag teilweise ausgeführt.
Ich habe einen Scheck auf diese Bestellung ausgestellt und hier ist das Ergebnis:
Dies geschah auf dem 1060er Build des Terminals und auf dem 1035er Build des Servers.
Nach der abendlichen (Haupt-)Räumung wurde das Terminal auf 1085 aktualisiert, aber ich
den Handel gestoppt, um den Grund dafür herauszufinden.
In der Demo (1085 - 1085) kann ich den Fehler nicht reproduzieren (keine schnellen Änderungen im Stack)
Hat die Historie all meiner Bestellungen "abgerufen".
Der Fehler tritt in den Builds 1035, 1060 und 1085 auf.
Im ersten Fall wird der Auftrag in einem Geschäft vollständig ausgeführt und der nicht ausgeführte Restbetrag wird nicht entfernt, da der Auftrag für das gesamte Volumen ausgeführt wurde. Im Protokoll sehen wir einen der von Ihnen erwähnten Einträge:
Im zweiten Fall wird der Auftrag teilweise ausgeführt und der nicht ausgeführte Restbetrag wird entfernt. Dies geschieht, weil Sie die Auftragsausführungspolitik - ORDER_FILLING_IOC- festgelegt haben:
In Ihrem Fall handelte es sich um einen Auftrag über 8 Lots zu 1222,1. Zum Zeitpunkt der Auftragserteilung betrug das Volumen der Gegenaufträge zu einem Preis, der nicht schlechter als 1222,1 war, 4 Lots. Infolgedessen wurden 4 Lose als ein Geschäft ausgeführt (da 4 Lose durch einen gegenläufigen Auftrag repräsentiert wurden). Der Rest des Auftrags wurde zurückgezogen, d.h. der Auftrag wurde storniert.
Laut den von Ihnen vorgelegten Protokollen:
der Auftrag wurde teilweise ausgeführt:
Dann wurde der Restbetrag gelöscht, d.h. der Auftrag wurde storniert:
Im ersten Fall wird der Auftrag in einem Geschäft vollständig ausgeführt und der nicht ausgeführte Restbetrag wird nicht entfernt, da der Auftrag für das gesamte Volumen ausgeführt wurde. Im Protokoll sehen wir einen der von Ihnen erwähnten Einträge:
Im zweiten Fall wird der Auftrag teilweise ausgeführt und der nicht ausgeführte Restbetrag wird entfernt. Dies geschieht, weil Sie die Auftragsausführungspolitik - ORDER_FILLING_IOC- festgelegt haben:
In Ihrem Fall war der Auftrag für 8 Lose zu 1222,1. Zum Zeitpunkt der Auftragserteilung gab es 4 Lose zu einem Preis, der nicht schlechter als 1222,1 war. Infolgedessen wurden 4 Lose als ein Geschäft ausgeführt (da 4 Lose durch einen gegenläufigen Auftrag repräsentiert wurden). Der Rest des Auftrags wurde zurückgezogen, d.h. der Auftrag wurde storniert.
Laut den von Ihnen vorgelegten Protokollen:
der Auftrag wurde teilweise ausgeführt:
Dann wird der Saldo entfernt, d.h. die Bestellung wird storniert:
Wie ist dann die DOKUMENTATION zu interpretieren?
Die Sache ist die, dass onTradeTransaction es keine Nachricht über den Handel(TRADE_TRANSACTION_DEAL_ADD) gibt, wennORDER_STATE_CANCELED !
Aber der Handel WAS!
Wie ist dann die DOKUMENTATION zu interpretieren?
Die Anordnung wurde aufgehoben. Der Kunde kann nach Hause entlassen werden.
Die Sache ist die, dass es bei onTradeTransaction keine Transaktionsnachricht(TRADE_TRANSACTION_DEAL_ADD) gibt, wennORDER_STATE_CANCELED !
Aber die Transaktion WAS!
Und wo haben Sie PARTIAL gesehen (das ist eine Möglichkeit, Dinge zu tun)? Nur CANCELED !
Und in der Historie ist es als CANCELED gespeichert (siehe Bild)
Guten Tag Renat!
Halten Sie es für richtig, dass ein teilweise ausgeführter Auftrag in der Historie alsORDER_STATE_CANCELED-Auftrag gespeichert werden sollte?
und in OnTradeTransaction sollte es keine Bestätigung des Geschäfts einer teilweise ausgeführten Order geben?
Bleibt es bei der derzeitigen Plattformlogik oder sind Sie bereit, in absehbarer Zeit Änderungen vorzunehmen?
Guten Tag Renat!
Halten Sie es für richtig, dass ein teilweise ausgeführter Auftrag in der Historie alsORDER_STATE_CANCELED-Auftrag gespeichert werden sollte?
und in OnTradeTransaction sollte es keine Bestätigung des Geschäfts einer teilweise ausgeführten Order geben?
Bleibt es bei der derzeitigen Plattformlogik oder sind Sie bereit, in absehbarer Zeit Änderungen vorzunehmen?
Haben Sie es selbst überprüft oder haben Sie nur auf unvollständige Beschreibungen von Mikalas reagiert? Der Auftrag war schließlich vom IOC.
Wir haben das Verhalten auf unserer Seite noch einmal überprüft:
1. Installieren Sie einen Expert Advisor aus dem Artikel Prescriptions of MQL5 - Processing TradeTransaction Events.
2. Wir haben einen IOC-Auftrag für das niedrig liquide Instrument SILV-3.15 erteilt. Der Auftrag wurde erteilt, um 11 Lots zum Preis von 16.48 zu verkaufen, während nur 1 Lot zu diesem Preis verfügbar war.
Wir haben das Folgende erhalten:
Im Terminal:
Abgesehen von der Tatsache, dass der Auftrag "storniert" wurde, können wir sehen, dass 1 von 11 angeforderten Lots ausgeführt wurde, was dem korrekten Verhalten entspricht.
Im Protokoll des Expert Advisors:
D.h. die Transaktion über das Geschäft kam in OnTradeTransaction(). Wenn die Transaktion nicht zustande käme, würde man sie im Terminal gar nicht sehen. Bitte stellen Sie sicher, dass die Transaktion TRADE_TRANSACTION_DEAL_ADD nicht gekommen ist. Vergleichen Sie das Verhalten Ihres EA mit dem oben vom Expert Advisor vorgeschlagenen Verhalten.
Guten Morgen, Renat!
Sie garantieren das Eintreffen des OnTradeTransaction-Ereignisses nicht, daher ist es nicht eingetroffen (TRADE_TRANSACTION_DEAL_ADD)
Und wenn das Ereignis TRADE_TRANSACTION_HISTORY_ADD eingetreten ist, war der AuftragsstatusORDER_STATE_CANCELED
Dort sind die "Beine gewachsen".
Wenn der Auftrag (unabhängig davon, wie er ausgeführt wurde) teilweise ausgeführt wurde, dann ist der Status meines Erachtens
sollte in der Historie als ORDER_STATE_PARTIAL aufgezeichnet werden