cTrader FIX-Engine (Einsatzregeln)¶
Einführung ¶
Umfang ¶
Diese Spezifikation soll Softwareentwicklern als Implementierungsleitfaden für die cTrader FIX-Engine-API dienen.
FIX-Version ¶
cTrader unterstützt FIX Version 4.4. Weitere Informationen zu dieser Version finden Sie in diesen Spezifikationen.
Konnektivität ¶
Verbindungstyp ¶
Eine Verbindung zur cTrader FIX-Engine ist über das Internet, einen VPN-Tunnel oder eine Direktverbindung zu unseren Rechenzentren in Großbritannien verfügbar. Kontaktieren Sie uns für weitere Details.
Zurücksetzen der Sequenznummer ¶
Alle Seiten einer FIX-Sitzung sollten beim Aufbau einer FIX-Sitzung die Sequenznummern zurücksetzen. Siehe die Anmeldenachricht.
Nachrichten ¶
Wie im FIX-Protokoll definiert, verwendet der cTrader FIX-Server zwei verschiedene Datenebenen (System und Anwendung). Beachten Sie, dass dies ein Mindestsatz von Nachrichten ist, der erforderlich ist, um die notwendigen Arbeitsabläufe zu unterstützen. Er kann sich im Laufe der Zeit ändern, da sich sowohl die geschäftlichen Anforderungen als auch die FIX-Standards weiterentwickeln.
cTrader FIX-Engine ¶
Systemnachrichten¶
- Heartbeat (Client ↔ cTrader)
- Test Request (Client ↔ cTrader)
- Logon (Client → cTrader)
- Logout (Client → cTrader)
- Resend Request (Client ↔ cTrader)
- Reject (Client ↔ cTrader)
- Sequence Reset (Client ↔ cTrader)
Anwendungsnachrichten¶
- Market Data Request (Client → cTrader)
- Market Data Snapshot/Full Refresh (Client ← cTrader)
- Market Data Incremental Refresh (Client ← cTrader)
- New Order Single (Client → cTrader)
- Order Status Request (Client → cTrader)
- Order Mass Status Request (Client → cTrader)
- Execution Report (Client ← cTrader)
- Business Message Reject (Client ← cTrader)
- Request for Positions (Client → cTrader)
- Position Report (Client ← cTrader)
- Order Cancel Request (Client → cTrader)
- Order Cancel Reject (Client ← cTrader)
- Order Cancel/Replace Request (Client → cTrader)
- Security List Request (Client → cTrader)
- Security List (Client ← cTrader)
Standardkopf ¶
Jeder administrativen oder Anwendungsnachricht geht ein Standardkopf voraus. Kopfzeilen identifizieren einen Nachrichtentyp, Länge, Ziel, Sequenznummer, Ursprungspunkt und Zeit.
Alle Nachrichten, die an cTrader gesendet werden, sollten einen Standardheader mit den folgenden Feldern haben:
| Tag | Feldname | Erforderlich | Wert | FIX-Format | Kommentare |
|---|---|---|---|---|---|
| 8 | BeginString | Ja | FIX.4.4 | String | Immer unverschlüsselt, muss das erste Feld in einer Nachricht sein. |
| 9 | BodyLength | Ja | Jeder gültige Wert | Integer | Nachrichtentextlänge. Immer unverschlüsselt, muss das zweite Feld in einer Nachricht sein. |
| 35 | MsgType | Ja | A | String | Ein Nachrichtentyp. Immer unverschlüsselt, muss das dritte Feld in einer Nachricht sein. |
| 49 | SenderCompID | Ja | Jeder gültige Wert | String | Eine ID der Handelspartei im folgenden Format: <Environment>.<BrokerUID>.<Trader Login>, wobei Environment eine Bestimmung des Servers ist, wie Demo oder Live; BrokerUID wird von cTrader bereitgestellt und Trader Login ist eine numerische Kennung des Händlerkontos. |
| 56 | TargetCompID | Ja | CSERVER | String | Ein Nachrichtenziel. The valid value is CSERVER. |
| 57 | TargetSubID | Ja | QUOTE oder TRADE | String | Ein zusätzlicher Sitzungsqualifikator. Mögliche Werte sind QUOTE und TRADE. |
| 50 | SenderSubID | Nein | Jeder gültige Wert | String | Der zugewiesene Wert zur Identifizierung eines spezifischen Nachrichtenabsenders. Muss auf QUOTE gesetzt werden, wenn TargetSubID=QUOTE. |
| 34 | MsgSeqNum | Ja | 1 | Integer | Eine Sequenznummer der Nachricht. |
| 52 | SendingTime | Ja | 20131129-15:40:08.155 | UTCTimestamp | Zeit der Nachrichtenübertragung, immer in UTC (Universal Time Coordinated, auch bekannt als GMT) ausgedrückt. |
Standard-Trailer ¶
Jede Nachricht, administrativ oder anwendungsbezogen, wird durch einen Standard-Trailer beendet. Der Trailer wird verwendet, um Nachrichten zu trennen und enthält eine dreistellige Darstellung des CheckSum-Wertes (tag=10).
| Tag | Feldname | Erforderlich | Wert | FIX-Format | Kommentare |
|---|---|---|---|---|---|
| 10 | CheckSum | Ja | 054 | String | Eine dreistellige einfache Prüfsumme. Immer das letzte Feld in einer Nachricht (zum Beispiel dient), mit dem abschließenden <SOH> als Nachrichtenende-Trennzeichen. Es ist als drei Zeichen definiert (immer unverschlüsselt). |
Sitzungsnachrichten ¶
Heartbeat (MsgType(35)=0)¶
Heartbeat-Nachrichten werden sowohl von cTrader als auch von der Client-Anwendung gesendet, um eine aktive Verbindung zu bestätigen.
Die Client-Anwendung des Anbieters überträgt einen wiederkehrenden Heartbeat in dem Intervall, das durch das Feld HeartBtInt (tag=108) in einer Logon-Nachricht definiert ist, oder als Antwort auf eine Test Request-Nachricht.
| Tag | Feldname | Erforderlich | Wert | FIX-Format | Kommentare |
|---|---|---|---|---|---|
Standard Header | Ja | ||||
| 112 | TestReqID | Nein | Jeder gültige Wert | String | Wenn ein Heartbeat das Ergebnis einer Test Request-Nachricht ist, ist TestReqID erforderlich. |
Standard Trailer | Ja |
Test Request (MsgType(35)=1)¶
Es erzwingt einen Heartbeat vom Empfänger einer Anfrage. Eine Antwort wird vom empfangenden System als Heartbeat-Nachricht gesendet, die TestReqID enthält.
| Tag | Feldname | Erforderlich | Wert | FIX-Format | Kommentare |
|---|---|---|---|---|---|
Standard Header | Ja | ||||
| 112 | TestReqID | Ja | Jeder gültige Wert | String | Eine Heartbeat-Nachrichten-ID. TestReqID sollte inkrementell sein. |
Standard Trailer | Ja |
Logon (bidirectional) (MsgType(35)=A)¶
Eine Logon-Nachricht wird von der clientseitigen Anwendung gesendet, um eine cTrader FIX-Sitzung zu beginnen, und eine Antwort wird von cTrader an die clientseitige Anwendung gesendet. Sobald die Anmeldung abgeschlossen ist, können Kurs- und Handelsströme für die Lebensdauer der Sitzung fortgesetzt werden.
Wenn eine ungültige Logon-Nachricht von cTrader empfangen wird (mit ungültigen Feldern), sendet cTrader als Antwort eine Logout-Nachricht.
| Tag | Feldname | Erforderlich | Wert | FIX-Format | Kommentare |
|---|---|---|---|---|---|
Standard Header | Ja | ||||
| 98 | EncryptMethod | Ja | 0 | Integer | Definiert ein Nachrichtenverschlüsselungsschema. Derzeit wird nur Transportsicherheit auf Ebene unterstützt. Der gültige Wert ist 0 = NONE_OTHER (Verschlüsselung wird nicht verwendet). |
| 108 | HeartBtInt | Ja | Jeder gültige Wert | Integer | Ein Heartbeat-Intervall in Sekunden. Der Wert wird in der Datei config.properties (clientseitig) als SERVER.POLLING.INTERVAL festgelegt. Der Standardintervallwert beträgt 30 Sekunden. Wenn HeartBtInt auf 0 gesetzt ist, ist keine Heartbeat-Nachricht erforderlich. |
| 141 | ResetSeqNumFlag | Nein | Y | Boolean | Alle Seiten der FIX-Sitzung sollten die Sequenznummern zurücksetzen. Der gültige Wert ist Y (zurücksetzen). |
| 553 | Username | Nein | Jeder gültige Wert | String | Eine numerische Benutzer-ID. Der Benutzer ist mit dem SenderCompID-Wert verknüpft (die Organisation des Benutzers, tag=49). |
| 554 | Password | Nein | Jeder gültige Wert | String | Ein Benutzerpasswort. |
Standard Trailer | Ja |
Hinweis
Das Feld Username (tag=553) muss einen numerischen Händler-Login-Wert enthalten, während SenderCompID (tag=49) eine Umgebung, BrokerUID und einen Händler-Login enthalten muss, getrennt durch einen Punkt (zum Beispiel live.theBroker.12345).
Siehe Beispiele für Logon-Nachrichten unten.
Anfrage:
8=FIX.4.4|9=126|35=A|49=live.theBroker.12345|56=CSERVER|34=1|52=20170117-08:03:04|57=TRADE|50=any_string|98=0|108=30|141=Y|553=12345|554=passw0rd!|10=131|
Antwort (erfolgreich):
8=FIX.4.4|9=106|35=A|34=1|49=CSERVER|50=TRADE|52=20170117-08:03:04.509|56=live.theBroker.12345|57=any_string|98=0|108=30|141=Y|10=066|
Antwort (fehlgeschlagen):
8=FIX.4.4|9=109|35=5|34=1|49=CSERVER|50=TRADE|52=20170117-08:03:04.509|56=live.theBroker.12345|58=InternalError: RET_INVALID_DATA|10=033|
Logout (MsgType(35)=5)¶
Eine Logout-Nachricht wird von der Client-Anwendung gesendet, um eine Sitzungsbeendigung mit cTrader anzufordern und als Antwort von cTrader. Eine Sitzungsabmeldung erfolgt als Antwort darauf, dass ein Marktteilnehmer eine Logout-Nachricht an cTrader sendet. Bevor die Sitzung beendet wird, storniert cTrader alle Kurse, die noch aktiv an die anfragende Partei gestreamt werden. Wenn eine ungültige Logon-Nachricht von cTrader empfangen wird (mit ungültigen Feldern), sendet cTrader als Antwort eine Logout-Nachricht mit Fehlerdetails im Feld Text (tag=58).
| Tag | Feldname | Erforderlich | Wert | FIX-Format | Kommentare |
|---|---|---|---|---|---|
Standard Header | Ja | ||||
| 58 | Text | Nein | Jeder gültige Wert | String | Details zur Logon-Ablehnung. Wird nur für cTrader-zu-Client-Nachrichten als Antwort auf eine ungültige Logon-Nachricht verwendet. |
Standard Trailer | Ja |
Siehe Beispiele für Logout-Nachrichten unten.
Anfrage:
8=FIX.4.4|9=86|35=5|49=live.theBroker.12345|56=CSERVER|34=161|52=20170117-09:22:33|57=TRADE|50=any_string|10=102|
Antwort:
8=FIX.4.4|9=90|35=5|34=160|49=CSERVER|50=TRADE|52=20170117-09:22:33.077|56=live.theBroker.12345|57=any_string|10=044|
Resend Request (MsgType(35)=2)¶
Eine eingehende/ausgehende Nachricht wird verwendet, um das erneute Senden einer Nachricht (oder mehrerer Nachrichten) anzufordern, typischerweise wenn eine Lücke in der Sequenznummerierung erkannt wird.
| Tag | Feldname | Erforderlich | Wert | FIX-Format | Kommentare |
|---|---|---|---|---|---|
Standard Header | Ja | ||||
| 7 | BeginSeqNo | Ja | Jeder gültige Wert | Integer | Eine Nachrichtensequenznummer des ersten Datensatzes im Bereich, der erneut gesendet werden soll. |
| 16 | EndSeqNo | Ja | Jeder gültige Wert | Integer | Eine Nachrichtensequenznummer des letzten Datensatzes im Bereich, der erneut gesendet werden soll. |
Standard Trailer | Ja |
Reject (bidirectional) (MsgType(35)=3)¶
Wird gesendet, wenn die empfangene Nachricht aufgrund einer Verletzung einer Sitzungsregel nicht verarbeitet werden kann. Abgelehnte Nachrichten müssen aufgezeichnet werden und eine Erhöhung muss auf die eingehende Sequenznummer angewendet werden.
| Tag | Feldname | Erforderlich | Wert | FIX-Format | Kommentare |
|---|---|---|---|---|---|
Standard Header | Ja | ||||
| 45 | RefSeqNum | Ja | Jeder gültige Wert | SeqNum | Eine Sequenznummer der referenzierten Nachricht. |
| 58 | Text | Nein | Jeder gültige Wert | String | Eine Freitext-Zeichenfolge. |
| 354 | EncodedTextLen | Nein | Jeder gültige Wert | Länge | Länge des Feldes EncodedText (Nicht-ASCII-Zeichen) in Bytes. |
| 355 | EncodedText | Nein | Jeder gültige Wert | Daten | Eine Darstellung des Feldes Text (tag=58), kodiert unter Verwendung des im Feld MessageEncoding (tag=347) angegebenen Formats (aus dem Standardheader). Wenn die ASCII-Darstellung verwendet wird, sollte sie auch im Feld Text (tag=58) angegeben werden. |
| 371 | RefTagID | Nein | Jeder gültige Wert | Integer | Eine Tag-Nummer des FIX-Feldes, das die Nachrichtenablehnung ausgelöst hat. |
| 372 | RefMsgType | Nein | Jeder gültige Wert | String | MsgType (tag=35) der referenzierten FIX-Nachricht. |
| 373 | SessionRejectReason | Nein | Jeder gültige Wert | Integer | Kodierte Ursachen der Ablehnung. Die gültigen Werte sind: 0 = Ungültige Tag-Nummer 1 = Erforderlicher Tag fehlt 2 = Kein Tag für diesen Nachrichtentyp definiert 3 = Undefinierter Tag 4 = Kein Wert für angegebenen Tag 5 = Wert für diesen Tag ist außerhalb des gültigen Bereichs 6 = Falsches Datenformat für Wert 7 = Entschlüsselungsproblem 8 = Signaturfehler 9 = CompID-Fehler 10 = SendingTime-Genauigkeitsfehler 11 = MsgType ungültig 12 = XML-Validierungsfehler 13 = Tag wird wiederholt 14 = Angegebener Tag ist nicht in der richtigen Reihenfolge 15 = Wiederholende Gruppenfelder nicht in der richtigen Reihenfolge 16 = Falsche NumInGroup-Zählung für wiederholende Gruppe 17 = Feldtrennzeichen (SOH-Zeichen) in Nicht-Datenwert enthalten |
Standard Trailer | Ja |
Sequence Reset (MsgType(35)=4)¶
Eine eingehende/ausgehende Nachricht sollte nicht auf Anwendungsebene verwendet werden. Eine Sequence Reset-Nachricht kann nur eine Sequenznummer erhöhen.
| Tag | Feldname | Erforderlich | Wert | FIX-Format | Kommentare |
|---|---|---|---|---|---|
Standard Header | Ja | ||||
| 123 | GapFillFlag | Nein | Yes oder No | String | Zeigt an, dass eine Sequence Reset-Nachricht administrative oder Anwendungsnachrichten ersetzt, die nicht erneut gesendet werden. |
| 36 | NewSeqNo | Ja | 1 | Integer | Eine neue Sequenznummer. |
Standard Trailer | Ja |
Anwendungsnachrichten ¶
Market Data Request (MsgType(35)=V)¶
| Tag | Feldname | Erforderlich | Wert | FIX-Format | Kommentare |
|---|---|---|---|---|---|
Standard Header | Ja | ||||
| 262 | MDReqID | Ja | Jeder gültige Wert | String | Eine eindeutige Kursanfrage-ID. Eine neue ID für ein neues Abonnement, die gleiche ID wie zuvor für eine Abonnement-Entfernung. |
| 263 | SubscriptionRequestType | Ja | 1 oder 2 | Char | 1 = Momentaufnahme plus Updates (abonnieren). 2 = Vorherige Momentaufnahme plus Update-Anfrage deaktivieren (abbestellen). |
| 264 | MarketDepth | Ja | 0 oder 1 | Integer | Ein vollständiges Orderbuch wird bereitgestellt. 0 = Tiefenabonnement 1 = Spot-Abonnement |
| 265 | MDUpdateType | Ja | Jeder gültige Wert | Integer | Nur das inkrementelle Refresh wird unterstützt. |
| 267 | NoMDEntryTypes | Ja | 2 | Integer | Immer auf 2 gesetzt (sowohl Geld- als auch Briefkurs werden gesendet). |
| 269 | MDEntryType | Ja | 0 oder 1 | Char | Diese sich wiederholende Gruppe enthält eine Liste aller Arten von Marktdateneinträgen, die der Anforderer erhalten möchte. 0 = Bid 1 = Offer |
| 146 | NoRelatedSym | Ja | Jeder gültige Wert | Integer | Die Anzahl der angeforderten Symbole. |
| 55 | Symbol | Ja | Jeder gültige Wert | Long | Instrumentenkennungen werden von Spotware bereitgestellt. |
Standard Trailer | Ja |
Siehe Beispiele für Marktdatenanfrage-Nachrichten unten.
Für Spots
Anfrage:
8=FIX.4.4|9=131|35=V|49=live.theBroker.12345|56=CSERVER|34=3|52=20170117-10:26:54|50=QUOTE|262=876316403|263=1|264=1|265=1|146=1|55=1|267=2|269=0|269=1|10=094|
Antwort:
8=FIX.4.4|9=134|35=W|34=2|49=CSERVER|50=QUOTE|52=20170117-10:26:54.630|56=live.theBroker.12345|57=any_string|55=1|268=2|269=0|270=1.06625|269=1|270=1.0663|10=118|
Für Tiefen
Anfrage:
8=FIX.4.4|9=131|35=V|49=live.theBroker.12345|56=CSERVER|34=2|52=20170117-11:13:44|50=QUOTE|262=876316411|263=1|264=0|265=1|146=1|55=1|267=2|269=0|269=1|10=087|
Antworten:
8=FIX.4.4|9=310|35=W|34=2|49=CSERVER|50=QUOTE|52=20180925-12:05:28.284|56=live.theBroker.12345|57=Quote|55=1|268=6|269=1|270=1.11132|271=3000000|278=16|269=1|270=1.11134|271=5000000|278=17|269=1|270=1.11133|271=3000000|278=15|269=0|270=1.1112|271=2000000|278=12|269=0|270=1.11121|271=1000000|278=13|269=0|270=1.11122|271=3000000|278=14|10=247|
8=FIX.4.4|9=693|35=X|34=2|49=CSERVER|50=QUOTE|52=20170117-11:13:44.461|56=live.theBroker.12345|57=any_string|268=12|279=0|269=1|278=7475|55=1|270=1.0691|271=2000000|279=0|269=1|278=7476|55=1|270=1.06911|271=3000000|279=0|269=1|278=7484|55=1|270=1.06931|271=34579000|279=0|269=1|278=7485|55=1|270=1.06908|271=1000000|279=0|269=1|278=7483|55=1|270=1.06906|271=500000|279=0|269=1|278=7482|55=1|270=1.06907|271=500000|279=0|269=1|278=7488|55=1|270=1.06909|271=3000000|279=0|269=0|278=7468|55=1|270=1.06898|271=500000|279=0|269=0|278=7467|55=1|270=1.06874|271=32371000|279=0|269=0|278=7457|55=1|270=1.06899|271=1000000|279=0|269=0|278=7478|55=1|270=1.06896|271=7000000|279=0|269=0|278=7477|55=1|270=1.06897|271=1500000|10=111|
8=FIX.4.4|9=376|35=X|34=3|49=CSERVER|50=QUOTE|52=20170117-11:13:44.555|56=live.theBroker.12345|57=any_string|268=8|279=0|269=0|278=7491|55=1|270=1.06897|271=1000000|279=0|269=0|278=7490|55=1|270=1.06898|271=1000000|279=0|269=0|278=7489|55=1|270=1.06874|271=32373000|279=0|269=1|278=7496|55=1|270=1.06931|271=34580000|279=2|278=7477|55=1|279=2|278=7468|55=1|279=2|278=7467|55=1|279=2|278=7484|55=1|10=192|
Market Data Snapshot/Full Refresh (MsgType(35)=W)¶
| Tag | Feldname | Erforderlich | Wert | FIX-Format | Kommentare |
|---|---|---|---|---|---|
Standard Header | Ja | ||||
| 262 | MDReqID | Ja | Jeder gültige Wert | String | Die ID der zuvor gesendeten Marktdatenanfrage. |
| 55 | Symbol | Ja | Jeder gültige Wert | Long | Instrumentenkennungen werden von Spotware bereitgestellt. |
| 268 | NoMDEntries | Ja | Jeder gültige Wert | Integer | Die Anzahl der folgenden Einträge. |
| 269 | MDEntryType | Nein | 0 oder 1 | Char | Die gültigen Werte sind: 0 = Geld 1 = Brief Nur erforderlich, wenn NoMDEntries (Tag=268) > 0. |
| 299 | QuoteEntryID | Nein | Jeder gültige Wert | String | Eine eindeutige Identifikation des Kurses als Teil des QuoteSet. |
| 270 | MDEntryPx | Nein | 1.2345 | Kurs | Ein Kurs des Marktdateneintrags. Nur erforderlich, wenn NoMDEntries (Tag=268) > 0. |
| 271 | MDEntrySize | Nein | 500000 | Volumen | Volumen des Marktdateneintrags. Nur erforderlich, wenn NoMDEntries (Tag=268) > 0. |
| 278 | MDEntryID | Nein | Jeder gültige Wert | String | Eine eindeutige Marktdateneintrag-Kennung. |
Standard Trailer | Ja |
Market Data Incremental Refresh (MsgType(35)=X)¶
| Tag | Feldname | Erforderlich | Wert | FIX-Format | Kommentare |
|---|---|---|---|---|---|
Standard Header | Ja | ||||
| 262 | MDReqID | Ja | Jeder gültige Wert | String | Die ID der zuvor gesendeten Marktdatenanfrage. |
| 268 | NoMDEntries | Ja | Jeder gültige Wert | Integer | Die Anzahl der folgenden Einträge. Diese sich wiederholende Gruppe enthält eine Liste aller Arten von Marktdateneinträgen, die der Anforderer erhalten möchte. |
| 279 | MDUpdateAction | Ja | 0 oder 2 | Char | Ein Typ der Marktdaten-Update-Aktion. Die gültigen Werte sind: 0 = Neu 2 = Löschen |
| 269 | MDEntryType | Nein | 0 oder 1 | Char | Die gültigen Werte sind: 0 = Geld 1 = Brief |
| 278 | MDEntryID | Ja | Jeder gültige Wert | String | Eine ID des Marktdateneintrags. |
| 55 | Symbol | Ja | Jeder gültige Wert | Long | Instrumentenkennungen werden von Spotware bereitgestellt. |
| 270 | MDEntryPx | Nein | 1.2345 | Kurs | Nur erforderlich, wenn MDUpdateAction (Tag=279) = 0. |
| 271 | MDEntrySize | Nein | 10000 | Double | Nur erforderlich, wenn MDUpdateAction (Tag=279) = 0. |
Standard Trailer | Ja |
New Order Single (MsgType(35)=D)¶
Eine New Order Single-Nachricht hat das folgende Format.
| Tag | Feldname | Erforderlich | Wert | FIX-Format | Kommentare |
|---|---|---|---|---|---|
Standard Header | Ja | ||||
| 11 | ClOrdID | Ja | Jeder gültige Wert | String | Eine eindeutige Kennung der Order, die vom Kunden zugewiesen wurde. |
| 55 | Symbol | Ja | Jeder gültige Wert | Long | Instrumentenkennungen werden von Spotware bereitgestellt. |
| 54 | Side | Ja | 1 oder 2 | Integer | 1 = Buy 2 = Sell |
| 60 | TransactTime | Ja | Jeder gültige Wert | Zeitstempel | Anfragezeitpunkt, der vom Kunden generiert wurde. |
| 38 | OrderQty | Ja | Jeder gültige Wert | Menge | Die Anzahl der bestellten Aktien. Dies repräsentiert die Anzahl der Aktien für Aktien oder basierend auf der üblichen Konvention die Anzahl der Kontrakte für Optionen, Futures, Wandelanleihen usw. Eine maximale Präzision ist 0,01. Vor FIX 4.2 war der Typ dieses Feldes "Integer". |
| 40 | OrdType | Ja | 1, 2 oder 3 | Char | 1 = Market, die Order wird nach dem Immediate or Cancel (IOC) Schema verarbeitet (TimeInForce, Tag=59). 2 = Limit, die Order wird nach dem Good Till Cancel (GTC) Schema verarbeitet (TimeInForce, Tag=59). 3 = Stop, die Order wird nach dem Good Till Cancel (GTC) Schema verarbeitet (TimeInForce, Tag=59). |
| 44 | Price | Nein | Jeder gültige Wert | Kurs | Der schlechteste Kundenpreis, den der Kunde akzeptieren wird. Nur erforderlich, wenn OrdType (Tag=40) = 2, in diesem Fall wird die Order nicht ausgeführt, es sei denn, dieser Preis kann erreicht werden. |
| 99 | StopPx | Nein | Jeder gültige Wert | Kurs | Ein Kurs, der die Stop-Order auslöst. Nur erforderlich, wenn OrdType (Tag=40) = 3, in diesem Fall wird die Order nicht ausgeführt, es sei denn, dieser Preis kann erreicht werden. |
| 59 | TimeInForce | Nein | 1, 3 or 6 | String | Veraltet, dieser Wert wird ignoriert. TimeInForce wird automatisch erkannt, abhängig von OrdType (Tag=40) und ExpireTime (Tag=126): 1 = Good Till Cancel (GTC), wird nur für Limit- und Stop-Orders (OrdType, Tag=40) verwendet, nur wenn ExpireTime (Tag=126) nicht definiert ist. 3 = Immediate or Cancel (IOC), wird nur für Market-Orders verwendet (OrdType, Tag=40). 6 = Good Till Date (GTD), wird nur für Limit- und Stop-Orders (OrdType, Tag=40) verwendet, nur wenn ExpireTime (Tag=126) definiert ist. |
| 126 | ExpireTime | Nein | 20140215-07:24:55 | Zeitstempel | Ablaufzeit im Format "YYYYMMDD-HH:MM:SS". Wenn zugewiesen, wird die Order nach dem GTD-Schema verarbeitet (TimeInForce: GTD). |
| 721 | PosMaintRptID | Nein | Jeder gültige Wert | String | Eine Positions-ID, wo diese Order platziert werden soll. Wenn nicht festgelegt, wird eine neue Position erstellt und deren ID in der Execution Report-Nachricht zurückgegeben. Dies kann nur für Hedged-Konten angegeben werden. |
| 494 | Designation | Nein | Jeder gültige Wert | String | Eine benutzerdefinierte Order-Bezeichnung. |
Standard Trailer | Ja |
Siehe unten Beispiele für New Order Single-Nachrichten.
Market-Order für neue Position
Anfrage:
8=FIX.4.4|9=143|35=D|49=live.theBroker.12345|56=CSERVER|34=77|52=20170117-10:02:14|50=any_string|57=TRADE|11=876316397|55=1|54=1|60=20170117-10:02:14|40=1|38=10000|10=010|
Antworten:
8=FIX.4.4|9=197|35=8|34=77|49=CSERVER|50=TRADE|52=20170117-10:02:14.720|56=live.theBroker.12345|57=any_string|11=876316397|14=0|37=101|38=10000|39=0|40=1|54=1|55=1|59=3|60=20170117-10:02:14.591|150=0|151=10000|721=101|10=149|
8=FIX.4.4|9=206|35=8|34=78|49=CSERVER|50=TRADE|52=20170117-10:02:15.045|56=live.theBroker.12345|57=any_string|6=1.0674|11=876316397|14=10000|32=10000|37=101|38=10000|39=2|40=1|54=1|55=1|59=3|60=20170117-10:02:14.963|150=F|151=0|721=101|10=077|
Market-Order für bestehende Position
Anfrage:
8=FIX.4.4|9=151|35=D|49=live.theBroker.12345|56=CSERVER|34=80|52=20170117-10:02:55|50=any_string|57=TRADE|11=876316398|55=1|54=1|60=20170117-10:02:55|40=1|38=10000|721=101|10=120|
Antworten:
8=FIX.4.4|9=197|35=8|34=80|49=CSERVER|50=TRADE|52=20170117-10:02:56.003|56=live.theBroker.12345|57=any_string|11=876316398|14=0|37=102|38=10000|39=0|40=1|54=1|55=1|59=3|60=20170117-10:02:55.984|150=0|151=10000|721=101|10=156|
8=FIX.4.4|9=207|35=8|34=81|49=CSERVER|50=TRADE|52=20170117-10:02:56.239|56=live.theBroker.12345|57=any_string|6=1.06735|11=876316398|14=10000|32=10000|37=102|38=10000|39=2|40=1|54=1|55=1|59=3|60=20170117-10:02:56.210|150=F|151=0|721=101|10=127
Limit-Order für bestehende Position
Anfrage:
8=FIX.4.4|9=162|35=D|49=live.theBroker.12345|56=CSERVER|34=89|52=20170117-10:06:22|50=any_string|57=TRADE|11=876316400|55=1|54=2|60=20170117-10:06:22|40=2|44=1.07162|38=50000|721=101|10=122|
Antwort:
8=FIX.4.4|9=208|35=8|34=90|49=CSERVER|50=TRADE|52=20170117-10:06:22.466|56=live.theBroker.12345|57=any_string|11=876316400|14=0|37=104|38=50000|39=0|40=2|44=1.07162|54=2|55=1|59=1|60=20170117-10:06:22.436|150=0|151=50000|721=101|10=149|
Stop-Order für neue Position
Anfrage:
8=FIX.4.4|9=153|35=D|49=live.theBroker.12345|56=CSERVER|34=9|52=20170117-12:10:48|57=TRADE|50=any_string|11=876316418|55=1|54=1|60=20170117-12:10:48|40=3|38=50000|99=1.07148|10=249|
Antwort:
8=FIX.4.4|9=207|35=8|34=8|49=CSERVER|50=TRADE|52=20170117-12:10:48.400|56=live.theBroker.12345|57=any_string|11=876316418|14=0|37=205|38=50000|39=0|40=3|54=1|55=1|59=1|60=20170117-12:10:48.362|99=1.07148|150=0|151=50000|721=202|10=122|
Order Status Request (MsgType(35)=H)¶
Eine Order Status Request-Nachricht wird von einer Institution verwendet, um eine Order-Status-Nachricht vom Händler zurückzuerhalten. Für eine korrekte Interaktion ist es sehr wichtig, eindeutige Kunden-Order-Kennungen (ClOrdID) für alle Orders zu haben.
| Tag | Feldname | Erforderlich | Wert | FIX-Format | Kommentare |
|---|---|---|---|---|---|
Standard Header | Ja | ||||
| 11 | ClOrdID | Ja | Jeder gültige Wert | String | Eine eindeutige Kennung der Order, die vom Kunden zugewiesen wurde. |
| 54 | Side | Nein | 1 oder 2 | Integer | 1 = Buy 2 = Sell |
Standard Trailer | Ja |
Siehe unten Beispiele für Order Status Request-Nachrichten.
Anfrage:
8=FIX.4.4|9=98|35=H|49=live.theBroker.12345|56=CSERVER|34=95|52=20170117-10:08:31|50=any_string|57=TRADE|11=876316400|10=191|
Antwort:
8=FIX.4.4|9=208|35=8|34=95|49=CSERVER|50=TRADE|52=20170117-10:08:31.819|56=live.theBroker.12345|57=any_string|11=876316400|14=0|37=104|38=50000|39=0|40=2|44=1.07162|54=2|55=1|59=1|60=20170117-10:06:22.436|150=0|151=50000|721=101|10=158|
Order Mass Status Request (MsgType(35)=AF)¶
Eine Order Mass Status Request-Nachricht fordert den Status für Orders an, die den in der Anfrage angegebenen Kriterien entsprechen. Die Antwort wird als eine Reihe von Execution Report-Nachrichten (eine für jede Order) zurückgegeben, oder als Business Message Reject-Nachricht, wenn keine Orders gefunden werden.
| Tag | Feldname | Erforderlich | Wert | FIX-Format | Kommentare |
|---|---|---|---|---|---|
Standard Header | Ja | ||||
| 584 | MassStatusReqID | Ja | Jeder gültige Wert | String | Eine eindeutige ID des Mass Status Request, die vom Kunden zugewiesen wurde. |
| 585 | MassStatusReqType | Ja | Jeder gültige Wert | Integer | 7 = Status für alle Orders. Derzeit wird nur der Wert 7 unterstützt. |
| 225 | IssueDate | Nein | Jeder gültige Wert | String | Wenn festgelegt, enthält die Antwort nur Orders, die vor diesem Datum erstellt wurden. |
Standard Trailer | Ja |
Siehe unten Beispiele für Order Mass Status Request-Nachrichten.
Anfrage:
8=FIX.4.4|9=117|35=AF|34=3|49=live.theBroker.12345|52=20170404-07:20:55.325|56=CSERVER|57=TRADE|225=20170404-07:20:44.582|584=mZzEY|585=7|10=065|
Antwort:
8=FIX.4.4|9=199|35=8|34=13|49=CSERVER|50=TRADE|52=20170404-07:20:55.333|56=live.theBroker.12345|14=0|37=635|38=100000|39=0|40=2|44=1.35265|54=2|55=1|59=1|60=20170404-07:20:44.582|150=I|151=100000|584=mZzEY|721=617|911=1|10=152|
Execution Report (MsgType(35)=8)¶
Eine Execution Report-Nachricht für eine akzeptierte Order hat das folgende Format.
| Tag | Feldname | Erforderlich | Wert | FIX-Format | Kommentare |
|---|---|---|---|---|---|
Standard Header | Ja | ||||
| 37 | OrderID | Ja | Jeder gültige Wert | String | Eine cTrader-Order-ID. |
| 11 | ClOrdID | Nein | Jeder gültige Wert | String | Eine eindeutige Kennung der Order, die vom Kunden zugewiesen wurde. |
| 911 | TotNumReports | Nein | Jeder gültige Wert | Integer | Die Gesamtzahl der Berichte, die als Antwort auf die Order Mass Status Request-Nachricht zurückgegeben wurden. |
| 150 | ExecType | Ja | Jeder gültige Wert | Char | 0 = New 4 = Canceled 5 = Replace 8 = Rejected C = Expired F = Trade I = Order Status |
| 39 | OrdStatus | Ja | Jeder gültige Wert | Char | 0 = Neu 1 = Teilweise ausgeführt 2 = Vollständig ausgeführt 8 = Abgelehnt 4 = Storniert (wenn die Order teilweise ausgeführt ist, wird Canceled zurückgegeben, was bedeutet (tag=151), LeavesQty ist storniert und wird nicht nachträglich ausgeführt). C = Abgelaufen |
| 55 | Symbol | Nein | Jeder gültige Wert | Long | Instrumentenkennungen werden von Spotware bereitgestellt. |
| 54 | Side | Nein | 1 oder 2 | Integer | 1 = Kaufen 2 = Verkaufen |
| 60 | TransactTime | Nein | Jeder gültige Wert | Zeitstempel | Ausführungszeit einer Transaktion, die durch die Execution Report-Nachricht dargestellt wird (in UTC). |
| 6 | AvgPx | Nein | Jeder gültige Wert | Integer | Ein Kurs, zu dem das Geschäft ausgeführt wurde. Für eine IOC- oder GTD-Order ist dies der volumengewichtete Durchschnittskurs (VWAP) der ausgeführten Order. |
| 38 | OrderQty | Nein | Jeder gültige Wert | Menge | Dies repräsentiert die Anzahl der Aktien für Aktien oder basierend auf der üblichen Konvention die Anzahl der Kontrakte für Optionen, Futures, Wandelanleihen usw. Vor FIX 4.2 war der Typ dieses Feldes "Integer". |
| 151 | LeavesQty | Nein | Jeder gültige Wert | Menge | Die Anzahl der noch auszuführenden Orders. Mögliche Werte liegen zwischen 0 (vollständig ausgeführt) und OrderQty (teilweise ausgeführt). |
| 14 | CumQty | Nein | Jeder gültige Wert | Menge | Die Gesamtzahl der Orders, die ausgeführt wurden. |
| 32 | LastQty | Nein | Jeder gültige Wert | Menge | Die gekaufte/verkaufte Menge von Orders, die bei dieser (letzten) Ausführung ausgeführt wurden. |
| 40 | OrdType | Nein | 1 oder 2 | Char | 1 = Market 2 = Limit |
| 44 | Price | Nein | Jeder gültige Wert | Kurs | Wenn in einer New Order Single-Nachricht angegeben, wird es in dieser Execution Report-Nachricht zurückgegeben. |
| 99 | StopPx | Nein | Jeder gültige Wert | Kurs | Wenn in einer New Order Single-Nachricht angegeben, wird es in dieser Execution Report-Nachricht zurückgegeben. |
| 59 | TimeInForce | Nein | 1, 3 oder 6 | String | 1 = Good Till Cancel (GTC) 3 = Immediate or Cancel (IOC) 6 = Good Till Date (GTD) |
| 126 | ExpireTime | Nein | 20140215-07:24:55 | Zeitstempel | Wenn in einer New Order Single-Nachricht angegeben, wird es in dieser Execution Report-Nachricht zurückgegeben. |
| 58 | Text | Nein | Jeder gültige Wert | String | Wenn möglich, wird eine Nachricht den Execution Report erklären. |
| 103 | OrdRejReason | Nein | 0 | Integer | 0 = OrdRejReason.BROKER_EXCHANGE_OPTION |
| 721 | PosMaintRptID | Nein | Jeder gültige Wert | String | Eine Positions-ID. |
| 494 | Designation | Nein | Jeder gültige Wert | String | Eine benutzerdefinierte Order-Bezeichnung des Kunden. |
| 584 | MassStatusReqID | Nein | Jeder gültige Wert | String | Eine eindeutige ID der Mass Status-Anfrage, die vom Kunden zugewiesen wurde. |
| 1000 | AbsoluteTP | Nein | Jeder gültige Wert | Kurs | Ein absoluter Kurs, bei dem der Take-Profit ausgelöst wird. |
| 1001 | RelativeTP | Nein | Jeder gültige Wert | Kurs | Ein Abstand in Pips vom Einstiegskurs, bei dem der Take-Profit ausgelöst wird. |
| 1002 | AbsoluteSL | Nein | Jeder gültige Wert | Kurs | Ein absoluter Kurs, bei dem der Stop-Loss ausgelöst wird. |
| 1003 | RelativeSL | Nein | Jeder gültige Wert | Kurs | Ein Abstand in Pips vom Einstiegskurs, bei dem der Stop-Loss ausgelöst wird. |
| 1004 | TrailingSL | Nein | N oder Y | Boolean | Gibt an, ob der Stop-Loss trailing ist. N = Stop-Loss ist nicht trailing. Y = Stop-Loss ist trailing. |
| 1005 | TriggerMethodSL | Nein | Jeder gültige Wert | Integer | Eine angegebene Auslösemethode des Stop-Loss. 1 = Stop-Loss wird durch die Handelsseite ausgelöst. 2 = Stop-Loss wird durch die entgegengesetzte Seite ausgelöst (Ask für Kaufpositionen und Bid für Verkaufspositionen). 3 = Stop-Loss wird nach zwei aufeinanderfolgenden Ticks gemäß der Handelsseite ausgelöst. 4 = Stop-Loss wird nach zwei aufeinanderfolgenden Ticks gemäß der entgegengesetzten Seite ausgelöst (der zweite Ask-Tick für Kaufpositionen und der zweite Bid-Tick für Verkaufspositionen). |
| 1006 | GuaranteedSL | Nein | N oder Y | Boolean | Gibt an, ob der Stop-Loss garantiert ist. N = Stop-Loss ist nicht garantiert. Y = Stop-Loss ist garantiert. |
Standard Trailer | Ja |
Siehe ein Beispiel für eine neue Einzelorder am Ende des Leitfadens.
Business Message Reject (MsgType(35)=j)¶
Dieser Nachrichtentyp wird gesendet, wenn das System eine Abonnementanfrage nicht verarbeiten kann oder eine Order nicht ausgeführt werden kann.
| Tag | Feldname | Erforderlich | Wert | FIX-Format | Kommentare |
|---|---|---|---|---|---|
Standard Header | Ja | ||||
| 45 | RefSeqNum | Nein | Jeder gültige Wert | Integer | MsgSeqNum (Tag=34) der abgelehnten Nachricht. |
| 372 | RefMsgType | Nein | Jeder gültige Wert | String | MsgType (Tag=35) der referenzierten FIX-Nachricht. |
| 379 | BusinessRejectRefID | Nein | Jeder gültige Wert | String | Wert des Business-Level-ID-Feldes in der referenzierten Nachricht. Erforderlich, es sei denn, das entsprechende ID-Feld wurde nicht angegeben. |
| 380 | BusinessRejectReason | Ja | 0 | Integer | Ein Code zur Identifizierung des Grundes für eine Business Message Reject-Nachricht. 0 = Sonstiges |
| 58 | Text | Nein | Jeder gültige Wert | String | Wenn möglich, eine Nachricht zur Erklärung des Ablehnungsgrundes. |
Standard Trailer | Ja |
Siehe unten ein Beispiel für eine Business Message Reject-Nachricht.
8=FIX.4.4|9=149|35=j|34=2|49=CSERVER|52=20170105-06:36:00.912|56=live.theBroker.12345|57=any_string|58=Message to explain reason for rejection|379=u4Jr7Rr5t2VS7HSP|380=0|10=123|
Request for Positions (MsgType(35)=AN)¶
| Tag | Feldname | Erforderlich | Wert | FIX-Format | Kommentare |
|---|---|---|---|---|---|
Standard Header | Ja | ||||
| 710 | PosReqID | Ja | Jeder gültige Wert | String | Eine eindeutige Anfrage-ID (vom Client festgelegt). |
| 721 | PosMaintRptID | Nein | Jeder gültige Wert | String | Eine anzufordernde Positions-ID. Wenn nicht festgelegt, werden alle offenen Positionen zurückgegeben. |
Standard Trailer | Ja |
Siehe unten Beispiele für Request for Positions-Nachrichten.
Anfrage:
8=FIX.4.4|9=100|35=AN|49=live.theBroker.12345|56=CSERVER|34=99|52=20170117-10:09:54|50=any_string|57=TRADE|710=876316401|10=103|
Antwort:
8=FIX.4.4|9=163|35=AP|34=98|49=CSERVER|50=TRADE|52=20170117-10:09:54.076|56=live.theBroker.12345|57=any_string|55=1|710=876316401|721=101|727=1|728=0|730=1.06671|702=1|704=0|705=30000|10=182|
Position Report (MsgType(35)=AP)¶
| Tag | Feldname | Erforderlich | Wert | FIX-Format | Kommentare |
|---|---|---|---|---|---|
Standard Header | Ja | ||||
| 710 | PosReqID | Ja | Jeder gültige Wert | String | Eine ID der Request for Positions-Nachricht. |
| 721 | PosMaintRptID | Nein | Jeder gültige Wert | String | Eine Positions-ID, die nicht festgelegt ist, wenn PosReqResult (Tag=728) nicht VALID_REQUEST ist. |
| 727 | TotalNumPosReports | Ja | Jeder gültige Wert | String | Die Gesamtzahl der Positionsberichte in einer Sequenz, wenn PosReqResult (Tag=728) VALID_REQUEST ist, andernfalls = 0. |
| 728 | PosReqResult | Ja | 0 oder 2 | String | 0 = Gültige Anfrage 2 = Es wurden keine offenen Positionen gefunden, die den Kriterien entsprechen. |
| 55 | Symbol | Nein | Jeder gültige Wert | String | Ein Symbol, für das der aktuelle Positionsbericht erstellt wird. Es wird nicht festgelegt, wenn PosReqResult (Tag=728) nicht VALID_REQUEST ist. |
| 702 | NoPositions | Nein | 1 | String | 1 wenn PosReqResult (Tag=728) VALID_REQUEST ist, andernfalls nicht festgelegt. |
| 704 | LongQty | Nein | Jeder gültige Wert | String | Offenes Volumen der Position im Falle der Kauf-Handelsseite, gleich 0 im Falle der Verkauf-Handelsseite. Nicht festgelegt, wenn PosReqResult (Tag=728) nicht VALID_REQUEST ist. |
| 705 | ShortQty | Nein | Jeder gültige Wert | String | Offenes Volumen der Position im Falle der Verkauf-Handelsseite, gleich 0 im Falle der Kauf-Handelsseite. Nicht festgelegt, wenn PosReqResult (Tag=728) nicht VALID_REQUEST ist. |
| 730 | SettlPrice | Nein | Jeder gültige Wert | String | Ein Durchschnittspreis des eröffneten Volumens im aktuellen Positionsbericht. |
| 1000 | AbsoluteTP | Nein | Jeder gültige Wert | Kurs | Ein absoluter Kurs, bei dem der Take-Profit ausgelöst wird. |
| 1002 | AbsoluteSL | Nein | Jeder gültige Wert | Kurs | Ein absoluter Kurs, bei dem der Stop-Loss ausgelöst wird. |
| 1004 | TrailingSL | Nein | Jeder gültige Wert | Boolean | Gibt an, ob der Stop-Loss trailing ist. N = Stop-Loss ist nicht trailing. Y = Stop-Loss ist trailing. |
| 1005 | TriggerMethodSL | Nein | Jeder gültige Wert | Integer | Eine angegebene Auslösemethode des Stop-Loss. 1 = Stop-Loss wird durch die Handelsseite ausgelöst. 2 = Stop-Loss wird durch die entgegengesetzte Seite ausgelöst (Ask für Kaufpositionen und Bid für Verkaufspositionen). 3 = Stop-Loss wird nach zwei aufeinanderfolgenden Ticks gemäß der Handelsseite ausgelöst. 4 = Stop-Loss wird nach zwei aufeinanderfolgenden Ticks gemäß der entgegengesetzten Seite ausgelöst (zweiter Ask-Tick für Kaufpositionen und zweiter Bid-Tick für Verkaufspositionen). |
| 1006 | GuaranteedSL | Nein | Jeder gültige Wert | Boolean | Gibt an, ob der Stop-Loss garantiert ist. N = Stop-Loss ist nicht garantiert. Y = Stop-Loss ist garantiert. |
Standard Trailer | Ja |
Order Cancel Request (MsgType(35)=F)¶
| Tag | Feldname | Erforderlich | Wert | FIX-Format | Kommentare |
|---|---|---|---|---|---|
Standard Header | Ja | ||||
| 41 | OrigClOrdID | Ja | Jeder gültige Wert | String | Eine eindeutige Kennung der zu stornierenden Order, die vom Client zugewiesen wurde. |
| 37 | OrderID | Nein | Jeder gültige Wert | String | Eine eindeutige ID der Order, die vom cServer zurückgegeben wurde. |
| 11 | ClOrdID | Ja | Jeder gültige Wert | String | Eine eindeutige ID der Stornierungsanfrage, die vom Client zugewiesen wurde. |
Standard Trailer | Ja |
Siehe unten Beispiele für Order Cancel Request-Nachrichten.
Anfrage:
8=FIX.4.4|9=115|35=F|34=2|49=live.theBroker.12345|50=Trade|52=20170721-13:41:21.694|56=CSERVER|57=TRADE|11=jR8dBPcZEQa9|41=n9Tm8x1AavO5|10=182|
Antwort (erfolgreich):
8=FIX.4.4|9=221|35=8|34=3|49=CSERVER|50=TRADE|52=20170721-13:41:21.784|56=live.theBroker.12345|57=Trade|11=jR8dBPcZEQa9|14=0|37=641|38=100000|39=4|40=2|41=n9Tm8x1AavO5|44=1.499|54=1|55=1|59=1|60=20170721-13:41:21.760|150=4|151=100000|721=624|10=180|
Antwort (fehlgeschlagen):
8=FIX.4.4|9=174|35=j|34=3|49=CSERVER|50=TRADE|52=20170721-13:41:21.856|56=live.theBroker.12345|57=Trade|58=ORDER_NOT_FOUND:Order with clientOrderId=n9Tm8x1AavO5 not found.|379=jR8dBPcZEQa9|380=0|10=075|
Order Cancel Reject (MsgType(35)=9)¶
| Tag | Feldname | Erforderlich | Wert | FIX-Format | Kommentare |
|---|---|---|---|---|---|
Standard Header | Ja | ||||
| 37 | OrderID | Ja | Jeder gültige Wert | String | Eine eindeutige Kennung der Order, die das System nicht stornieren konnte. |
| 11 | ClOrdID | Ja | Jeder gültige Wert | String | Eine eindeutige Kennung der Order Cancel Request. |
| 41 | OrigClOrdID | Nein | Jeder gültige Wert | String | Eine eindeutige Kennung der Order, deren Stornierung versucht wurde, zugewiesen vom Client. |
| 39 | OrdStatus | Ja | Jeder gültige Wert | Char | 0 = Neu 1 = Teilweise ausgeführt 2 = Ausgeführt 8 = Abgelehnt 4 = Storniert (wenn die Order teilweise ausgeführt wurde, wird Canceled zurückgegeben, was bedeutet (Tag=151), LeavesQty ist storniert und wird nicht nachträglich ausgeführt). C = Abgelaufen |
| 434 | CxlRejResponseTo | Ja | 1 oder 2 | Char | 1 = Stornierung der Order ablehnen. 2 = Änderung der Order von einem anderen Terminal ablehnen. |
| 58 | Text | Nein | Jeder gültige Wert | String | Eine Order wird gerade ausgeführt. |
Standard Trailer | Ja |
Siehe unten ein Beispiel für eine Order Cancel Reject-Nachricht.
Antwort:
8=FIX.4.4|9=156|35=9|34=3|49=CSERVER|50=TRADE|52=20181024-12:35:02.896|56=live.theBroker.12345|57=Trade|11=gBljx7YOg5jY|37=629|39=0|41=FdXLfS0tTyUL|58=Order is under execution|434=1|10=109|
Order Cancel/Replace Request (MsgType(35)=G)¶
| Tag | Feldname | Erforderlich | Wert | FIX-Format | Kommentare |
|---|---|---|---|---|---|
Standard Header | Ja | ||||
| 41 | OrigClOrdID | Ja | Any valid value | String | Eine eindeutige Kennung der zu ändernden Order, die vom Client zugewiesen wurde. |
| 37 | OrderID | Nein | Jeder gültige Wert | String | Eine eindeutige ID der ursprünglichen Order, die geändert werden soll, zugewiesen vom Server. Eine bevorzugte Methode zur Verwendung. |
| 11 | ClOrdID | Ja | Jeder gültige Wert | String | Eine eindeutige ID der Änderungsanfrage, die vom Client zugewiesen wurde. |
| 38 | OrderQty | Ja | Jeder gültige Wert | Menge | Eine bestehende oder neu angegebene Menge zum Ersetzen des alten Wertes. |
| 44 | Price | Nein | Jeder gültige Wert | Kurs | Ein bestehender oder neu angegebener Limitkurs zum Ersetzen des alten Wertes. Nur für Limit-Orders gültig. |
| 99 | StopPx | Nein | Jeder gültige Wert | Kurs | Ein bestehender oder neu angegebener Stoppkurs zum Ersetzen des alten Wertes. Nur für Stop-Orders gültig. |
| 126 | ExpireTime | Nein | 20140215-07:24:55 | Zeitstempel | Bestehende oder neu angegebene Ablaufzeit. Nur für ausstehende Orders gültig. |
Standard Trailer | Ja |
Siehe unten Beispiele für Order Cancel/Replace Request-Nachrichten.
Anfrage:
8=FIX.4.4|9=123|35=G|34=3|49=live.theBroker.12345|50=Trade|52=20170721-13:42:17.680|56=CSERVER|57=TRADE|11=Is03AvsknNYK|38=5000|41=n9Tm8x1AavO5|44=1.1|10=010|
Antwort (erfolgreich):
8=FIX.4.4|9=192|35=8|34=3|49=CSERVER|50=TRADE|52=20170721-13:42:18.784|56=live.theBroker.12345|57=Trade|11=Is03AvsknNYK|14=0|37=629|38=5000|39=0|40=2|44=1.1|54=1|55=1|59=1|60=20170721-13:42:18.760|150=5|151=5000|721=624|10=150|
Antwort (fehlgeschlagen):
8=FIX.4.4|9=171|35=j|34=3|49=CSERVER|50=TRADE|52=20170721-13:42:18.784|56=live.theBroker.12345|57=Trade|58=ORDER_NOT_FOUND:Order with orderId:4429421711699105367 isn't found|379=NXek3EzJvMme|380=0|10=245|
Market Data Request Reject (MsgType(35)=Y)¶
| Tag | Feldname | Erforderlich | Wert | FIX-Format | Kommentare |
|---|---|---|---|---|---|
Standard Header | Ja | ||||
| 262 | MDReqID | Ja | Jeder gültige Wert | String | Muss sich auf MDReqID (Tag=262) der Anfrage beziehen. |
| 281 | MDReqRejReason | Nein | Jeder gültige Wert | Integer | 0 = Unbekanntes Symbol 4 = Nicht unterstützter SubscriptionRequestType (Tag=263) 5 = Nicht unterstützte MarketDepth (Tag=264) |
Standard Trailer | Ja |
Siehe unten Beispiele für Market Data Request Reject-Nachrichten.
Anfrage:
8=FIX.4.4|9=148|35=V|34=2|49=live.theBroker.12345|50=Quote|52=20170920-09:52:13.032|56=CSERVER|57=QUOTE|262=CS8260:sXlXex|263=1|264=0|265=1|146=1|55=CS8260|267=2|269=0|269=1|10=129|
Ablehnung:
8=FIX.4.4|9=164|35=Y|34=2|49=CSERVER|50=QUOTE|52=20170920-09:52:13.036|56=live.theBroker.12345|57=Quote|58=INVALID_REQUEST: Expected numeric symbolId, but got CS8260|262=CS8260:sXlXex|281=0|10=236|
Anfrage:
8=FIX.4.4|9=136|35=V|34=6|49=live.theBroker.12345|50=Quote|52=20170920-09:52:13.199|56=CSERVER|57=QUOTE|262=EwOhiWvMdCpc|263=1|264=3|146=1|55=1|267=2|269=0|269=1|10=182|
Ablehnung:
8=FIX.4.4|9=157|35=Y|34=6|49=CSERVER|50=QUOTE|52=20170920-09:52:13.201|56=live.theBroker.12345|57=Quote|58=INVALID_REQUEST: MarketDepth should be either 0 or 1|262=EwOhiWvMdCpc|281=5|10=088|
Security List Request (MsgType(35)=x)¶
| Tag | Feldname | Erforderlich | Wert | FIX-Format | Kommentare |
|---|---|---|---|---|---|
Standard Header | Ja | ||||
| 320 | SecurityReqID | Ja | Jeder gültige Wert | String | Eine eindeutige ID der Security Definition Request. |
| 559 | SecurityListRequestType | Ja | 0 | Integer | Der Typ der Security List Request, die gestellt wird. Nur 0 = Symbol (Tag=55) wird unterstützt. |
| 55 | Symbol | Nein | Jeder gültige Wert | Integer | Eine ID zur Auflösung des Symbolnamens. |
Standard Trailer | Ja |
Siehe unten Beispiele für Security List Request-Nachrichten.
Anfrage:
8=FIX.4.4|9=107|35=x|34=3|49=live.theBroker.12345|50=Trade|52=20180427-12:24:27.106|56=CSERVER|57=TRADE|55=39|320=ILCea0JkdQEm|559=0|10=248|
Antwort:
8=FIX.4.4|9=158|35=y|34=3|49=CSERVER|50=TRADE|52=20180427-12:24:27.107|56=live.theBroker.12345|57=Trade|320=ILCea0JkdQEm|322=responce:ILCea0JkdQEm|560=0|146=1|55=39|1007=NZDCHF|1008=4|10=088|
Security List (MsgType(35)=y)¶
| Tag | Feldname | Erforderlich | Wert | FIX-Format | Kommentare |
|---|---|---|---|---|---|
Standard Header | Ja | ||||
| 320 | SecurityReqID | Ja | Jeder gültige Wert | String | Eine eindeutige ID der Security Definition Request. |
| 322 | SecurityResponseID | Ja | Jeder gültige Wert | String | Eine eindeutige ID der Security List-Antwort. |
| 560 | SecurityRequestResult | Ja | 0 | Integer | Ergebnisse, die auf die Security Request-Nachricht zurückgegeben werden. Die gültigen Werte sind: 0 = Gültige Anfrage. 1 = Ungültige oder nicht unterstützte Anfrage. 2 = Es wurden keine Instrumente gefunden, die den Auswahlkriterien entsprechen. 3 = Nicht autorisiert, Instrumentendaten abzurufen. 4 = Instrumentendaten vorübergehend nicht verfügbar. 5 = Anfrage für Instrumentendaten nicht unterstützt. |
| 146 | NoRelatedSym | Nein | Jeder gültige Wert | Integer | Gibt die Anzahl der sich wiederholenden Symbole (Instrumente) an. |
| 55 | Symbol | Nein | Jeder gültige Wert | Integer | Instrumentenkennungen werden von Spotware bereitgestellt. |
| 1007 | SymbolName | Nein | Jeder gültige Wert | String | Ein Symbolname. |
| 1008 | SymbolDigits | Nein | Jeder gültige Wert | Integer | Symbol-Stellen. Mögliche Werte von 0 bis 5. |
Standard Trailer | Ja |
Siehe unten ein Beispiel für eine Security List-Nachricht.
Antwort:
8=FIX.4.4|9=3977|35=y|34=2|49=CSERVER|50=TRADE|52=20180426-12:07:37.816|56=live.theBroker.12345|57=Trade|320=Sxo2Xlb1jzJC|322=responce:Sxo2Xlb1jzJC|560=0|146=143|55=1|1007=EURUSD|1008=5|55=2|1007=GBPUSD|1008=5|55=3|1007=EURJPY|1008=3|55=4|1007=USDJPY|1008=3|55=5|1007=AUDUSD|1008=5|55=6|1007=USDCHF|1008=5|55=7|1007=GBPJPY|1008=3|55=8|1007=USDCAD|1008=5|55=9|1007=EURGBP|1008=5|55=10|1007=EURCHF|1008=5|55=11|1007=AUDJPY|1008=2|55=12|1007=NZDUSD|1008=5|55=13|1007=CHFJPY|1008=2|55=14|1007=EURAUD|1008=4|55=15|1007=CADJPY|1008=2|55=16|1007=GBPAUD|1008=4|55=17|1007=EURCAD|1008=4|55=10001|1007=USDCFDSAX|1008=5|55=18|1007=AUDCAD|1008=4|55=10002|1007=CD3295|1008=5|55=19|1007=GBPCAD|1008=4|55=10003|1007=DU3295|1008=5|55=20|1007=AUDNZD|1008=4|55=10004|1007=CS5965|1008=2|55=21|1007=NZDJPY|1008=2|55=10005|1007=CS6014_3|1008=5|55=22|1007=USDNOK|1008=4|55=10006|1007=DU6014_3|1008=5|55=23|1007=AUDCHF|1008=4|55=10007|1007=CS6014_4|1008=5|55=24|1007=USDMXN|1008=4|55=10008|1007=DU6014_4|1008=5|55=25|1007=GBPNZD|1008=4|55=10009|1007=CS5953|1008=5|55=26|1007=EURNZD|1008=4|55=10010|1007=CS6407_01_EURUSD|1008=5|55=27|1007=CADCHF|1008=4|55=10011|1007=CS6407_01_GBPUSD|1008=5|55=28|1007=USDSGD|1008=5|55=10012|1007=CS6407_02_EURUSD|1008=5|55=29|1007=USDSEK|1008=4|55=10013|1007=CS6407_03_EURUSD|1008=5|55=30|1007=NZDCAD|1008=4|55=31|1007=EURSEK|1008=4|55=10015|1007=CS7847_01_EURUSD|1008=5|55=32|1007=GBPSGD|1008=4|55=10016|1007=CS7847_01_GBPUSD|1008=5|55=33|1007=EURNOK|1008=4|55=10017|1007=CS7847_02_EURUSD|1008=5|55=34|1007=EURHUF|1008=2|55=10018|1007=CS7847_03_EURUSD|1008=5|55=35|1007=USDPLN|1008=4|55=10019|1007=CS7847_04_GBPUSD|1008=5|55=36|1007=USDDKK|1008=4|55=10020|1007=CS9004S|1008=2|10=096|