Motore FIX di cTrader (Regole di Ingaggio)¶
Introduzione ¶
Ambito ¶
Questa specifica è destinata a servire agli sviluppatori di software come guida all'implementazione per l'API del motore FIX di cTrader.
Versione FIX ¶
cTrader supporta la versione 4.4 di FIX. Per ulteriori informazioni su questa versione, fare riferimento a queste specifiche.
Connettività ¶
Tipo di connessione ¶
Una connessione al motore FIX di cTrader è disponibile tramite Internet, un tunnel VPN o una connessione diretta alle nostre strutture del centro dati nel Regno Unito. Contattaci per ulteriori dettagli.
Reset del numero di sequenza ¶
Tutti i lati di una sessione FIX dovrebbero avere i numeri di sequenza reimpostati all'avvio di una sessione FIX. Vedi il messaggio di Logon.
Messaggi ¶
Come definito nel protocollo FIX, il server FIX di cTrader utilizza due diversi livelli di dati (sistema e applicazione). Nota che questo è un set minimo di messaggi richiesti per supportare i flussi di lavoro necessari. È soggetto a modifiche nel tempo man mano che evolvono sia le esigenze aziendali che gli standard FIX.
Motore FIX di cTrader ¶
Messaggi di sistema¶
- Heartbeat (Client ↔ cTrader)
- Test Request (Client ↔ cTrader)
- Logon (Client → cTrader)
- Logout (Client → cTrader)
- Resend Request (Client ↔ cTrader)
- Reject (Client ↔ cTrader)
- Sequence Reset (Client ↔ cTrader)
Messaggi dell'applicazione¶
- 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)
Intestazione standard ¶
Ogni messaggio amministrativo o applicativo è preceduto da un'intestazione standard. Le intestazioni identificano un tipo di messaggio, lunghezza, destinazione, numero di sequenza, punto di origine e ora.
Tutti i messaggi inviati a cTrader devono avere un'intestazione standard con i seguenti campi:
| Tag | Nome del campo | Obbligatorio | Valore | Formato FIX | Commenti |
|---|---|---|---|---|---|
| 8 | BeginString | Sì | FIX.4.4 | Stringa | Sempre non criptato, deve essere il primo campo in un messaggio. |
| 9 | BodyLength | Sì | Qualsiasi valore valido | Intero | Lunghezza del corpo del messaggio. Sempre non criptato, deve essere il secondo campo in un messaggio. |
| 35 | MsgType | Sì | A | Stringa | Un tipo di messaggio. Sempre non criptato, deve essere il terzo campo in un messaggio. |
| 49 | SenderCompID | Sì | Qualsiasi valore valido | Stringa | Un ID della parte di trading nel seguente formato: <Environment>.<BrokerUID>.<Trader Login>, dove Environment è una determinazione del server, come demo o live; BrokerUID è fornito da cTrader e Trader Login è un identificatore numerico dell'account del trader. |
| 56 | TargetCompID | Sì | CSERVER | Stringa | Un destinatario del messaggio. The valid value is CSERVER. |
| 57 | TargetSubID | Sì | QUOTE o TRADE | Stringa | Un qualificatore di sessione aggiuntivo. I valori possibili sono QUOTE e TRADE. |
| 50 | SenderSubID | No | Qualsiasi valore valido | Stringa | Il valore assegnato utilizzato per identificare un originatore specifico del messaggio. Deve essere impostato su QUOTE se TargetSubID=QUOTE. |
| 34 | MsgSeqNum | Sì | 1 | Intero | Un numero di sequenza del messaggio. |
| 52 | SendingTime | Sì | 20131129-15:40:08.155 | UTCTimestamp | Ora della trasmissione del messaggio sempre espressa in UTC (Tempo Coordinato Universale, noto anche come GMT). |
Trailer standard ¶
Ogni messaggio, amministrativo o applicativo, è terminato da un trailer standard. Il trailer viene utilizzato per separare i messaggi e contiene una rappresentazione a tre cifre del valore CheckSum (tag=10).
| Tag | Nome del campo | Obbligatorio | Valore | Formato FIX | Commenti |
|---|---|---|---|---|---|
| 10 | CheckSum | Sì | 054 | Stringa | Un checksum semplice a tre byte. Sempre l'ultimo campo in un messaggio (ad esempio, serve), con il <SOH> finale come delimitatore di fine messaggio. È definito come tre caratteri (sempre non criptati). |
Messaggi di sessione ¶
Heartbeat (MsgType(35)=0)¶
I messaggi Heartbeat vengono inviati sia da cTrader che dall'applicazione client per confermare una connessione attiva.
L'applicazione client del fornitore trasmette un heartbeat ricorrente all'intervallo, che è definito dal campo HeartBtInt (tag=108) in un messaggio Logon, o come risposta a un messaggio Test Request.
| Tag | Nome del campo | Obbligatorio | Valore | Formato FIX | Commenti |
|---|---|---|---|---|---|
Standard Header | Sì | ||||
| 112 | TestReqID | No | Qualsiasi valore valido | Stringa | Se un heartbeat è il risultato del messaggio Test Request, TestReqID è richiesto. |
Standard Trailer | Sì |
Test Request (MsgType(35)=1)¶
Forza un heartbeat dal ricevitore di una richiesta. Una risposta viene inviata dal sistema ricevente come messaggio Heartbeat contenente TestReqID.
| Tag | Nome del campo | Obbligatorio | Valore | Formato FIX | Commenti |
|---|---|---|---|---|---|
Standard Header | Sì | ||||
| 112 | TestReqID | Sì | Qualsiasi valore valido | Stringa | Un ID del messaggio heartbeat. TestReqID dovrebbe essere incrementale. |
Standard Trailer | Sì |
Logon (bidirectional) (MsgType(35)=A)¶
Un messaggio Logon viene inviato dall'applicazione lato client per iniziare una sessione FIX di cTrader, e una risposta viene inviata da cTrader all'applicazione lato client. Una volta completato il logon, i flussi di quotazione e trading possono procedere per il ciclo di vita della sessione.
Se cTrader riceve un messaggio Logon non valido (con campi non validi), cTrader invia un messaggio Logout in risposta.
| Tag | Nome del campo | Obbligatorio | Valore | Formato FIX | Commenti |
|---|---|---|---|---|---|
Standard Header | Sì | ||||
| 98 | EncryptMethod | Sì | 0 | Intero | Definisce uno schema di crittografia del messaggio. Attualmente, è supportata solo la sicurezza a livello di trasporto. Il valore valido è 0 = NONE_OTHER (la crittografia non viene utilizzata). |
| 108 | HeartBtInt | Sì | Qualsiasi valore valido | Intero | Un intervallo di heartbeat in secondi. Il valore è impostato nel file config.properties (lato client) come SERVER.POLLING.INTERVAL. Il valore predefinito dell'intervallo è 30 secondi. Se HeartBtInt è impostato su 0, non è richiesto alcun messaggio heartbeat. |
| 141 | ResetSeqNumFlag | No | Y | Booleano | Tutti i lati della sessione FIX dovrebbero avere i numeri di sequenza azzerati. Il valore valido è Y (azzeramento). |
| 553 | Username | No | Qualsiasi valore valido | Stringa | Un ID utente numerico. L'utente è collegato al valore SenderCompID (l'organizzazione dell'utente, tag=49). |
| 554 | Password | No | Qualsiasi valore valido | Stringa | Una password utente. |
Standard Trailer | Sì |
Nota
Il campo Username (tag=553) deve contenere un valore di login del trader numerico, mentre SenderCompID (tag=49) deve contenere un ambiente, BrokerUID e un login del trader delimitati da un punto (ad esempio, live.theBroker.12345).
Vedi esempi di messaggi Logon di seguito.
Richiesta:
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|
Risposta (successo):
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|
Risposta (fallita):
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)¶
Un messaggio Logout viene inviato dall'applicazione client per richiedere la fine di una sessione con cTrader e come risposta da cTrader. Un logout di sessione si verifica in risposta all'invio di un messaggio Logout da parte di un Partecipante di Mercato a cTrader. Prima di terminare la sessione, cTrader annullerà tutti i prezzi che stanno ancora attivamente fluendo verso la parte richiedente. Se cTrader riceve un messaggio Logon non valido (con campi non validi), cTrader invia un messaggio Logout in risposta con i dettagli dell'errore nel campo Text (tag=58).
| Tag | Nome del campo | Obbligatorio | Valore | Formato FIX | Commenti |
|---|---|---|---|---|---|
Standard Header | Sì | ||||
| 58 | Text | No | Qualsiasi valore valido | Stringa | Dettagli del rifiuto del Logon. Utilizzato solo per i messaggi da cTrader al client come risposta a un messaggio Logon non valido. |
Standard Trailer | Sì |
Vedi esempi di messaggi Logout di seguito.
Richiesta:
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|
Risposta:
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)¶
Un messaggio in entrata/uscita viene utilizzato per richiedere il reinvio di un messaggio (o messaggi), tipicamente quando viene rilevato un gap nella numerazione sequenziale.
| Tag | Nome del campo | Obbligatorio | Valore | Formato FIX | Commenti |
|---|---|---|---|---|---|
Standard Header | Sì | ||||
| 7 | BeginSeqNo | Sì | Qualsiasi valore valido | Intero | Un numero di sequenza del messaggio del primo record nell'intervallo da reinviare. |
| 16 | EndSeqNo | Sì | Qualsiasi valore valido | Intero | Un numero di sequenza del messaggio dell'ultimo record nell'intervallo da reinviare. |
Standard Trailer | Sì |
Reject (bidirectional) (MsgType(35)=3)¶
Inviato quando il messaggio ricevuto non può essere elaborato a causa di una violazione delle regole a livello di sessione. I messaggi rifiutati devono essere registrati e deve essere applicato un incremento al numero di sequenza in arrivo.
| Tag | Nome del campo | Obbligatorio | Valore | Formato FIX | Commenti |
|---|---|---|---|---|---|
Standard Header | Sì | ||||
| 45 | RefSeqNum | Sì | Qualsiasi valore valido | SeqNum | Un numero di sequenza del messaggio di riferimento. |
| 58 | Text | No | Qualsiasi valore valido | Stringa | Una stringa di testo in formato libero. |
| 354 | EncodedTextLen | No | Qualsiasi valore valido | Lunghezza | Lunghezza del campo EncodedText (caratteri non ASCII) in byte. |
| 355 | EncodedText | No | Qualsiasi valore valido | Dati | Una rappresentazione del campo Text (tag=58), codificata utilizzando il formato specificato nel campo MessageEncoding (tag=347) (dall'intestazione standard). Se viene utilizzata la rappresentazione ASCII, dovrebbe essere specificata anche nel campo Text (tag=58). |
| 371 | RefTagID | No | Qualsiasi valore valido | Intero | Un numero di tag del campo FIX che ha avviato il rifiuto del messaggio. |
| 372 | RefMsgType | No | Qualsiasi valore valido | Stringa | MsgType (tag=35) del messaggio FIX di riferimento. |
| 373 | SessionRejectReason | No | Qualsiasi valore valido | Intero | Cause codificate del rifiuto. I valori validi sono: 0 = Numero di tag non valido 1 = Tag obbligatorio mancante 2 = Nessun tag definito per questo tipo di messaggio 3 = Tag non definito 4 = Nessun valore per il tag specificato 5 = Il valore per questo tag è fuori intervallo 6 = Formato dati non corretto per il valore 7 = Problema di decrittazione 8 = Errore di firma 9 = Errore CompID 10 = Errore di precisione SendingTime 11 = MsgType non valido 12 = Errore di convalida XML 13 = Il tag viene ripetuto 14 = Il tag specificato non è nell'ordine corretto 15 = I campi del gruppo ripetuto non sono nell'ordine corretto 16 = Conteggio NumInGroup non corretto per il gruppo ripetuto 17 = Delimitatore di campo (carattere SOH) incluso in un valore non dati |
Standard Trailer | Sì |
Sequence Reset (MsgType(35)=4)¶
Un messaggio in entrata/uscita non dovrebbe essere utilizzato a livello applicativo. Un messaggio di Sequence Reset può solo aumentare un numero di sequenza.
| Tag | Nome del campo | Obbligatorio | Valore | Formato FIX | Commenti |
|---|---|---|---|---|---|
Standard Header | Sì | ||||
| 123 | GapFillFlag | No | Yes o No | Stringa | Indica che un messaggio di Sequence Reset sta sostituendo messaggi amministrativi o applicativi che non verranno reinviati. |
| 36 | NewSeqNo | Sì | 1 | Intero | Un nuovo numero di sequenza. |
Standard Trailer | Sì |
Messaggi applicativi ¶
Market Data Request (MsgType(35)=V)¶
| Tag | Nome del campo | Obbligatorio | Valore | Formato FIX | Commenti |
|---|---|---|---|---|---|
Standard Header | Sì | ||||
| 262 | MDReqID | Sì | Qualsiasi valore valido | Stringa | Un ID univoco della richiesta di quotazione. Un nuovo ID per una nuova sottoscrizione, lo stesso ID utilizzato in precedenza per la rimozione di una sottoscrizione. |
| 263 | SubscriptionRequestType | Sì | 1 o 2 | Char | 1 = Snapshot più aggiornamenti (sottoscrivi). 2 = Disabilita la precedente richiesta di snapshot più aggiornamenti (annulla sottoscrizione). |
| 264 | MarketDepth | Sì | 0 o 1 | Intero | Verrà fornito un libro completo. 0 = Sottoscrizione della profondità 1 = Sottoscrizione spot |
| 265 | MDUpdateType | Sì | Qualsiasi valore valido | Intero | È supportato solo l'Aggiornamento Incrementale. |
| 267 | NoMDEntryTypes | Sì | 2 | Intero | Sempre impostato su 2 (verranno inviati sia bid che ask). |
| 269 | MDEntryType | Sì | 0 o 1 | Char | Questo gruppo ripetuto contiene un elenco di tutti i tipi di Market Data Entries che il richiedente desidera ricevere. 0 = Bid 1 = Offer |
| 146 | NoRelatedSym | Sì | Qualsiasi valore valido | Intero | Il numero di simboli richiesti. |
| 55 | Symbol | Sì | Qualsiasi valore valido | Long | Gli identificatori degli strumenti sono forniti da Spotware. |
Standard Trailer | Sì |
Vedi esempi di messaggi di Market Data Request di seguito.
Per Spot
Richiesta:
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|
Risposta:
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|
Per Profondità
Richiesta:
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|
Risposte:
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 | Nome del campo | Obbligatorio | Valore | Formato FIX | Commenti |
|---|---|---|---|---|---|
Standard Header | Sì | ||||
| 262 | MDReqID | Sì | Qualsiasi valore valido | Stringa | L'ID della richiesta di dati di mercato precedentemente inviata. |
| 55 | Symbol | Sì | Qualsiasi valore valido | Long | Gli identificatori degli strumenti sono forniti da Spotware. |
| 268 | NoMDEntries | Sì | Qualsiasi valore valido | Intero | Il numero di voci seguenti. |
| 269 | MDEntryType | No | 0 o 1 | Char | I valori validi sono: 0 = Bid 1 = Offer Richiesto solo quando NoMDEntries (tag=268) > 0. |
| 299 | QuoteEntryID | No | Qualsiasi valore valido | Stringa | Un'identificazione univoca della quotazione come parte di QuoteSet. |
| 270 | MDEntryPx | No | 1.2345 | Prezzo | Un prezzo del Market Data Entry. Richiesto solo quando NoMDEntries (tag=268) > 0. |
| 271 | MDEntrySize | No | 500000 | Volume | Volume del Market Data Entry. Richiesto solo quando NoMDEntries (tag=268) > 0. |
| 278 | MDEntryID | No | Qualsiasi valore valido | Stringa | Un identificatore univoco del Market Data Entry. |
Standard Trailer | Sì |
Market Data Incremental Refresh (MsgType(35)=X)¶
| Tag | Nome del campo | Obbligatorio | Valore | Formato FIX | Commenti |
|---|---|---|---|---|---|
Standard Header | Sì | ||||
| 262 | MDReqID | Sì | Qualsiasi valore valido | Stringa | L'ID della richiesta di dati di mercato precedentemente inviata. |
| 268 | NoMDEntries | Sì | Qualsiasi valore valido | Intero | Il numero di voci seguenti. Questo gruppo ripetuto contiene un elenco di tutti i tipi di Market Data Entries che il richiedente desidera ricevere. |
| 279 | MDUpdateAction | Sì | 0 o 2 | Char | Un tipo di azione di aggiornamento dei dati di mercato. I valori validi sono: 0 = Nuovo 2 = Elimina |
| 269 | MDEntryType | No | 0 o 1 | Char | I valori validi sono: 0 = Bid 1 = Offer |
| 278 | MDEntryID | Sì | Qualsiasi valore valido | Stringa | Un ID del Market Data Entry. |
| 55 | Symbol | Sì | Qualsiasi valore valido | Long | Gli identificatori degli strumenti sono forniti da Spotware. |
| 270 | MDEntryPx | No | 1.2345 | Prezzo | Richiesto solo quando MDUpdateAction (tag=279) = 0. |
| 271 | MDEntrySize | No | 10000 | Double | Richiesto solo quando MDUpdateAction (tag=279) = 0. |
Standard Trailer | Sì |
New Order Single (MsgType(35)=D)¶
Un messaggio New Order Single ha il seguente formato.
| Tag | Nome del campo | Obbligatorio | Valore | Formato FIX | Commenti |
|---|---|---|---|---|---|
Standard Header | Sì | ||||
| 11 | ClOrdID | Sì | Qualsiasi valore valido | Stringa | Un identificatore univoco dell'ordine assegnato dal cliente. |
| 55 | Symbol | Sì | Qualsiasi valore valido | Long | Gli identificatori degli strumenti sono forniti da Spotware. |
| 54 | Side | Sì | 1 o 2 | Intero | 1 = Buy 2 = Sell |
| 60 | TransactTime | Sì | Qualsiasi valore valido | Timestamp | Ora della richiesta generata dal cliente. |
| 38 | OrderQty | Sì | Qualsiasi valore valido | Qty | Il numero di azioni ordinate. Questo rappresenta il numero di azioni per i titoli azionari o, in base alla convenzione normale, il numero di contratti per opzioni, futures, obbligazioni convertibili, ecc. La precisione massima è 0,01. Prima di FIX 4.2, il tipo di questo campo era "Integer". |
| 40 | OrdType | Sì | 1, 2 o 3 | Char | 1 = Mercato, l'ordine sarà elaborato secondo lo schema Immediate or Cancel (IOC) (TimeInForce, tag=59). 2 = Limite, l'ordine sarà elaborato secondo lo schema Good Till Cancel (GTC) (TimeInForce, tag=59). 3 = Stop, l'ordine sarà elaborato secondo lo schema Good Till Cancel (GTC) (TimeInForce, tag=59). |
| 44 | Price | No | Qualsiasi valore valido | Prezzo | Il prezzo peggiore per il cliente che il cliente accetterà. Richiesto solo quando OrdType (tag=40) = 2, nel qual caso l'ordine non sarà eseguito a meno che questo prezzo non possa essere soddisfatto. |
| 99 | StopPx | No | Qualsiasi valore valido | Prezzo | Un prezzo che attiva l'ordine stop. Richiesto solo quando OrdType (tag=40) = 3, nel qual caso l'ordine non sarà eseguito a meno che questo prezzo non possa essere soddisfatto. |
| 59 | TimeInForce | No | 1, 3 or 6 | Stringa | Deprecato, questo valore sarà ignorato. TimeInForce sarà rilevato automaticamente in base a OrdType (tag=40) e ExpireTime (tag=126): 1 = Good Till Cancel (GTC), sarà utilizzato solo per ordini limite e stop (OrdType, tag=40) solo se ExpireTime (tag=126) non è definito. 3 = Immediate or Cancel (IOC), sarà utilizzato solo per ordini di mercato (OrdType, tag=40). 6 = Good Till Date (GTD), sarà utilizzato solo per ordini limite e stop (OrdType, tag=40) solo se ExpireTime (tag=126) è definito. |
| 126 | ExpireTime | No | 20140215-07:24:55 | Timestamp | Tempo di scadenza nel formato "AAAAMMGG-HH:MM:SS". Se assegnato, l'ordine sarà elaborato secondo lo schema GTD (TimeInForce: GTD). |
| 721 | PosMaintRptID | No | Qualsiasi valore valido | Stringa | Un ID di posizione in cui questo ordine dovrebbe essere piazzato. Se non impostato, verrà creata una nuova posizione e il suo ID sarà restituito nel messaggio Execution Report. Può essere specificato solo per conti con hedging. |
| 494 | Designation | No | Qualsiasi valore valido | Stringa | Un'etichetta personalizzata dell'ordine. |
Standard Trailer | Sì |
Vedi esempi di messaggi New Order Single di seguito.
Ordine di mercato per nuova posizione
Richiesta:
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|
Risposte:
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|
Ordine di mercato per posizione esistente
Richiesta:
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|
Risposte:
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
Ordine limite per posizione esistente
Richiesta:
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|
Risposta:
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|
Ordine stop per nuova posizione
Richiesta:
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|
Risposta:
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)¶
Un messaggio Order Status Request viene utilizzato da un'istituzione per generare un messaggio di stato dell'ordine dal trader. Per un'interazione corretta, è molto importante avere identificatori di ordine cliente univoci (ClOrdID) per tutti gli ordini.
| Tag | Nome del campo | Obbligatorio | Valore | Formato FIX | Commenti |
|---|---|---|---|---|---|
Standard Header | Sì | ||||
| 11 | ClOrdID | Sì | Qualsiasi valore valido | Stringa | Un identificatore univoco dell'ordine assegnato dal cliente. |
| 54 | Side | No | 1 o 2 | Intero | 1 = Buy 2 = Sell |
Standard Trailer | Sì |
Vedi esempi di messaggi Order Status Request di seguito.
Richiesta:
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|
Risposta:
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)¶
Un messaggio Order Mass Status Request richiede lo stato degli ordini che corrispondono ai criteri specificati nella richiesta. La risposta sarà restituita come una serie di messaggi Execution Report (uno per ogni ordine), o come un messaggio Business Message Reject se non vengono trovati ordini.
| Tag | Nome del campo | Obbligatorio | Valore | Formato FIX | Commenti |
|---|---|---|---|---|---|
Standard Header | Sì | ||||
| 584 | MassStatusReqID | Sì | Qualsiasi valore valido | Stringa | Un ID univoco della Mass Status Request assegnato dal cliente. |
| 585 | MassStatusReqType | Sì | Qualsiasi valore valido | Intero | 7 = Stato per tutti gli ordini. Attualmente è supportato solo il valore 7. |
| 225 | IssueDate | No | Qualsiasi valore valido | Stringa | Se impostato, la risposta conterrà solo gli ordini creati prima di questa data. |
Standard Trailer | Sì |
Vedi esempi di messaggi Order Mass Status Request di seguito.
Richiesta:
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|
Risposta:
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)¶
Un messaggio Execution Report per un ordine accettato ha il seguente formato.
| Tag | Nome del campo | Obbligatorio | Valore | Formato FIX | Commenti |
|---|---|---|---|---|---|
Standard Header | Sì | ||||
| 37 | OrderID | Sì | Qualsiasi valore valido | Stringa | Un ID ordine cTrader. |
| 11 | ClOrdID | No | Qualsiasi valore valido | Stringa | Un identificatore univoco dell'ordine assegnato dal cliente. |
| 911 | TotNumReports | No | Qualsiasi valore valido | Intero | Il numero totale di report restituiti in risposta al messaggio Order Mass Status Request. |
| 150 | ExecType | Sì | Qualsiasi valore valido | Char | 0 = New 4 = Canceled 5 = Replace 8 = Rejected C = Expired F = Trade I = Order Status |
| 39 | OrdStatus | Sì | Qualsiasi valore valido | Char | 0 = Nuovo 1 = Parzialmente eseguito 2 = Eseguito 8 = Rifiutato 4 = Annullato (quando l'ordine è parzialmente eseguito, viene restituito Canceled che significa (tag=151), LeavesQty è annullato e non sarà successivamente eseguito). C = Scaduto |
| 55 | Symbol | No | Qualsiasi valore valido | Long | Gli identificatori degli strumenti sono forniti da Spotware. |
| 54 | Side | No | 1 o 2 | Intero | 1 = Acquista 2 = Vendi |
| 60 | TransactTime | No | Qualsiasi valore valido | Timestamp | Ora di esecuzione di una transazione rappresentata dal messaggio Execution Report (in UTC). |
| 6 | AvgPx | No | Qualsiasi valore valido | Intero | Un prezzo al quale l'operazione è stata eseguita. Per un ordine IOC o GTD, questo è il prezzo medio ponderato in base al volume (VWAP) dell'ordine eseguito. |
| 38 | OrderQty | No | Qualsiasi valore valido | Qty | Questo rappresenta il numero di azioni per i titoli azionari o, in base alla convenzione normale, il numero di contratti per opzioni, futures, obbligazioni convertibili, ecc. Prima di FIX 4.2, il tipo di questo campo era "Integer". |
| 151 | LeavesQty | No | Qualsiasi valore valido | Qty | Il numero di ordini ancora da eseguire. I valori possibili sono compresi tra 0 (completamente eseguito) e OrderQty (parzialmente eseguito). |
| 14 | CumQty | No | Qualsiasi valore valido | Qty | Il numero totale di ordini che sono stati eseguiti. |
| 32 | LastQty | No | Qualsiasi valore valido | Qty | La quantità acquistata/venduta di ordini che sono stati eseguiti in questa (ultima) esecuzione. |
| 40 | OrdType | No | 1 o 2 | Char | 1 = Mercato 2 = Limite |
| 44 | Price | No | Qualsiasi valore valido | Prezzo | Se fornito in un messaggio New Order Single, viene ripetuto in questo messaggio Execution Report. |
| 99 | StopPx | No | Qualsiasi valore valido | Prezzo | Se fornito in un messaggio New Order Single, viene ripetuto in questo messaggio Execution Report. |
| 59 | TimeInForce | No | 1, 3 o 6 | Stringa | 1 = Good Till Cancel (GTC) 3 = Immediate or Cancel (IOC) 6 = Good Till Date (GTD) |
| 126 | ExpireTime | No | 20140215-07:24:55 | Timestamp | Se fornito in un messaggio New Order Single, viene ripetuto in questo messaggio Execution Report. |
| 58 | Text | No | Qualsiasi valore valido | Stringa | Ove possibile, un messaggio spiegherà l'Execution Report. |
| 103 | OrdRejReason | No | 0 | Intero | 0 = OrdRejReason.BROKER_EXCHANGE_OPTION |
| 721 | PosMaintRptID | No | Qualsiasi valore valido | Stringa | Un ID di posizione. |
| 494 | Designation | No | Qualsiasi valore valido | Stringa | Un'etichetta personalizzata dell'ordine del cliente. |
| 584 | MassStatusReqID | No | Qualsiasi valore valido | Stringa | Un ID univoco della richiesta di stato di massa assegnato dal cliente. |
| 1000 | AbsoluteTP | No | Qualsiasi valore valido | Prezzo | Un prezzo assoluto al quale il take profit sarà attivato. |
| 1001 | RelativeTP | No | Qualsiasi valore valido | Prezzo | Una distanza in pip dal prezzo di entrata al quale il take profit sarà attivato. |
| 1002 | AbsoluteSL | No | Qualsiasi valore valido | Prezzo | Un prezzo assoluto al quale lo stop loss sarà attivato. |
| 1003 | RelativeSL | No | Qualsiasi valore valido | Prezzo | Una distanza in pip dal prezzo di entrata al quale lo stop loss sarà attivato. |
| 1004 | TrailingSL | No | N o Y | Booleano | Indica se lo stop loss è trailing. N = Lo stop loss non è trailing. Y = Lo stop loss è trailing. |
| 1005 | TriggerMethodSL | No | Qualsiasi valore valido | Intero | Un metodo di attivazione indicato dello stop loss. 1 = Lo stop loss sarà attivato dal lato dell'operazione. 2 = Lo stop loss sarà attivato dal lato opposto (ask per le posizioni di acquisto e bid per le posizioni di vendita). 3 = Lo stop loss sarà attivato dopo due tick consecutivi secondo il lato dell'operazione. 4 = Lo stop loss sarà attivato dopo due tick consecutivi secondo il lato opposto (il secondo tick ask per le posizioni di acquisto e il secondo tick bid per le posizioni di vendita). |
| 1006 | GuaranteedSL | No | N o Y | Booleano | Indica se lo stop loss è garantito. N = Lo stop loss non è garantito. Y = Lo stop loss è garantito. |
Standard Trailer | Sì |
Vedi un esempio di New Order Single alla fine della guida.
Business Message Reject (MsgType(35)=j)¶
Questo tipo di messaggio viene inviato quando il sistema non è in grado di elaborare una richiesta di sottoscrizione o un ordine non può essere eseguito.
| Tag | Nome del campo | Obbligatorio | Valore | Formato FIX | Commenti |
|---|---|---|---|---|---|
Standard Header | Sì | ||||
| 45 | RefSeqNum | No | Qualsiasi valore valido | Intero | MsgSeqNum (tag=34) del messaggio rifiutato. |
| 372 | RefMsgType | No | Qualsiasi valore valido | Stringa | MsgType (tag=35) del messaggio FIX a cui si fa riferimento. |
| 379 | BusinessRejectRefID | No | Qualsiasi valore valido | Stringa | Valore del campo ID a livello di business nel messaggio a cui si fa riferimento. Richiesto a meno che il campo ID corrispondente non sia stato specificato. |
| 380 | BusinessRejectReason | Sì | 0 | Intero | Un codice per identificare il motivo di un messaggio Business Message Reject. 0 = Altro |
| 58 | Text | No | Qualsiasi valore valido | Stringa | Ove possibile, un messaggio per spiegare il motivo del rifiuto. |
Standard Trailer | Sì |
Vedi un esempio di messaggio Business Message Reject qui sotto.
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 | Nome del campo | Obbligatorio | Valore | Formato FIX | Commenti |
|---|---|---|---|---|---|
Standard Header | Sì | ||||
| 710 | PosReqID | Sì | Qualsiasi valore valido | Stringa | Un ID di richiesta univoco (impostato dal cliente). |
| 721 | PosMaintRptID | No | Qualsiasi valore valido | Stringa | Un ID di posizione da richiedere. Se non impostato, verranno restituite tutte le posizioni aperte. |
Standard Trailer | Sì |
Vedi esempi di messaggi Request for Positions qui sotto.
Richiesta:
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|
Risposta:
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 | Nome del campo | Obbligatorio | Valore | Formato FIX | Commenti |
|---|---|---|---|---|---|
Standard Header | Sì | ||||
| 710 | PosReqID | Sì | Qualsiasi valore valido | Stringa | Un ID del messaggio Request for Positions. |
| 721 | PosMaintRptID | No | Qualsiasi valore valido | Stringa | Un ID di posizione, che non viene impostato se PosReqResult (tag=728) non è VALID_REQUEST. |
| 727 | TotalNumPosReports | Sì | Qualsiasi valore valido | Stringa | Il conteggio totale dei Position Reports in una sequenza quando PosReqResult (tag=728) è VALID_REQUEST, altrimenti = 0. |
| 728 | PosReqResult | Sì | 0 o 2 | Stringa | 0 = Richiesta valida 2 = Non sono state trovate posizioni aperte che corrispondono ai criteri. |
| 55 | Symbol | No | Qualsiasi valore valido | Stringa | Un simbolo per il quale viene preparato il Position Report corrente. Non viene impostato se PosReqResult (tag=728) non è VALID_REQUEST. |
| 702 | NoPositions | No | 1 | Stringa | 1 quando PosReqResult (tag=728) è VALID_REQUEST, altrimenti non impostato. |
| 704 | LongQty | No | Qualsiasi valore valido | Stringa | Volume aperto della posizione in caso di lato dell'operazione di acquisto, uguale a 0 in caso di lato dell'operazione di vendita. Non impostato se PosReqResult (tag=728) non è VALID_REQUEST. |
| 705 | ShortQty | No | Qualsiasi valore valido | Stringa | Volume aperto della posizione in caso di lato dell'operazione di vendita, uguale a 0 in caso di lato dell'operazione di acquisto. Non impostato se PosReqResult (tag=728) non è VALID_REQUEST. |
| 730 | SettlPrice | No | Qualsiasi valore valido | Stringa | Un prezzo medio del volume aperto nel Position Report corrente. |
| 1000 | AbsoluteTP | No | Qualsiasi valore valido | Prezzo | Un prezzo assoluto al quale il take profit sarà attivato. |
| 1002 | AbsoluteSL | No | Qualsiasi valore valido | Prezzo | Un prezzo assoluto al quale lo stop loss sarà attivato. |
| 1004 | TrailingSL | No | Qualsiasi valore valido | Booleano | Indica se lo stop loss è trailing. N = Lo stop loss non è trailing. Y = Lo stop loss è trailing. |
| 1005 | TriggerMethodSL | No | Qualsiasi valore valido | Intero | Un metodo di attivazione indicato dello stop loss. 1 = Lo stop loss sarà attivato dal lato dell'operazione. 2 = Lo stop loss sarà attivato dal lato opposto (ask per le posizioni di acquisto e bid per le posizioni di vendita). 3 = Lo stop loss sarà attivato dopo due tick consecutivi secondo il lato dell'operazione. 4 = Lo stop loss sarà attivato dopo due tick consecutivi secondo il lato opposto (secondo tick ask per le posizioni di acquisto e secondo tick bid per le posizioni di vendita). |
| 1006 | GuaranteedSL | No | Qualsiasi valore valido | Booleano | Indica se lo stop loss è garantito. N = Lo stop loss non è garantito. Y = Lo stop loss è garantito. |
Standard Trailer | Sì |
Order Cancel Request (MsgType(35)=F)¶
| Tag | Nome del campo | Obbligatorio | Valore | Formato FIX | Commenti |
|---|---|---|---|---|---|
Standard Header | Sì | ||||
| 41 | OrigClOrdID | Sì | Qualsiasi valore valido | Stringa | Un identificatore univoco dell'ordine che sta per essere annullato, assegnato dal cliente. |
| 37 | OrderID | No | Qualsiasi valore valido | Stringa | Un ID univoco dell'ordine restituito dal cServer. |
| 11 | ClOrdID | Sì | Qualsiasi valore valido | Stringa | Un ID univoco della richiesta di annullamento assegnato dal cliente. |
Standard Trailer | Sì |
Vedi esempi di messaggi Order Cancel Request qui sotto.
Richiesta:
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|
Risposta (successo):
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|
Risposta (fallita):
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 | Nome del campo | Obbligatorio | Valore | Formato FIX | Commenti |
|---|---|---|---|---|---|
Standard Header | Sì | ||||
| 37 | OrderID | Sì | Qualsiasi valore valido | Stringa | Un identificatore univoco dell'ordine che il sistema non ha potuto annullare. |
| 11 | ClOrdID | Sì | Qualsiasi valore valido | Stringa | Un identificatore univoco dell'Order Cancel Request. |
| 41 | OrigClOrdID | No | Qualsiasi valore valido | Stringa | Un identificatore univoco dell'ordine che si è tentato di annullare, assegnato dal cliente. |
| 39 | OrdStatus | Sì | Qualsiasi valore valido | Char | 0 = Nuovo 1 = Parzialmente eseguito 2 = Eseguito 8 = Rifiutato 4 = Annullato (quando l'ordine è parzialmente eseguito viene restituito Canceled che significa (tag=151), LeavesQty è annullato e non sarà successivamente eseguito). C = Scaduto |
| 434 | CxlRejResponseTo | Sì | 1 o 2 | Char | 1 = Rifiuta l'annullamento dell'ordine. 2 = Rifiuta la modifica dell'ordine da un altro terminale. |
| 58 | Text | No | Qualsiasi valore valido | Stringa | Un ordine è in fase di esecuzione. |
Standard Trailer | Sì |
Vedi un esempio di messaggio Order Cancel Reject qui sotto.
Risposta:
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 | Nome del campo | Obbligatorio | Valore | Formato FIX | Commenti |
|---|---|---|---|---|---|
Standard Header | Sì | ||||
| 41 | OrigClOrdID | Sì | Any valid value | Stringa | Un identificatore univoco dell'ordine che sta per essere modificato, assegnato dal cliente. |
| 37 | OrderID | No | Qualsiasi valore valido | Stringa | Un ID univoco dell'ordine originale che sta per essere modificato, assegnato dal server. Un metodo preferibile da utilizzare. |
| 11 | ClOrdID | Sì | Qualsiasi valore valido | Stringa | Un ID univoco della richiesta di modifica assegnato dal cliente. |
| 38 | OrderQty | Sì | Qualsiasi valore valido | Qty | Una quantità esistente o nuova specificata per sostituire il vecchio valore. |
| 44 | Price | No | Qualsiasi valore valido | Prezzo | Un prezzo limite esistente o nuovo specificato per sostituire il vecchio valore. Valido solo per gli ordini limite. |
| 99 | StopPx | No | Qualsiasi valore valido | Prezzo | Un prezzo di stop esistente o nuovo specificato per sostituire il vecchio valore. Valido solo per gli ordini stop. |
| 126 | ExpireTime | No | 20140215-07:24:55 | Timestamp | Tempo di scadenza esistente o nuovo specificato. Valido solo per gli ordini in sospeso. |
Standard Trailer | Sì |
Vedi esempi di messaggi Order Cancel/Replace Request qui sotto.
Richiesta:
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|
Risposta (successo):
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|
Risposta (fallita):
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 | Nome del campo | Obbligatorio | Valore | Formato FIX | Commenti |
|---|---|---|---|---|---|
Standard Header | Sì | ||||
| 262 | MDReqID | Sì | Qualsiasi valore valido | Stringa | Deve fare riferimento a MDReqID (tag=262) della richiesta. |
| 281 | MDReqRejReason | No | Qualsiasi valore valido | Intero | 0 = Simbolo sconosciuto 4 = SubscriptionRequestType (tag=263) non supportato 5 = MarketDepth (tag=264) non supportato |
Standard Trailer | Sì |
Vedi esempi di messaggi Market Data Request Reject qui sotto.
Richiesta:
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|
Rifiuto:
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|
Richiesta:
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|
Rifiuto:
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 | Nome del campo | Obbligatorio | Valore | Formato FIX | Commenti |
|---|---|---|---|---|---|
Standard Header | Sì | ||||
| 320 | SecurityReqID | Sì | Qualsiasi valore valido | Stringa | Un ID univoco della Security Definition Request. |
| 559 | SecurityListRequestType | Sì | 0 | Intero | Il tipo di Security List Request che viene effettuata. Supportato solo 0 = Symbol (tag=55). |
| 55 | Symbol | No | Qualsiasi valore valido | Intero | Un ID per risolvere il nome del simbolo. |
Standard Trailer | Sì |
Vedi esempi di messaggi Security List Request qui sotto.
Richiesta:
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|
Risposta:
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 | Nome del campo | Obbligatorio | Valore | Formato FIX | Commenti |
|---|---|---|---|---|---|
Standard Header | Sì | ||||
| 320 | SecurityReqID | Sì | Qualsiasi valore valido | Stringa | Un ID univoco della Security Definition Request. |
| 322 | SecurityResponseID | Sì | Qualsiasi valore valido | Stringa | Un ID univoco della risposta Security List. |
| 560 | SecurityRequestResult | Sì | 0 | Intero | Risultati restituiti al messaggio Security Request. I valori validi sono: 0 = Richiesta valida. 1 = Richiesta non valida o non supportata. 2 = Non sono stati trovati strumenti che corrispondono ai criteri di selezione. 3 = Non autorizzato a recuperare i dati dello strumento. 4 = Dati dello strumento temporaneamente non disponibili. 5 = Richiesta di dati dello strumento non supportata. |
| 146 | NoRelatedSym | No | Qualsiasi valore valido | Intero | Specifica il numero di simboli (strumenti) ripetuti. |
| 55 | Symbol | No | Qualsiasi valore valido | Intero | Gli identificatori degli strumenti sono forniti da Spotware. |
| 1007 | SymbolName | No | Qualsiasi valore valido | Stringa | Un nome di simbolo. |
| 1008 | SymbolDigits | No | Qualsiasi valore valido | Intero | Cifre del simbolo. Valori possibili da 0 a 5. |
Standard Trailer | Sì |
Vedi un esempio di messaggio Security List qui sotto.
Risposta:
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|