Silnik FIX cTrader (Zasady Zaangażowania)¶
Wprowadzenie ¶
Zakres ¶
Ta specyfikacja ma służyć programistom jako przewodnik implementacji dla API silnika FIX cTrader.
Wersja FIX ¶
cTrader obsługuje wersję FIX 4.4. Aby uzyskać więcej informacji na temat tej wersji, zapoznaj się z tymi specyfikacjami.
Łączność ¶
Typ połączenia ¶
Połączenie z silnikiem FIX cTrader jest dostępne przez Internet, tunel VPN lub połączenie bezpośrednie z naszymi centrami danych w Wielkiej Brytanii. Skontaktuj się z nami, aby uzyskać więcej szczegółów.
Reset numeru sekwencji ¶
Wszystkie strony sesji FIX powinny mieć zresetowane numery sekwencji przy ustanawianiu sesji FIX. Zobacz komunikat Logon.
Komunikaty ¶
Zgodnie z definicją w protokole FIX, serwer FIX cTrader wykorzystuje dwa różne poziomy danych (systemowy i aplikacyjny). Należy zauważyć, że jest to minimalny zestaw komunikatów wymaganych do obsługi niezbędnych przepływów pracy. Może on ulec zmianie w miarę upływu czasu, wraz z ewolucją potrzeb biznesowych i standardów FIX.
Silnik FIX cTrader ¶
Komunikaty systemowe¶
- Heartbeat (Client ↔ cTrader)
- Test Request (Client ↔ cTrader)
- Logon (Client → cTrader)
- Logout (Client → cTrader)
- Resend Request (Client ↔ cTrader)
- Reject (Client ↔ cTrader)
- Sequence Reset (Client ↔ cTrader)
Komunikaty aplikacyjne¶
- 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)
Standardowy nagłówek ¶
Każdy komunikat administracyjny lub aplikacyjny jest poprzedzony standardowym nagłówkiem. Nagłówki identyfikują typ komunikatu, długość, miejsce docelowe, numer sekwencji, punkt pochodzenia i czas.
Wszystkie komunikaty wysyłane do cTrader powinny mieć standardowy nagłówek z następującymi polami:
| Tag | Nazwa pola | Wymagane | Wartość | Format FIX | Komentarze |
|---|---|---|---|---|---|
| 8 | BeginString | Tak | FIX.4.4 | String | Zawsze niezaszyfrowane, musi być pierwszym polem w komunikacie. |
| 9 | BodyLength | Tak | Dowolna prawidłowa wartość | Integer | Długość treści komunikatu. Zawsze niezaszyfrowane, musi być drugim polem w komunikacie. |
| 35 | MsgType | Tak | A | String | Typ komunikatu. Zawsze niezaszyfrowane, musi być trzecim polem w komunikacie. |
| 49 | SenderCompID | Tak | Dowolna prawidłowa wartość | String | ID strony handlującej w następującym formacie: <Environment>.<BrokerUID>.<Trader Login>, gdzie Environment to określenie serwera, np. demo lub live; BrokerUID jest dostarczany przez cTrader, a Trader Login to numeryczny identyfikator konta tradera. |
| 56 | TargetCompID | Tak | CSERVER | String | Cel komunikatu. The valid value is CSERVER. |
| 57 | TargetSubID | Tak | QUOTE lub TRADE | String | Dodatkowy kwalifikator sesji. Możliwe wartości to QUOTE i TRADE. |
| 50 | SenderSubID | Nie | Dowolna prawidłowa wartość | String | Przypisana wartość używana do identyfikacji konkretnego nadawcy komunikatu. Musi być ustawione na QUOTE, jeśli TargetSubID=QUOTE. |
| 34 | MsgSeqNum | Tak | 1 | Integer | Numer sekwencyjny komunikatu. |
| 52 | SendingTime | Tak | 20131129-15:40:08.155 | UTCTimestamp | Czas transmisji komunikatu zawsze wyrażony w UTC (Universal Time Coordinated, znany również jako GMT). |
Standardowy trailer ¶
Każdy komunikat, administracyjny lub aplikacyjny, jest zakończony standardowym trailerem. Trailer służy do oddzielania komunikatów i zawiera trzycyfrową reprezentację wartości CheckSum (tag=10).
| Tag | Nazwa pola | Wymagane | Wartość | Format FIX | Komentarze |
|---|---|---|---|---|---|
| 10 | CheckSum | Tak | 054 | String | Prosta suma kontrolna trzech bajtów. Zawsze ostatnie pole w komunikacie (na przykład służy), z końcowym <SOH> jako ogranicznikiem końca komunikatu. Jest zdefiniowana jako trzy znaki (zawsze niezaszyfrowane). |
Komunikaty sesji ¶
Heartbeat (MsgType(35)=0)¶
Komunikaty Heartbeat są wysyłane zarówno przez cTrader, jak i aplikację kliencką, aby potwierdzić aktywne połączenie.
Aplikacja kliencka dostawcy transmituje powtarzający się heartbeat w interwale, który jest zdefiniowany przez pole HeartBtInt (tag=108) w komunikacie Logon, lub jako odpowiedź na komunikat Test Request.
| Tag | Nazwa pola | Wymagane | Wartość | Format FIX | Komentarze |
|---|---|---|---|---|---|
Standard Header | Tak | ||||
| 112 | TestReqID | Nie | Dowolna prawidłowa wartość | String | Jeśli heartbeat jest wynikiem komunikatu Test Request, wymagane jest TestReqID. |
Standard Trailer | Tak |
Test Request (MsgType(35)=1)¶
Wymusza heartbeat od odbiorcy żądania. Odpowiedź jest wysyłana z systemu odbiorczego jako komunikat Heartbeat zawierający TestReqID.
| Tag | Nazwa pola | Wymagane | Wartość | Format FIX | Komentarze |
|---|---|---|---|---|---|
Standard Header | Tak | ||||
| 112 | TestReqID | Tak | Dowolna prawidłowa wartość | String | ID komunikatu heartbeat. TestReqID powinno być inkrementalne. |
Standard Trailer | Tak |
Logon (bidirectional) (MsgType(35)=A)¶
Komunikat Logon jest wysyłany z aplikacji po stronie klienta, aby rozpocząć sesję FIX cTrader, a odpowiedź jest wysyłana przez cTrader do aplikacji po stronie klienta. Po zakończeniu logowania, przepływy notowań i transakcji mogą być kontynuowane przez cały cykl życia sesji.
Jeśli cTrader otrzyma nieprawidłowy komunikat Logon (z nieprawidłowymi polami), cTrader wysyła w odpowiedzi komunikat Logout.
| Tag | Nazwa pola | Wymagane | Wartość | Format FIX | Komentarze |
|---|---|---|---|---|---|
Standard Header | Tak | ||||
| 98 | EncryptMethod | Tak | 0 | Integer | Definiuje schemat szyfrowania komunikatów. Obecnie obsługiwane jest tylko zabezpieczenie na poziomie transportu. Prawidłowa wartość to 0 = NONE_OTHER (szyfrowanie nie jest używane). |
| 108 | HeartBtInt | Tak | Dowolna prawidłowa wartość | Integer | Interwał heartbeat w sekundach. Wartość jest ustawiana w pliku config.properties (po stronie klienta) jako SERVER.POLLING.INTERVAL. Domyślna wartość interwału to 30 sekund. Jeśli HeartBtInt jest ustawione na 0, komunikat heartbeat nie jest wymagany. |
| 141 | ResetSeqNumFlag | Nie | Y | Boolean | Wszystkie strony sesji FIX powinny mieć zresetowane numery sekwencyjne. Prawidłowa wartość to Y (reset). |
| 553 | Username | Nie | Dowolna prawidłowa wartość | String | Numeryczny identyfikator użytkownika. Użytkownik jest powiązany z wartością SenderCompID (organizacja użytkownika, tag=49). |
| 554 | Password | Nie | Dowolna prawidłowa wartość | String | Hasło użytkownika. |
Standard Trailer | Tak |
Uwaga
Pole Username (tag=553) musi zawierać numeryczną wartość loginu tradera, podczas gdy SenderCompID (tag=49) musi zawierać środowisko, BrokerUID i login tradera oddzielone kropką (na przykład live.theBroker.12345).
Zobacz przykłady wiadomości Logon poniżej.
Żądanie:
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|
Odpowiedź (sukces):
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|
Odpowiedź (niepowodzenie):
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)¶
Wiadomość Logout jest wysyłana z aplikacji klienta w celu zażądania zakończenia sesji z cTrader oraz jako odpowiedź przez cTrader. Wylogowanie z sesji następuje w odpowiedzi na wysłanie przez uczestnika rynku wiadomości Logout do cTrader. Przed zakończeniem sesji cTrader anuluje wszystkie ceny, które są nadal aktywnie przesyłane do strony żądającej. Jeśli cTrader otrzyma nieprawidłową wiadomość Logon (z nieprawidłowymi polami), cTrader wysyła w odpowiedzi wiadomość Logout ze szczegółami błędu w polu Text (tag=58).
| Tag | Nazwa pola | Wymagane | Wartość | Format FIX | Komentarze |
|---|---|---|---|---|---|
Standard Header | Tak | ||||
| 58 | Text | Nie | Dowolna prawidłowa wartość | String | Szczegóły odrzucenia logowania. Używane tylko dla wiadomości cTrader-do-klienta jako odpowiedź na nieprawidłową wiadomość Logon. |
Standard Trailer | Tak |
Zobacz przykłady wiadomości Logout poniżej.
Żądanie:
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|
Odpowiedź:
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)¶
Wiadomość przychodząca/wychodząca używana do żądania ponownego wysłania wiadomości (lub wiadomości), zazwyczaj gdy wykryto lukę w numeracji sekwencyjnej.
| Tag | Nazwa pola | Wymagane | Wartość | Format FIX | Komentarze |
|---|---|---|---|---|---|
Standard Header | Tak | ||||
| 7 | BeginSeqNo | Tak | Dowolna prawidłowa wartość | Integer | Numer sekwencyjny wiadomości pierwszego rekordu w zakresie do ponownego wysłania. |
| 16 | EndSeqNo | Tak | Dowolna prawidłowa wartość | Integer | Numer sekwencyjny wiadomości ostatniego rekordu w zakresie do ponownego wysłania. |
Standard Trailer | Tak |
Reject (bidirectional) (MsgType(35)=3)¶
Wysyłane, gdy otrzymana wiadomość nie może być przetworzona z powodu naruszenia reguły na poziomie sesji. Odrzucone wiadomości muszą być rejestrowane, a przychodzący numer sekwencyjny musi zostać zwiększony.
| Tag | Nazwa pola | Wymagane | Wartość | Format FIX | Komentarze |
|---|---|---|---|---|---|
Standard Header | Tak | ||||
| 45 | RefSeqNum | Tak | Dowolna prawidłowa wartość | SeqNum | Numer sekwencyjny wiadomości referencyjnej. |
| 58 | Text | Nie | Dowolna prawidłowa wartość | String | Dowolny ciąg tekstowy. |
| 354 | EncodedTextLen | Nie | Dowolna prawidłowa wartość | Długość | Długość pola EncodedText (znaki nie-ASCII) w bajtach. |
| 355 | EncodedText | Nie | Dowolna prawidłowa wartość | Dane | Reprezentacja pola Text (tag=58), zakodowana przy użyciu formatu określonego w polu MessageEncoding (tag=347) (z nagłówka standardowego). Jeśli używana jest reprezentacja ASCII, powinna być również określona w polu Text (tag=58). |
| 371 | RefTagID | Nie | Dowolna prawidłowa wartość | Integer | Numer tagu pola FIX, które zainicjowało odrzucenie wiadomości. |
| 372 | RefMsgType | Nie | Dowolna prawidłowa wartość | String | MsgType (tag=35) referencyjnej wiadomości FIX. |
| 373 | SessionRejectReason | Nie | Dowolna prawidłowa wartość | Integer | Zakodowane przyczyny odrzucenia. Prawidłowe wartości to: 0 = Nieprawidłowy numer tagu 1 = Brak wymaganego tagu 2 = Brak zdefiniowanego tagu dla tego typu wiadomości 3 = Niezdefiniowany tag 4 = Brak wartości dla określonego tagu 5 = Wartość dla tego tagu jest poza zakresem 6 = Nieprawidłowy format danych dla wartości 7 = Problem z odszyfrowaniem 8 = Błąd podpisu 9 = Błąd CompID 10 = Błąd dokładności SendingTime 11 = Nieprawidłowy MsgType 12 = Błąd walidacji XML 13 = Tag jest powtarzany 14 = Określony tag nie jest w prawidłowej kolejności 15 = Pola grupy powtarzalnej nie są w prawidłowej kolejności 16 = Nieprawidłowa liczba NumInGroup dla grupy powtarzalnej 17 = Separator pól (znak SOH) zawarty w wartości niebędącej danymi |
Standard Trailer | Tak |
Sequence Reset (MsgType(35)=4)¶
Wiadomość przychodząca/wychodząca nie powinna być używana na poziomie aplikacji. Wiadomość Sequence Reset może tylko zwiększyć numer sekwencyjny.
| Tag | Nazwa pola | Wymagane | Wartość | Format FIX | Komentarze |
|---|---|---|---|---|---|
Standard Header | Tak | ||||
| 123 | GapFillFlag | Nie | Yes lub No | String | Wskazuje, że wiadomość Sequence Reset zastępuje wiadomości administracyjne lub aplikacyjne, które nie zostaną ponownie wysłane. |
| 36 | NewSeqNo | Tak | 1 | Integer | Nowy numer sekwencyjny. |
Standard Trailer | Tak |
Komunikaty aplikacyjne ¶
Market Data Request (MsgType(35)=V)¶
| Tag | Nazwa pola | Wymagane | Wartość | Format FIX | Komentarze |
|---|---|---|---|---|---|
Standard Header | Tak | ||||
| 262 | MDReqID | Tak | Dowolna prawidłowa wartość | String | Unikalny identyfikator żądania kwotowania. Nowy identyfikator dla nowej subskrypcji, ten sam identyfikator co wcześniej dla usunięcia subskrypcji. |
| 263 | SubscriptionRequestType | Tak | 1 lub 2 | Char | 1 = Migawka plus aktualizacje (subskrybuj). 2 = Wyłącz poprzednie żądanie migawki plus aktualizacji (anuluj subskrypcję). |
| 264 | MarketDepth | Tak | 0 lub 1 | Integer | Zostanie dostarczona pełna księga. 0 = Subskrypcja głębokości 1 = Subskrypcja spot |
| 265 | MDUpdateType | Tak | Dowolna prawidłowa wartość | Integer | Obsługiwane jest tylko odświeżanie przyrostowe. |
| 267 | NoMDEntryTypes | Tak | 2 | Integer | Zawsze ustawione na 2 (zostanie wysłana zarówno oferta kupna, jak i sprzedaży). |
| 269 | MDEntryType | Tak | 0 lub 1 | Char | Ta grupa powtarzalna zawiera listę wszystkich typów wpisów danych rynkowych, które żądający chce otrzymywać. 0 = Bid 1 = Offer |
| 146 | NoRelatedSym | Tak | Dowolna prawidłowa wartość | Integer | Liczba żądanych symboli. |
| 55 | Symbol | Tak | Dowolna prawidłowa wartość | Long | Identyfikatory instrumentów są dostarczane przez Spotware. |
Standard Trailer | Tak |
Zobacz przykłady wiadomości Market Data Request poniżej.
Dla Spotów
Żądanie:
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|
Odpowiedź:
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|
Dla Głębokości
Żądanie:
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|
Odpowiedzi:
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 | Nazwa pola | Wymagane | Wartość | Format FIX | Komentarze |
|---|---|---|---|---|---|
Standard Header | Tak | ||||
| 262 | MDReqID | Tak | Dowolna prawidłowa wartość | String | Identyfikator żądania danych rynkowych wysłanego wcześniej. |
| 55 | Symbol | Tak | Dowolna prawidłowa wartość | Long | Identyfikatory instrumentów są dostarczane przez Spotware. |
| 268 | NoMDEntries | Tak | Dowolna prawidłowa wartość | Integer | Liczba następujących wpisów. |
| 269 | MDEntryType | Nie | 0 lub 1 | Char | Prawidłowe wartości to: 0 = Oferta kupna 1 = Oferta sprzedaży Wymagane tylko gdy NoMDEntries (tag=268) > 0. |
| 299 | QuoteEntryID | Nie | Dowolna prawidłowa wartość | String | Unikalny identyfikator kwotowania jako część QuoteSet. |
| 270 | MDEntryPx | Nie | 1.2345 | Cena | Cena wpisu danych rynkowych. Wymagane tylko gdy NoMDEntries (tag=268) > 0. |
| 271 | MDEntrySize | Nie | 500000 | Wolumen | Wolumen wpisu danych rynkowych. Wymagane tylko gdy NoMDEntries (tag=268) > 0. |
| 278 | MDEntryID | Nie | Dowolna prawidłowa wartość | String | Unikalny identyfikator wpisu danych rynkowych. |
Standard Trailer | Tak |
Market Data Incremental Refresh (MsgType(35)=X)¶
| Tag | Nazwa pola | Wymagane | Wartość | Format FIX | Komentarze |
|---|---|---|---|---|---|
Standard Header | Tak | ||||
| 262 | MDReqID | Tak | Dowolna prawidłowa wartość | String | Identyfikator żądania danych rynkowych wysłanego wcześniej. |
| 268 | NoMDEntries | Tak | Dowolna prawidłowa wartość | Integer | Liczba następujących wpisów. Ta powtarzająca się grupa zawiera listę wszystkich typów wpisów danych rynkowych, które wnioskodawca chce otrzymać. |
| 279 | MDUpdateAction | Tak | 0 lub 2 | Char | Typ akcji aktualizacji danych rynkowych. Prawidłowe wartości to: 0 = Nowy 2 = Usuń |
| 269 | MDEntryType | Nie | 0 lub 1 | Char | Prawidłowe wartości to: 0 = Bid 1 = Offer |
| 278 | MDEntryID | Tak | Dowolna prawidłowa wartość | String | ID wpisu danych rynkowych. |
| 55 | Symbol | Tak | Dowolna prawidłowa wartość | Long | Identyfikatory instrumentów są dostarczane przez Spotware. |
| 270 | MDEntryPx | Nie | 1.2345 | Cena | Wymagane tylko gdy MDUpdateAction (tag=279) = 0. |
| 271 | MDEntrySize | Nie | 10000 | Double | Wymagane tylko gdy MDUpdateAction (tag=279) = 0. |
Standard Trailer | Tak |
New Order Single (MsgType(35)=D)¶
Komunikat New Order Single ma następujący format.
| Tag | Nazwa pola | Wymagane | Wartość | Format FIX | Komentarze |
|---|---|---|---|---|---|
Standard Header | Tak | ||||
| 11 | ClOrdID | Tak | Dowolna prawidłowa wartość | String | Unikalny identyfikator zlecenia przydzielony przez klienta. |
| 55 | Symbol | Tak | Dowolna prawidłowa wartość | Long | Identyfikatory instrumentów są dostarczane przez Spotware. |
| 54 | Side | Tak | 1 lub 2 | Integer | 1 = Buy 2 = Sell |
| 60 | TransactTime | Tak | Dowolna prawidłowa wartość | Znacznik czasu | Czas żądania wygenerowany przez klienta. |
| 38 | OrderQty | Tak | Dowolna prawidłowa wartość | Ilość | Liczba zamówionych akcji. Reprezentuje liczbę akcji dla instrumentów udziałowych lub, zgodnie z przyjętą konwencją, liczbę kontraktów dla opcji, kontraktów futures, obligacji zamiennych itp. Maksymalna precyzja wynosi 0,01. Przed FIX 4.2 typ tego pola był "Integer". |
| 40 | OrdType | Tak | 1, 2 lub 3 | Char | 1 = Rynkowe, zlecenie będzie przetwarzane według schematu Immediate or Cancel (IOC) (TimeInForce, tag=59). 2 = Z limitem, zlecenie będzie przetwarzane według schematu Good Till Cancel (GTC) (TimeInForce, tag=59). 3 = Stop, zlecenie będzie przetwarzane według schematu Good Till Cancel (GTC) (TimeInForce, tag=59). |
| 44 | Price | Nie | Dowolna prawidłowa wartość | Cena | Najgorsza cena klienta, jaką klient zaakceptuje. Wymagane tylko gdy OrdType (tag=40) = 2, w takim przypadku zlecenie nie zostanie zrealizowane, chyba że ta cena może zostać spełniona. |
| 99 | StopPx | Nie | Dowolna prawidłowa wartość | Cena | Cena, która uruchamia zlecenie stop. Wymagane tylko gdy OrdType (tag=40) = 3, w takim przypadku zlecenie nie zostanie zrealizowane, chyba że ta cena może zostać spełniona. |
| 59 | TimeInForce | Nie | 1, 3 or 6 | String | Przestarzałe, ta wartość zostanie zignorowana. TimeInForce zostanie wykryte automatycznie w zależności od OrdType (tag=40) i ExpireTime (tag=126): 1 = Good Till Cancel (GTC), będzie używane tylko dla zleceń z limitem i stop (OrdType, tag=40) tylko jeśli ExpireTime (tag=126) nie jest zdefiniowane. 3 = Immediate or Cancel (IOC), będzie używane tylko dla zleceń rynkowych (OrdType, tag=40). 6 = Good Till Date (GTD), będzie używane tylko dla zleceń z limitem i stop (OrdType, tag=40) tylko jeśli ExpireTime (tag=126) jest zdefiniowane. |
| 126 | ExpireTime | Nie | 20140215-07:24:55 | Znacznik czasu | Czas wygaśnięcia w formacie "YYYYMMDD-HH:MM:SS". Jeśli przypisany, zlecenie będzie przetwarzane według schematu GTD (TimeInForce: GTD). |
| 721 | PosMaintRptID | Nie | Dowolna prawidłowa wartość | String | ID pozycji, w której to zlecenie powinno być umieszczone. Jeśli nie ustawiono, zostanie utworzona nowa pozycja, a jej ID zostanie zwrócone w komunikacie Execution Report. Może być określone tylko dla kont zabezpieczonych. |
| 494 | Designation | Nie | Dowolna prawidłowa wartość | String | Niestandardowa etykieta zlecenia. |
Standard Trailer | Tak |
Zobacz przykłady komunikatów New Order Single poniżej.
Zlecenie rynkowe do nowej pozycji
Żądanie:
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|
Odpowiedzi:
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|
Zlecenie rynkowe do istniejącej pozycji
Żądanie:
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|
Odpowiedzi:
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
Zlecenie z limitem do istniejącej pozycji
Żądanie:
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|
Odpowiedź:
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|
Zlecenie stop do nowej pozycji
Żądanie:
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|
Odpowiedź:
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)¶
Komunikat Order Status Request jest używany przez instytucję do generowania komunikatu o statusie zlecenia z powrotem od tradera. Dla prawidłowej interakcji bardzo ważne jest posiadanie unikalnych identyfikatorów zleceń klienta (ClOrdID) dla wszystkich zleceń.
| Tag | Nazwa pola | Wymagane | Wartość | Format FIX | Komentarze |
|---|---|---|---|---|---|
Standard Header | Tak | ||||
| 11 | ClOrdID | Tak | Dowolna prawidłowa wartość | String | Unikalny identyfikator zlecenia przydzielony przez klienta. |
| 54 | Side | Nie | 1 lub 2 | Integer | 1 = Buy 2 = Sell |
Standard Trailer | Tak |
Zobacz przykłady komunikatów Order Status Request poniżej.
Żądanie:
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|
Odpowiedź:
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)¶
Komunikat Order Mass Status Request żąda statusu dla zleceń spełniających kryteria określone w żądaniu. Odpowiedź zostanie zwrócona jako szereg komunikatów Execution Report (jeden dla każdego zlecenia) lub jako komunikat Business Message Reject, jeśli nie znaleziono żadnych zleceń.
| Tag | Nazwa pola | Wymagane | Wartość | Format FIX | Komentarze |
|---|---|---|---|---|---|
Standard Header | Tak | ||||
| 584 | MassStatusReqID | Tak | Dowolna prawidłowa wartość | String | Unikalny ID Mass Status Request przypisany przez klienta. |
| 585 | MassStatusReqType | Tak | Dowolna prawidłowa wartość | Integer | 7 = Status dla wszystkich zleceń. Obecnie obsługiwana jest tylko wartość 7. |
| 225 | IssueDate | Nie | Dowolna prawidłowa wartość | String | Jeśli ustawione, odpowiedź będzie zawierać tylko zlecenia utworzone przed tą datą. |
Standard Trailer | Tak |
Zobacz przykłady komunikatów Order Mass Status Request poniżej.
Żądanie:
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|
Odpowiedź:
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)¶
Komunikat Execution Report dla zaakceptowanego zlecenia ma następujący format.
| Tag | Nazwa pola | Wymagane | Wartość | Format FIX | Komentarze |
|---|---|---|---|---|---|
Standard Header | Tak | ||||
| 37 | OrderID | Tak | Dowolna prawidłowa wartość | String | ID zlecenia cTrader. |
| 11 | ClOrdID | Nie | Dowolna prawidłowa wartość | String | Unikalny identyfikator zlecenia przydzielony przez klienta. |
| 911 | TotNumReports | Nie | Dowolna prawidłowa wartość | Integer | Całkowita liczba raportów zwróconych w odpowiedzi na komunikat Order Mass Status Request. |
| 150 | ExecType | Tak | Dowolna prawidłowa wartość | Char | 0 = New 4 = Canceled 5 = Replace 8 = Rejected C = Expired F = Trade I = Order Status |
| 39 | OrdStatus | Tak | Dowolna prawidłowa wartość | Char | 0 = Nowe 1 = Częściowo zrealizowane 2 = Zrealizowane 8 = Odrzucone 4 = Anulowane (gdy zlecenie jest częściowo zrealizowane, zwracane jest Canceled oznaczające (tag=151), LeavesQty jest anulowane i nie będzie później realizowane). C = Wygasłe |
| 55 | Symbol | Nie | Dowolna prawidłowa wartość | Long | Identyfikatory instrumentów są dostarczane przez Spotware. |
| 54 | Side | Nie | 1 lub 2 | Integer | 1 = Kup 2 = Sprzedaj |
| 60 | TransactTime | Nie | Dowolna prawidłowa wartość | Znacznik czasu | Czas wykonania transakcji reprezentowany przez komunikat Execution Report (w UTC). |
| 6 | AvgPx | Nie | Dowolna prawidłowa wartość | Integer | Cena, po której transakcja została zrealizowana. Dla zlecenia IOC lub GTD jest to średnia cena ważona wolumenem (VWAP) zrealizowanego zlecenia. |
| 38 | OrderQty | Nie | Dowolna prawidłowa wartość | Ilość | Reprezentuje liczbę akcji dla instrumentów udziałowych lub, zgodnie z przyjętą konwencją, liczbę kontraktów dla opcji, kontraktów futures, obligacji zamiennych itp. Przed FIX 4.2 typ tego pola był "Integer". |
| 151 | LeavesQty | Nie | Dowolna prawidłowa wartość | Ilość | Liczba zleceń pozostałych do realizacji. Możliwe wartości są między 0 (w pełni zrealizowane) a OrderQty (częściowo zrealizowane). |
| 14 | CumQty | Nie | Dowolna prawidłowa wartość | Ilość | Całkowita liczba zleceń, które zostały zrealizowane. |
| 32 | LastQty | Nie | Dowolna prawidłowa wartość | Ilość | Kupiona/sprzedana ilość zleceń, które zostały zrealizowane przy tej (ostatniej) realizacji. |
| 40 | OrdType | Nie | 1 lub 2 | Char | 1 = Rynkowe 2 = Z limitem |
| 44 | Price | Nie | Dowolna prawidłowa wartość | Cena | Jeśli podano w wiadomości New Order Single, jest powtórzone w tej wiadomości Execution Report. |
| 99 | StopPx | Nie | Dowolna prawidłowa wartość | Cena | Jeśli podano w wiadomości New Order Single, jest powtórzone w tej wiadomości Execution Report. |
| 59 | TimeInForce | Nie | 1, 3 lub 6 | String | 1 = Ważne do odwołania (GTC) 3 = Natychmiastowe lub anuluj (IOC) 6 = Ważne do daty (GTD) |
| 126 | ExpireTime | Nie | 20140215-07:24:55 | Znacznik czasu | Jeśli podano w wiadomości New Order Single, jest powtórzone w tej wiadomości Execution Report. |
| 58 | Text | Nie | Dowolna prawidłowa wartość | String | Tam, gdzie to możliwe, wiadomość wyjaśni Execution Report. |
| 103 | OrdRejReason | Nie | 0 | Integer | 0 = OrdRejReason.BROKER_EXCHANGE_OPTION |
| 721 | PosMaintRptID | Nie | Dowolna prawidłowa wartość | String | ID pozycji. |
| 494 | Designation | Nie | Dowolna prawidłowa wartość | String | Niestandardowa etykieta zlecenia klienta. |
| 584 | MassStatusReqID | Nie | Dowolna prawidłowa wartość | String | Unikalny identyfikator żądania statusu masowego przypisany przez klienta. |
| 1000 | AbsoluteTP | Nie | Dowolna prawidłowa wartość | Cena | Bezwzględna cena, przy której zostanie wyzwolony take profit. |
| 1001 | RelativeTP | Nie | Dowolna prawidłowa wartość | Cena | Odległość w pipsach od ceny wejścia, przy której zostanie wyzwolony take profit. |
| 1002 | AbsoluteSL | Nie | Dowolna prawidłowa wartość | Cena | Bezwzględna cena, przy której zostanie wyzwolony stop loss. |
| 1003 | RelativeSL | Nie | Dowolna prawidłowa wartość | Cena | Odległość w pipsach od ceny wejścia, przy której zostanie wyzwolony stop loss. |
| 1004 | TrailingSL | Nie | N lub Y | Boolean | Wskazuje, czy stop loss jest kroczący. N = Stop loss nie jest kroczący. Y = Stop loss jest kroczący. |
| 1005 | TriggerMethodSL | Nie | Dowolna prawidłowa wartość | Integer | Wskazana metoda wyzwalania stop loss. 1 = Stop loss zostanie wyzwolony przez stronę transakcji. 2 = Stop loss zostanie wyzwolony przez przeciwną stronę (ask dla pozycji kupna i bid dla pozycji sprzedaży). 3 = Stop loss zostanie wyzwolony po dwóch kolejnych tickach zgodnie ze stroną transakcji. 4 = Stop loss zostanie wyzwolony po dwóch kolejnych tickach zgodnie z przeciwną stroną (drugi tick ask dla pozycji kupna i drugi tick bid dla pozycji sprzedaży). |
| 1006 | GuaranteedSL | Nie | N lub Y | Boolean | Wskazuje, czy stop loss jest gwarantowany. N = Stop loss nie jest gwarantowany. Y = Stop loss jest gwarantowany. |
Standard Trailer | Tak |
Zobacz przykład New Order Single na końcu przewodnika.
Business Message Reject (MsgType(35)=j)¶
Ten typ wiadomości jest wysyłany, gdy system nie może przetworzyć żądania subskrypcji lub zlecenie nie może zostać wykonane.
| Tag | Nazwa pola | Wymagane | Wartość | Format FIX | Komentarze |
|---|---|---|---|---|---|
Standard Header | Tak | ||||
| 45 | RefSeqNum | Nie | Dowolna prawidłowa wartość | Integer | MsgSeqNum (tag=34) odrzuconej wiadomości. |
| 372 | RefMsgType | Nie | Dowolna prawidłowa wartość | String | MsgType (tag=35) odnośnej wiadomości FIX. |
| 379 | BusinessRejectRefID | Nie | Dowolna prawidłowa wartość | String | Wartość pola ID poziomu biznesowego w odnośnej wiadomości. Wymagane, chyba że odpowiednie pole ID nie zostało określone. |
| 380 | BusinessRejectReason | Tak | 0 | Integer | Kod identyfikujący powód wiadomości Business Message Reject. 0 = Inne |
| 58 | Text | Nie | Dowolna prawidłowa wartość | String | Tam, gdzie to możliwe, wiadomość wyjaśniająca powód odrzucenia. |
Standard Trailer | Tak |
Zobacz przykład wiadomości Business Message Reject poniżej.
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 | Nazwa pola | Wymagane | Wartość | Format FIX | Komentarze |
|---|---|---|---|---|---|
Standard Header | Tak | ||||
| 710 | PosReqID | Tak | Dowolna prawidłowa wartość | String | Unikalny identyfikator żądania (ustawiony przez klienta). |
| 721 | PosMaintRptID | Nie | Dowolna prawidłowa wartość | String | ID pozycji do żądania. Jeśli nie ustawiono, zwrócone zostaną wszystkie otwarte pozycje. |
Standard Trailer | Tak |
Zobacz przykłady wiadomości Request for Positions poniżej.
Żądanie:
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|
Odpowiedź:
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 | Nazwa pola | Wymagane | Wartość | Format FIX | Komentarze |
|---|---|---|---|---|---|
Standard Header | Tak | ||||
| 710 | PosReqID | Tak | Dowolna prawidłowa wartość | String | ID wiadomości Request for Positions. |
| 721 | PosMaintRptID | Nie | Dowolna prawidłowa wartość | String | ID pozycji, które nie jest ustawione, jeśli PosReqResult (tag=728) nie jest VALID_REQUEST. |
| 727 | TotalNumPosReports | Tak | Dowolna prawidłowa wartość | String | Całkowita liczba Position Reports w sekwencji, gdy PosReqResult (tag=728) to VALID_REQUEST, w przeciwnym razie = 0. |
| 728 | PosReqResult | Tak | 0 lub 2 | String | 0 = Prawidłowe żądanie 2 = Nie znaleziono otwartych pozycji spełniających kryteria. |
| 55 | Symbol | Nie | Dowolna prawidłowa wartość | String | Symbol, dla którego przygotowano bieżący Position Report. Nie jest ustawiony, jeśli PosReqResult (tag=728) nie jest VALID_REQUEST. |
| 702 | NoPositions | Nie | 1 | String | 1 gdy PosReqResult (tag=728) to VALID_REQUEST, w przeciwnym razie nie ustawione. |
| 704 | LongQty | Nie | Dowolna prawidłowa wartość | String | Otwarty wolumen pozycji w przypadku strony kupna, równy 0 w przypadku strony sprzedaży. Nie ustawione, jeśli PosReqResult (tag=728) nie jest VALID_REQUEST. |
| 705 | ShortQty | Nie | Dowolna prawidłowa wartość | String | Otwarty wolumen pozycji w przypadku strony sprzedaży, równy 0 w przypadku strony kupna. Nie ustawione, jeśli PosReqResult (tag=728) nie jest VALID_REQUEST. |
| 730 | SettlPrice | Nie | Dowolna prawidłowa wartość | String | Średnia cena otwartego wolumenu w bieżącym Position Report. |
| 1000 | AbsoluteTP | Nie | Dowolna prawidłowa wartość | Cena | Bezwzględna cena, przy której zostanie wyzwolony take profit. |
| 1002 | AbsoluteSL | Nie | Dowolna prawidłowa wartość | Cena | Bezwzględna cena, przy której zostanie wyzwolony stop loss. |
| 1004 | TrailingSL | Nie | Dowolna prawidłowa wartość | Boolean | Wskazuje, czy stop loss jest kroczący. N = Stop loss nie jest kroczący. Y = Stop loss jest kroczący. |
| 1005 | TriggerMethodSL | Nie | Dowolna prawidłowa wartość | Integer | Wskazana metoda wyzwalania stop loss. 1 = Stop loss zostanie wyzwolony przez stronę transakcji. 2 = Stop loss zostanie wyzwolony przez przeciwną stronę (ask dla pozycji kupna i bid dla pozycji sprzedaży). 3 = Stop loss zostanie wyzwolony po dwóch kolejnych tickach zgodnie ze stroną transakcji. 4 = Stop loss zostanie wyzwolony po dwóch kolejnych tickach zgodnie z przeciwną stroną (drugi tick ask dla pozycji kupna i drugi tick bid dla pozycji sprzedaży). |
| 1006 | GuaranteedSL | Nie | Dowolna prawidłowa wartość | Boolean | Wskazuje, czy stop loss jest gwarantowany. N = Stop loss nie jest gwarantowany. Y = Stop loss jest gwarantowany. |
Standard Trailer | Tak |
Order Cancel Request (MsgType(35)=F)¶
| Tag | Nazwa pola | Wymagane | Wartość | Format FIX | Komentarze |
|---|---|---|---|---|---|
Standard Header | Tak | ||||
| 41 | OrigClOrdID | Tak | Dowolna prawidłowa wartość | String | Unikalny identyfikator zlecenia, które ma zostać anulowane, przydzielony przez klienta. |
| 37 | OrderID | Nie | Dowolna prawidłowa wartość | String | Unikalny identyfikator zlecenia zwrócony przez cServer. |
| 11 | ClOrdID | Tak | Dowolna prawidłowa wartość | String | Unikalny identyfikator żądania anulowania przydzielony przez klienta. |
Standard Trailer | Tak |
Zobacz przykłady wiadomości Order Cancel Request poniżej.
Żądanie:
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|
Odpowiedź (sukces):
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|
Odpowiedź (niepowodzenie):
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 | Nazwa pola | Wymagane | Wartość | Format FIX | Komentarze |
|---|---|---|---|---|---|
Standard Header | Tak | ||||
| 37 | OrderID | Tak | Dowolna prawidłowa wartość | String | Unikalny identyfikator zlecenia, którego system nie mógł anulować. |
| 11 | ClOrdID | Tak | Dowolna prawidłowa wartość | String | Unikalny identyfikator Order Cancel Request. |
| 41 | OrigClOrdID | Nie | Dowolna prawidłowa wartość | String | Unikalny identyfikator zlecenia, które próbowano anulować, przydzielony przez klienta. |
| 39 | OrdStatus | Tak | Dowolna prawidłowa wartość | Char | 0 = Nowe 1 = Częściowo zrealizowane 2 = Zrealizowane 8 = Odrzucone 4 = Anulowane (gdy zlecenie jest częściowo zrealizowane, zwracane jest Canceled, oznaczające (tag=151), LeavesQty jest anulowane i nie zostanie później zrealizowane). C = Wygasłe |
| 434 | CxlRejResponseTo | Tak | 1 lub 2 | Char | 1 = Odrzuć anulowanie zlecenia. 2 = Odrzuć modyfikację zlecenia z innego terminala. |
| 58 | Text | Nie | Dowolna prawidłowa wartość | String | Zlecenie jest w trakcie realizacji. |
Standard Trailer | Tak |
Zobacz przykład wiadomości Odrzucenia Anulowania Zlecenia poniżej.
Odpowiedź:
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 | Nazwa pola | Wymagane | Wartość | Format FIX | Komentarze |
|---|---|---|---|---|---|
Standard Header | Tak | ||||
| 41 | OrigClOrdID | Tak | Any valid value | String | Unikalny identyfikator zlecenia, które ma zostać zmodyfikowane, przydzielony przez klienta. |
| 37 | OrderID | Nie | Dowolna prawidłowa wartość | String | Unikalny identyfikator oryginalnego zlecenia, które ma zostać zmodyfikowane, przydzielony przez serwer. Preferowana metoda do użycia. |
| 11 | ClOrdID | Tak | Dowolna prawidłowa wartość | String | Unikalny identyfikator żądania modyfikacji przydzielony przez klienta. |
| 38 | OrderQty | Tak | Dowolna prawidłowa wartość | Ilość | Istniejąca lub nowo określona ilość do zastąpienia starej wartości. |
| 44 | Price | Nie | Dowolna prawidłowa wartość | Cena | Istniejąca lub nowo określona cena limitu do zastąpienia starej wartości. Ważne tylko dla zleceń z limitem. |
| 99 | StopPx | Nie | Dowolna prawidłowa wartość | Cena | Istniejąca lub nowo określona cena stop do zastąpienia starej wartości. Ważne tylko dla zleceń stop. |
| 126 | ExpireTime | Nie | 20140215-07:24:55 | Znacznik czasu | Istniejący lub nowo określony czas wygaśnięcia. Ważne tylko dla zleceń oczekujących. |
Standard Trailer | Tak |
Zobacz przykłady wiadomości Żądania Anulowania/Zastąpienia Zlecenia poniżej.
Żądanie:
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|
Odpowiedź (sukces):
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|
Odpowiedź (niepowodzenie):
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 | Nazwa pola | Wymagane | Wartość | Format FIX | Komentarze |
|---|---|---|---|---|---|
Standard Header | Tak | ||||
| 262 | MDReqID | Tak | Dowolna prawidłowa wartość | String | Musi odnosić się do MDReqID (tag=262) żądania. |
| 281 | MDReqRejReason | Nie | Dowolna prawidłowa wartość | Integer | 0 = Nieznany symbol 4 = Nieobsługiwany SubscriptionRequestType (tag=263) 5 = Nieobsługiwany MarketDepth (tag=264) |
Standard Trailer | Tak |
Zobacz przykłady wiadomości Odrzucenia Żądania Danych Rynkowych poniżej.
Żądanie:
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|
Odrzuć:
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|
Żądanie:
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|
Odrzuć:
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 | Nazwa pola | Wymagane | Wartość | Format FIX | Komentarze |
|---|---|---|---|---|---|
Standard Header | Tak | ||||
| 320 | SecurityReqID | Tak | Dowolna prawidłowa wartość | String | Unikalny identyfikator Żądania Definicji Zabezpieczenia. |
| 559 | SecurityListRequestType | Tak | 0 | Integer | Typ składanego Żądania Listy Zabezpieczeń. Obsługiwane tylko 0 = Symbol (tag=55). |
| 55 | Symbol | Nie | Dowolna prawidłowa wartość | Integer | Identyfikator do rozwiązania nazwy symbolu. |
Standard Trailer | Tak |
Zobacz przykłady wiadomości Żądania Listy Zabezpieczeń poniżej.
Żądanie:
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|
Odpowiedź:
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 | Nazwa pola | Wymagane | Wartość | Format FIX | Komentarze |
|---|---|---|---|---|---|
Standard Header | Tak | ||||
| 320 | SecurityReqID | Tak | Dowolna prawidłowa wartość | String | Unikalny identyfikator Żądania Definicji Zabezpieczenia. |
| 322 | SecurityResponseID | Tak | Dowolna prawidłowa wartość | String | Unikalny identyfikator odpowiedzi Listy Zabezpieczeń. |
| 560 | SecurityRequestResult | Tak | 0 | Integer | Wyniki zwrócone do wiadomości Żądania Zabezpieczenia. Prawidłowe wartości to: 0 = Prawidłowe żądanie. 1 = Nieprawidłowe lub nieobsługiwane żądanie. 2 = Nie znaleziono instrumentów spełniających kryteria wyboru. 3 = Brak autoryzacji do pobierania danych instrumentu. 4 = Dane instrumentu tymczasowo niedostępne. 5 = Żądanie danych instrumentu nie jest obsługiwane. |
| 146 | NoRelatedSym | Nie | Dowolna prawidłowa wartość | Integer | Określa liczbę powtarzających się symboli (instrumentów). |
| 55 | Symbol | Nie | Dowolna prawidłowa wartość | Integer | Identyfikatory instrumentów są dostarczane przez Spotware. |
| 1007 | SymbolName | Nie | Dowolna prawidłowa wartość | String | Nazwa symbolu. |
| 1008 | SymbolDigits | Nie | Dowolna prawidłowa wartość | Integer | Liczba miejsc po przecinku symbolu. Możliwe wartości od 0 do 5. |
Standard Trailer | Tak |
Zobacz przykład wiadomości Listy Zabezpieczeń poniżej.
Odpowiedź:
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|