Moteur FIX de cTrader (Règles d'engagement)¶
Introduction ¶
Portée ¶
Cette spécification est destinée à servir aux développeurs de logiciels comme guide d'implémentation pour l'API du moteur FIX de cTrader.
Version FIX ¶
cTrader prend en charge la version 4.4 de FIX. Pour plus d'informations sur cette version, reportez-vous à ces spécifications.
Connectivité ¶
Type de connexion ¶
Une connexion au moteur FIX de cTrader est disponible via Internet, un tunnel VPN ou une interconnexion directe avec nos installations de centre de données au Royaume-Uni. Contactez-nous pour plus de détails.
Réinitialisation du numéro de séquence ¶
Tous les côtés d'une session FIX doivent avoir les numéros de séquence réinitialisés lors de l'établissement d'une session FIX. Voir le message de connexion.
Messages ¶
Comme défini dans le protocole FIX, le serveur FIX de cTrader utilise deux niveaux de données différents (système et application). Notez qu'il s'agit d'un ensemble minimum de messages requis pour prendre en charge les flux de travail nécessaires. Il est sujet à changement au fil du temps à mesure que les besoins commerciaux et les normes FIX évoluent.
Moteur FIX de cTrader ¶
Messages système¶
- Heartbeat (Client ↔ cTrader)
- Test Request (Client ↔ cTrader)
- Logon (Client → cTrader)
- Logout (Client → cTrader)
- Resend Request (Client ↔ cTrader)
- Reject (Client ↔ cTrader)
- Sequence Reset (Client ↔ cTrader)
Messages d'application¶
- 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)
En-tête standard ¶
Chaque message administratif ou d'application est précédé d'un en-tête standard. Les en-têtes identifient un type de message, sa longueur, sa destination, son numéro de séquence, son point d'origine et son heure.
Tous les messages envoyés à cTrader doivent avoir un en-tête standard avec les champs suivants :
| Tag | Nom du champ | Requis | Valeur | Format FIX | Commentaires |
|---|---|---|---|---|---|
| 8 | BeginString | Oui | FIX.4.4 | Chaîne de caractères | Toujours non crypté, doit être le premier champ d'un message. |
| 9 | BodyLength | Oui | Toute valeur valide | Entier | Longueur du corps du message. Toujours non crypté, doit être le deuxième champ d'un message. |
| 35 | MsgType | Oui | A | Chaîne de caractères | Un type de message. Toujours non crypté, doit être le troisième champ d'un message. |
| 49 | SenderCompID | Oui | Toute valeur valide | Chaîne de caractères | Un ID de la partie commerciale au format suivant : <Environment>.<BrokerUID>.<Trader Login>, où Environment est une détermination du serveur, comme démo ou live ; BrokerUID est fourni par cTrader et Trader Login est un identifiant numérique du compte du trader. |
| 56 | TargetCompID | Oui | CSERVER | Chaîne de caractères | Une cible de message. The valid value is CSERVER. |
| 57 | TargetSubID | Oui | QUOTE ou TRADE | Chaîne de caractères | Un qualificateur de session supplémentaire. Les valeurs possibles sont QUOTE et TRADE. |
| 50 | SenderSubID | Non | Toute valeur valide | Chaîne de caractères | La valeur assignée utilisée pour identifier un émetteur de message spécifique. Doit être défini sur QUOTE si TargetSubID=QUOTE. |
| 34 | MsgSeqNum | Oui | 1 | Entier | Un numéro de séquence du message. |
| 52 | SendingTime | Oui | 20131129-15:40:08.155 | UTCTimestamp | Heure de transmission du message toujours exprimée en UTC (Temps Universel Coordonné, également connu sous le nom de GMT). |
Fin standard ¶
Chaque message, administratif ou d'application, se termine par une fin standard. La fin est utilisée pour séparer les messages et contient une représentation à trois chiffres de la valeur CheckSum (tag=10).
| Tag | Nom du champ | Requis | Valeur | Format FIX | Commentaires |
|---|---|---|---|---|---|
| 10 | CheckSum | Oui | 054 | Chaîne de caractères | Une somme de contrôle simple à trois octets. Toujours le dernier champ d'un message (par exemple, sert), avec le <SOH> final comme délimiteur de fin de message. Il est défini comme trois caractères (toujours non cryptés). |
Messages de session ¶
Heartbeat (MsgType(35)=0)¶
Les messages de pulsation sont envoyés à la fois par cTrader et l'application cliente pour confirmer une connexion active.
L'application cliente du fournisseur transmet une pulsation récurrente à l'intervalle défini par le champ HeartBtInt (tag=108) dans un message de connexion, ou en réponse à un message de demande de test.
| Tag | Nom du champ | Requis | Valeur | Format FIX | Commentaires |
|---|---|---|---|---|---|
Standard Header | Oui | ||||
| 112 | TestReqID | Non | Toute valeur valide | Chaîne de caractères | Si une pulsation est le résultat du message de demande de test, TestReqID est requis. |
Standard Trailer | Oui |
Test Request (MsgType(35)=1)¶
Il force une pulsation du récepteur d'une demande. Une réponse est envoyée du système récepteur sous forme de message de pulsation contenant TestReqID.
| Tag | Nom du champ | Requis | Valeur | Format FIX | Commentaires |
|---|---|---|---|---|---|
Standard Header | Oui | ||||
| 112 | TestReqID | Oui | Toute valeur valide | Chaîne de caractères | Un ID de message de pulsation. TestReqID doit être incrémental. |
Standard Trailer | Oui |
Logon (bidirectional) (MsgType(35)=A)¶
Un message de connexion est envoyé depuis l'application côté client pour commencer une session FIX cTrader, et une réponse est envoyée par cTrader à l'application côté client. Une fois la connexion terminée, les flux de cotations et de transactions peuvent se poursuivre pour la durée de vie de la session.
Si un message de connexion invalide est reçu par cTrader (avec des champs invalides), cTrader envoie un message de déconnexion en réponse.
| Tag | Nom du champ | Requis | Valeur | Format FIX | Commentaires |
|---|---|---|---|---|---|
Standard Header | Oui | ||||
| 98 | EncryptMethod | Oui | 0 | Entier | Définit un schéma de cryptage de message. Actuellement, seule la sécurité au niveau du transport est prise en charge. La valeur valide est 0 = NONE_OTHER (le cryptage n'est pas utilisé). |
| 108 | HeartBtInt | Oui | Toute valeur valide | Entier | Un intervalle de pulsation en secondes. La valeur est définie dans le fichier config.properties (côté client) comme SERVER.POLLING.INTERVAL. La valeur d'intervalle par défaut est de 30 secondes. Si HeartBtInt est défini sur 0, aucun message de pulsation n'est requis. |
| 141 | ResetSeqNumFlag | Non | Y | Booléen | Tous les côtés de la session FIX doivent avoir les numéros de séquence réinitialisés. La valeur valide est Y (réinitialisation). |
| 553 | Username | Non | Toute valeur valide | Chaîne de caractères | Un ID utilisateur numérique. L'utilisateur est lié à la valeur SenderCompID (l'organisation de l'utilisateur, tag=49). |
| 554 | Password | Non | Toute valeur valide | Chaîne de caractères | Un mot de passe utilisateur. |
Standard Trailer | Oui |
Remarque
Le champ Username (tag=553) doit contenir une valeur de connexion trader numérique, tandis que SenderCompID (tag=49) doit contenir un environnement, BrokerUID et une connexion trader délimités par un point (par exemple, live.theBroker.12345).
Voir les exemples de messages de connexion ci-dessous.
Requête :
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|
Réponse (réussie) :
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|
Réponse (échec) :
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 message de déconnexion est envoyé depuis l'application client pour demander la fin d'une session avec cTrader et comme réponse par cTrader. Une déconnexion de session se produit en réponse à l'envoi d'un message de déconnexion par un participant du marché à cTrader. Avant de mettre fin à la session, cTrader annulera tous les prix qui sont encore activement diffusés vers la partie demandeuse. Si un message de connexion invalide est reçu par cTrader (avec des champs invalides), cTrader envoie un message de déconnexion en réponse avec les détails de l'erreur dans le champ Text (tag=58).
| Tag | Nom du champ | Requis | Valeur | Format FIX | Commentaires |
|---|---|---|---|---|---|
Standard Header | Oui | ||||
| 58 | Text | Non | Toute valeur valide | Chaîne de caractères | Détails du rejet de connexion. Utilisé uniquement pour les messages de cTrader vers le client en réponse à un message de connexion invalide. |
Standard Trailer | Oui |
Voir les exemples de messages de déconnexion ci-dessous.
Requête :
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|
Réponse :
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 message entrant/sortant est utilisé pour demander le renvoi d'un message (ou de messages), généralement lorsqu'un écart est détecté dans la numérotation séquentielle.
| Tag | Nom du champ | Requis | Valeur | Format FIX | Commentaires |
|---|---|---|---|---|---|
Standard Header | Oui | ||||
| 7 | BeginSeqNo | Oui | Toute valeur valide | Entier | Un numéro de séquence de message du premier enregistrement dans la plage à renvoyer. |
| 16 | EndSeqNo | Oui | Toute valeur valide | Entier | Un numéro de séquence de message du dernier enregistrement dans la plage à renvoyer. |
Standard Trailer | Oui |
Reject (bidirectional) (MsgType(35)=3)¶
Envoyé lorsque le message reçu ne peut pas être traité en raison d'une violation de règle au niveau de la session. Les messages refusés doivent être enregistrés et un incrément doit être appliqué au numéro de séquence entrant.
| Tag | Nom du champ | Requis | Valeur | Format FIX | Commentaires |
|---|---|---|---|---|---|
Standard Header | Oui | ||||
| 45 | RefSeqNum | Oui | Toute valeur valide | SeqNum | Un numéro de séquence du message référencé. |
| 58 | Text | Non | Toute valeur valide | Chaîne de caractères | Une chaîne de texte au format libre. |
| 354 | EncodedTextLen | Non | Toute valeur valide | Longueur | Longueur du champ EncodedText (caractères non-ASCII) en octets. |
| 355 | EncodedText | Non | Toute valeur valide | Données | Une représentation du champ Text (tag=58), encodée en utilisant le format spécifié dans le champ MessageEncoding (tag=347) (de l'en-tête standard). Si la représentation ASCII est utilisée, elle doit également être spécifiée dans le champ Text (tag=58). |
| 371 | RefTagID | Non | Toute valeur valide | Entier | Un numéro de tag du champ FIX qui a initié le refus du message. |
| 372 | RefMsgType | Non | Toute valeur valide | Chaîne de caractères | MsgType (tag=35) du message FIX référencé. |
| 373 | SessionRejectReason | Non | Toute valeur valide | Entier | Causes codées du rejet. Les valeurs valides sont : 0 = Numéro de tag invalide 1 = Tag requis manquant 2 = Aucun tag défini pour ce type de message 3 = Tag non défini 4 = Pas de valeur pour le tag spécifié 5 = Valeur pour ce tag hors limites 6 = Format de données incorrect pour la valeur 7 = Problème de déchiffrement 8 = Erreur de signature 9 = Erreur de CompID 10 = Erreur de précision SendingTime 11 = MsgType invalide 12 = Erreur de validation XML 13 = Le tag est répété 14 = Le tag spécifié n'est pas dans le bon ordre 15 = Les champs du groupe répété ne sont pas dans le bon ordre 16 = Compte NumInGroup incorrect pour le groupe répété 17 = Délimiteur de champ (caractère SOH) inclus dans une valeur non-données |
Standard Trailer | Oui |
Sequence Reset (MsgType(35)=4)¶
Un message entrant/sortant ne doit pas être utilisé au niveau de l'application. Un message de réinitialisation de séquence ne peut qu'augmenter un numéro de séquence.
| Tag | Nom du champ | Requis | Valeur | Format FIX | Commentaires |
|---|---|---|---|---|---|
Standard Header | Oui | ||||
| 123 | GapFillFlag | Non | Yes ou No | Chaîne de caractères | Indique qu'un message de réinitialisation de séquence remplace des messages administratifs ou d'application qui ne seront pas renvoyés. |
| 36 | NewSeqNo | Oui | 1 | Entier | Un nouveau numéro de séquence. |
Standard Trailer | Oui |
Messages d'application ¶
Market Data Request (MsgType(35)=V)¶
| Tag | Nom du champ | Requis | Valeur | Format FIX | Commentaires |
|---|---|---|---|---|---|
Standard Header | Oui | ||||
| 262 | MDReqID | Oui | Toute valeur valide | Chaîne de caractères | Un ID unique de demande de cotation. Un nouvel ID pour un nouvel abonnement, le même ID que celui utilisé précédemment pour une suppression d'abonnement. |
| 263 | SubscriptionRequestType | Oui | 1 ou 2 | Char | 1 = Instantané plus mises à jour (s'abonner). 2 = Désactiver la demande précédente d'instantané plus mises à jour (se désabonner). |
| 264 | MarketDepth | Oui | 0 ou 1 | Entier | Un livre complet sera fourni. 0 = Abonnement à la profondeur 1 = Abonnement au spot |
| 265 | MDUpdateType | Oui | Toute valeur valide | Entier | Seule la mise à jour incrémentielle est prise en charge. |
| 267 | NoMDEntryTypes | Oui | 2 | Entier | Toujours défini sur 2 (l'offre et la demande seront envoyées). |
| 269 | MDEntryType | Oui | 0 ou 1 | Char | Ce groupe répété contient une liste de tous les types d'entrées de données de marché que le demandeur souhaite recevoir. 0 = Bid 1 = Offer |
| 146 | NoRelatedSym | Oui | Toute valeur valide | Entier | Le nombre de symboles demandés. |
| 55 | Symbol | Oui | Toute valeur valide | Long | Les identifiants d'instruments sont fournis par Spotware. |
Standard Trailer | Oui |
Voir les exemples de messages de demande de données de marché ci-dessous.
Pour les Spots
Requête :
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|
Réponse :
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|
Pour les Profondeurs
Requête :
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|
Réponses :
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 | Nom du champ | Requis | Valeur | Format FIX | Commentaires |
|---|---|---|---|---|---|
Standard Header | Oui | ||||
| 262 | MDReqID | Oui | Toute valeur valide | Chaîne de caractères | L'ID de la demande de données de marché précédemment envoyée. |
| 55 | Symbol | Oui | Toute valeur valide | Long | Les identifiants d'instruments sont fournis par Spotware. |
| 268 | NoMDEntries | Oui | Toute valeur valide | Entier | Le nombre d'entrées suivantes. |
| 269 | MDEntryType | Non | 0 ou 1 | Char | Les valeurs valides sont : 0 = Vendeur 1 = Offre Requis uniquement lorsque NoMDEntries (tag=268) > 0. |
| 299 | QuoteEntryID | Non | Toute valeur valide | Chaîne de caractères | Une identification unique de la cotation en tant que partie de QuoteSet. |
| 270 | MDEntryPx | Non | 1.2345 | Prix | Un prix de l'entrée de données de marché. Requis uniquement lorsque NoMDEntries (tag=268) > 0. |
| 271 | MDEntrySize | Non | 500000 | Volume | Volume de l'entrée de données de marché. Requis uniquement lorsque NoMDEntries (tag=268) > 0. |
| 278 | MDEntryID | Non | Toute valeur valide | Chaîne de caractères | Un identifiant unique de l'entrée de données de marché. |
Standard Trailer | Oui |
Market Data Incremental Refresh (MsgType(35)=X)¶
| Tag | Nom du champ | Requis | Valeur | Format FIX | Commentaires |
|---|---|---|---|---|---|
Standard Header | Oui | ||||
| 262 | MDReqID | Oui | Toute valeur valide | Chaîne de caractères | L'ID de la demande de données de marché précédemment envoyée. |
| 268 | NoMDEntries | Oui | Toute valeur valide | Entier | Le nombre d'entrées suivantes. Ce groupe répétitif contient une liste de tous les types d'entrées de données de marché que le demandeur souhaite recevoir. |
| 279 | MDUpdateAction | Oui | 0 ou 2 | Char | Un type d'action de mise à jour des données de marché. Les valeurs valides sont : 0 = Nouveau 2 = Supprimer |
| 269 | MDEntryType | Non | 0 ou 1 | Char | Les valeurs valides sont : 0 = Vendeur 1 = Offre |
| 278 | MDEntryID | Oui | Toute valeur valide | Chaîne de caractères | Un ID de l'entrée de données de marché. |
| 55 | Symbol | Oui | Toute valeur valide | Long | Les identifiants d'instruments sont fournis par Spotware. |
| 270 | MDEntryPx | Non | 1.2345 | Prix | Requis uniquement lorsque MDUpdateAction (tag=279) = 0. |
| 271 | MDEntrySize | Non | 10000 | Double | Requis uniquement lorsque MDUpdateAction (tag=279) = 0. |
Standard Trailer | Oui |
New Order Single (MsgType(35)=D)¶
Un message New Order Single a le format suivant.
| Tag | Nom du champ | Requis | Valeur | Format FIX | Commentaires |
|---|---|---|---|---|---|
Standard Header | Oui | ||||
| 11 | ClOrdID | Oui | Toute valeur valide | Chaîne de caractères | Un identifiant unique de l'ordre attribué par le client. |
| 55 | Symbol | Oui | Toute valeur valide | Long | Les identifiants d'instruments sont fournis par Spotware. |
| 54 | Side | Oui | 1 ou 2 | Entier | 1 = Buy 2 = Sell |
| 60 | TransactTime | Oui | Toute valeur valide | Horodatage | Heure de la demande générée par le client. |
| 38 | OrderQty | Oui | Toute valeur valide | Qté | Le nombre d'actions commandées. Cela représente le nombre d'actions pour les actions ou, selon la convention normale, le nombre de contrats pour les options, les contrats à terme, les obligations convertibles, etc. Une précision maximale est de 0,01. Avant FIX 4.2, le type de ce champ était "Integer". |
| 40 | OrdType | Oui | 1, 2 ou 3 | Char | 1 = Marché, l'ordre sera traité selon le schéma Immediate or Cancel (IOC) (TimeInForce, tag=59). 2 = Limite, l'ordre sera traité selon le schéma Good Till Cancel (GTC) (TimeInForce, tag=59). 3 = Stop, l'ordre sera traité selon le schéma Good Till Cancel (GTC) (TimeInForce, tag=59). |
| 44 | Price | Non | Toute valeur valide | Prix | Le pire prix client que le client acceptera. Requis uniquement lorsque OrdType (tag=40) = 2, auquel cas l'ordre ne sera pas exécuté à moins que ce prix puisse être atteint. |
| 99 | StopPx | Non | Toute valeur valide | Prix | Un prix qui déclenche l'ordre stop. Requis uniquement lorsque OrdType (tag=40) = 3, auquel cas l'ordre ne sera pas exécuté à moins que ce prix puisse être atteint. |
| 59 | TimeInForce | Non | 1, 3 or 6 | Chaîne de caractères | Déprécié, cette valeur sera ignorée. TimeInForce sera détecté automatiquement en fonction de OrdType (tag=40) et ExpireTime (tag=126) : 1 = Good Till Cancel (GTC), sera utilisé uniquement pour les ordres limit et stop (OrdType, tag=40) uniquement si ExpireTime (tag=126) n'est pas défini. 3 = Immediate or Cancel (IOC), sera utilisé uniquement pour les ordres de marché (OrdType, tag=40). 6 = Good Till Date (GTD), sera utilisé uniquement pour les ordres limit et stop (OrdType, tag=40) uniquement si ExpireTime (tag=126) est défini. |
| 126 | ExpireTime | Non | 20140215-07:24:55 | Horodatage | Heure d'expiration au format "AAAAMMJJ-HH:MM:SS". Si assigné, l'ordre sera traité selon le schéma GTD (TimeInForce : GTD). |
| 721 | PosMaintRptID | Non | Toute valeur valide | Chaîne de caractères | Un ID de position où cet ordre doit être placé. S'il n'est pas défini, une nouvelle position sera créée et son ID sera renvoyé dans le message Execution Report. Il ne peut être spécifié que pour les comptes couverts. |
| 494 | Designation | Non | Toute valeur valide | Chaîne de caractères | Une étiquette d'ordre personnalisée. |
Standard Trailer | Oui |
Voir les exemples de messages New Order Single ci-dessous.
Ordre de marché pour une nouvelle position
Requête :
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|
Réponses :
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|
Ordre de marché pour une position existante
Requête :
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|
Réponses :
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
Ordre limit pour une position existante
Requête :
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|
Réponse :
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|
Ordre stop pour une nouvelle position
Requête :
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|
Réponse :
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 message Order Status Request est utilisé par une institution pour générer un message de statut d'ordre en retour du trader. Pour une interaction correcte, il est très important d'avoir des identifiants d'ordre client uniques (ClOrdID) pour tous les ordres.
| Tag | Nom du champ | Requis | Valeur | Format FIX | Commentaires |
|---|---|---|---|---|---|
Standard Header | Oui | ||||
| 11 | ClOrdID | Oui | Toute valeur valide | Chaîne de caractères | Un identifiant unique de l'ordre attribué par le client. |
| 54 | Side | Non | 1 ou 2 | Entier | 1 = Buy 2 = Sell |
Standard Trailer | Oui |
Voir les exemples de messages Order Status Request ci-dessous.
Requête :
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|
Réponse :
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 message Order Mass Status Request demande le statut des ordres correspondant aux critères spécifiés dans la demande. La réponse sera renvoyée sous forme d'un certain nombre de messages Execution Report (un pour chaque ordre), ou sous forme d'un message Business Message Reject si aucun ordre n'est trouvé.
| Tag | Nom du champ | Requis | Valeur | Format FIX | Commentaires |
|---|---|---|---|---|---|
Standard Header | Oui | ||||
| 584 | MassStatusReqID | Oui | Toute valeur valide | Chaîne de caractères | Un ID unique de la demande de statut de masse attribué par le client. |
| 585 | MassStatusReqType | Oui | Toute valeur valide | Entier | 7 = Statut pour tous les ordres. Seule la valeur 7 est actuellement prise en charge. |
| 225 | IssueDate | Non | Toute valeur valide | Chaîne de caractères | Si défini, la réponse contiendra uniquement les ordres créés avant cette date. |
Standard Trailer | Oui |
Voir les exemples de messages Order Mass Status Request ci-dessous.
Requête :
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|
Réponse :
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 message Execution Report pour un ordre accepté a le format suivant.
| Tag | Nom du champ | Requis | Valeur | Format FIX | Commentaires |
|---|---|---|---|---|---|
Standard Header | Oui | ||||
| 37 | OrderID | Oui | Toute valeur valide | Chaîne de caractères | Un ID d'ordre cTrader. |
| 11 | ClOrdID | Non | Toute valeur valide | Chaîne de caractères | Un identifiant unique de l'ordre attribué par le client. |
| 911 | TotNumReports | Non | Toute valeur valide | Entier | Le nombre total de rapports renvoyés en réponse au message Order Mass Status Request. |
| 150 | ExecType | Oui | Toute valeur valide | Char | 0 = New 4 = Canceled 5 = Replace 8 = Rejected C = Expired F = Trade I = Order Status |
| 39 | OrdStatus | Oui | Toute valeur valide | Char | 0 = Nouveau 1 = Partiellement exécuté 2 = Exécuté 8 = Rejeté 4 = Annulé (lorsque l'ordre est partiellement exécuté, Canceled est renvoyé signifiant (tag=151), LeavesQty est annulé et ne sera pas exécuté ultérieurement). C = Expiré |
| 55 | Symbol | Non | Toute valeur valide | Long | Les identifiants d'instruments sont fournis par Spotware. |
| 54 | Side | Non | 1 ou 2 | Entier | 1 = Acheter 2 = Vendre |
| 60 | TransactTime | Non | Toute valeur valide | Horodatage | Heure d'exécution d'une transaction représentée par le message Execution Report (en UTC). |
| 6 | AvgPx | Non | Toute valeur valide | Entier | Un prix auquel la transaction a été exécutée. Pour un ordre IOC ou GTD, il s'agit du prix moyen pondéré par les volumes (PMPV) de l'ordre exécuté. |
| 38 | OrderQty | Non | Toute valeur valide | Qté | Cela représente le nombre d'actions pour les actions ou, selon la convention normale, le nombre de contrats pour les options, les contrats à terme, les obligations convertibles, etc. Avant FIX 4.2, le type de ce champ était "Integer". |
| 151 | LeavesQty | Non | Toute valeur valide | Qté | Le nombre d'ordres restant à exécuter. Les valeurs possibles sont comprises entre 0 (entièrement exécuté) et OrderQty (partiellement exécuté). |
| 14 | CumQty | Non | Toute valeur valide | Qté | Le nombre total d'ordres qui ont été exécutés. |
| 32 | LastQty | Non | Toute valeur valide | Qté | La quantité achetée/vendue d'ordres qui ont été exécutés lors de cette (dernière) exécution. |
| 40 | OrdType | Non | 1 ou 2 | Char | 1 = Marché 2 = Limite |
| 44 | Price | Non | Toute valeur valide | Prix | S'il est fourni dans un message New Order Single, il est répété dans ce message Execution Report. |
| 99 | StopPx | Non | Toute valeur valide | Prix | S'il est fourni dans un message New Order Single, il est répété dans ce message Execution Report. |
| 59 | TimeInForce | Non | 1, 3 ou 6 | Chaîne de caractères | 1 = Good Till Cancel (GTC) 3 = Immediate or Cancel (IOC) 6 = Good Till Date (GTD) |
| 126 | ExpireTime | Non | 20140215-07:24:55 | Horodatage | S'il est fourni dans un message New Order Single, il est répété dans ce message Execution Report. |
| 58 | Text | Non | Toute valeur valide | Chaîne de caractères | Dans la mesure du possible, un message expliquera l'Execution Report. |
| 103 | OrdRejReason | Non | 0 | Entier | 0 = OrdRejReason.BROKER_EXCHANGE_OPTION |
| 721 | PosMaintRptID | Non | Toute valeur valide | Chaîne de caractères | Un ID de position. |
| 494 | Designation | Non | Toute valeur valide | Chaîne de caractères | Une étiquette d'ordre personnalisée du client. |
| 584 | MassStatusReqID | Non | Toute valeur valide | Chaîne de caractères | Un identifiant unique de la demande de statut de masse attribué par le client. |
| 1000 | AbsoluteTP | Non | Toute valeur valide | Prix | Un prix absolu auquel le take profit sera déclenché. |
| 1001 | RelativeTP | Non | Toute valeur valide | Prix | Une distance en pips par rapport au cours d'entrée à laquelle le take profit sera déclenché. |
| 1002 | AbsoluteSL | Non | Toute valeur valide | Prix | Un prix absolu auquel le stop loss sera déclenché. |
| 1003 | RelativeSL | Non | Toute valeur valide | Prix | Une distance en pips par rapport au cours d'entrée à laquelle le stop loss sera déclenché. |
| 1004 | TrailingSL | Non | N ou Y | Booléen | Indique si le stop loss est suiveur. N = Le stop loss n'est pas suiveur. Y = Le stop loss est suiveur. |
| 1005 | TriggerMethodSL | Non | Toute valeur valide | Entier | Une méthode de déclenchement indiquée pour le stop loss. 1 = Le stop loss sera déclenché par le côté du trade. 2 = Le stop loss sera déclenché par le côté opposé (ask pour les positions d'achat et bid pour les positions de vente). 3 = Le stop loss sera déclenché après deux ticks consécutifs selon le côté du trade. 4 = Le stop loss sera déclenché après deux ticks consécutifs selon le côté opposé (le deuxième tick ask pour les positions d'achat et le deuxième tick bid pour les positions de vente). |
| 1006 | GuaranteedSL | Non | N ou Y | Booléen | Indique si le stop loss est garanti. N = Le stop loss n'est pas garanti. Y = Le stop loss est garanti. |
Standard Trailer | Oui |
Voir un exemple de New Order Single à la fin du guide.
Business Message Reject (MsgType(35)=j)¶
Ce type de message est envoyé lorsque le système ne peut pas traiter une demande d'abonnement ou qu'un ordre ne peut pas être exécuté.
| Tag | Nom du champ | Requis | Valeur | Format FIX | Commentaires |
|---|---|---|---|---|---|
Standard Header | Oui | ||||
| 45 | RefSeqNum | Non | Toute valeur valide | Entier | MsgSeqNum (tag=34) du message rejeté. |
| 372 | RefMsgType | Non | Toute valeur valide | Chaîne de caractères | MsgType (tag=35) du message FIX référencé. |
| 379 | BusinessRejectRefID | Non | Toute valeur valide | Chaîne de caractères | Valeur du champ ID au niveau commercial dans le message référencé. Requis sauf si le champ ID correspondant n'a pas été spécifié. |
| 380 | BusinessRejectReason | Oui | 0 | Entier | Un code pour identifier la raison d'un message Business Message Reject. 0 = Autre |
| 58 | Text | Non | Toute valeur valide | Chaîne de caractères | Si possible, un message pour expliquer la raison du rejet. |
Standard Trailer | Oui |
Voir un exemple de message Business Message Reject ci-dessous.
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 | Nom du champ | Requis | Valeur | Format FIX | Commentaires |
|---|---|---|---|---|---|
Standard Header | Oui | ||||
| 710 | PosReqID | Oui | Toute valeur valide | Chaîne de caractères | Un identifiant de demande unique (défini par le client). |
| 721 | PosMaintRptID | Non | Toute valeur valide | Chaîne de caractères | Un identifiant de position à demander. S'il n'est pas défini, toutes les positions ouvertes seront renvoyées. |
Standard Trailer | Oui |
Voir des exemples de messages Request for Positions ci-dessous.
Requête :
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|
Réponse :
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 | Nom du champ | Requis | Valeur | Format FIX | Commentaires |
|---|---|---|---|---|---|
Standard Header | Oui | ||||
| 710 | PosReqID | Oui | Toute valeur valide | Chaîne de caractères | Un identifiant du message Request for Positions. |
| 721 | PosMaintRptID | Non | Toute valeur valide | Chaîne de caractères | Un identifiant de position, qui n'est pas défini si PosReqResult (tag=728) n'est pas VALID_REQUEST. |
| 727 | TotalNumPosReports | Oui | Toute valeur valide | Chaîne de caractères | Le nombre total de Position Reports dans une séquence lorsque PosReqResult (tag=728) est VALID_REQUEST, sinon = 0. |
| 728 | PosReqResult | Oui | 0 ou 2 | Chaîne de caractères | 0 = Demande valide 2 = Aucune position ouverte correspondant aux critères n'a été trouvée. |
| 55 | Symbol | Non | Toute valeur valide | Chaîne de caractères | Un symbole pour lequel le Position Report actuel est préparé. Il n'est pas défini si PosReqResult (tag=728) n'est pas VALID_REQUEST. |
| 702 | NoPositions | Non | 1 | Chaîne de caractères | 1 lorsque PosReqResult (tag=728) est VALID_REQUEST, sinon non défini. |
| 704 | LongQty | Non | Toute valeur valide | Chaîne de caractères | Volume ouvert de la position en cas de côté achat du trade, égal à 0 en cas de côté vente du trade. Non défini si PosReqResult (tag=728) n'est pas VALID_REQUEST. |
| 705 | ShortQty | Non | Toute valeur valide | Chaîne de caractères | Volume ouvert de la position en cas de côté vente du trade, égal à 0 en cas de côté achat du trade. Non défini si PosReqResult (tag=728) n'est pas VALID_REQUEST. |
| 730 | SettlPrice | Non | Toute valeur valide | Chaîne de caractères | Un prix moyen du volume ouvert dans le Position Report actuel. |
| 1000 | AbsoluteTP | Non | Toute valeur valide | Prix | Un prix absolu auquel le take profit sera déclenché. |
| 1002 | AbsoluteSL | Non | Toute valeur valide | Prix | Un prix absolu auquel le stop loss sera déclenché. |
| 1004 | TrailingSL | Non | Toute valeur valide | Booléen | Indique si le stop loss est suiveur. N = Le stop loss n'est pas suiveur. Y = Le stop loss est suiveur. |
| 1005 | TriggerMethodSL | Non | Toute valeur valide | Entier | Une méthode de déclenchement indiquée pour le stop loss. 1 = Le stop loss sera déclenché par le côté du trade. 2 = Le stop loss sera déclenché par le côté opposé (ask pour les positions d'achat et bid pour les positions de vente). 3 = Le stop loss sera déclenché après deux ticks consécutifs selon le côté du trade. 4 = Le stop loss sera déclenché après deux ticks consécutifs selon le côté opposé (deuxième tick ask pour les positions d'achat et deuxième tick bid pour les positions de vente). |
| 1006 | GuaranteedSL | Non | Toute valeur valide | Booléen | Indique si le stop loss est garanti. N = Le stop loss n'est pas garanti. Y = Le stop loss est garanti. |
Standard Trailer | Oui |
Order Cancel Request (MsgType(35)=F)¶
| Tag | Nom du champ | Requis | Valeur | Format FIX | Commentaires |
|---|---|---|---|---|---|
Standard Header | Oui | ||||
| 41 | OrigClOrdID | Oui | Toute valeur valide | Chaîne de caractères | Un identifiant unique de l'ordre qui va être annulé, attribué par le client. |
| 37 | OrderID | Non | Toute valeur valide | Chaîne de caractères | Un identifiant unique de l'ordre renvoyé par cServer. |
| 11 | ClOrdID | Oui | Toute valeur valide | Chaîne de caractères | Un identifiant unique de la demande d'annulation attribué par le client. |
Standard Trailer | Oui |
Voir des exemples de messages Order Cancel Request ci-dessous.
Requête :
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|
Réponse (réussie) :
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|
Réponse (échec) :
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 | Nom du champ | Requis | Valeur | Format FIX | Commentaires |
|---|---|---|---|---|---|
Standard Header | Oui | ||||
| 37 | OrderID | Oui | Toute valeur valide | Chaîne de caractères | Un identifiant unique de l'ordre que le système n'a pas pu annuler. |
| 11 | ClOrdID | Oui | Toute valeur valide | Chaîne de caractères | Un identifiant unique de l'Order Cancel Request. |
| 41 | OrigClOrdID | Non | Toute valeur valide | Chaîne de caractères | Un identifiant unique de l'ordre qu'on a tenté d'annuler, attribué par le client. |
| 39 | OrdStatus | Oui | Toute valeur valide | Char | 0 = Nouveau 1 = Partiellement exécuté 2 = Exécuté 8 = Rejeté 4 = Annulé (lorsque l'ordre est partiellement exécuté, Canceled est renvoyé signifiant (tag=151), LeavesQty est annulé et ne sera pas exécuté ultérieurement). C = Expiré |
| 434 | CxlRejResponseTo | Oui | 1 ou 2 | Char | 1 = Rejeter l'annulation de l'ordre. 2 = Rejeter la modification de l'ordre depuis un autre terminal. |
| 58 | Text | Non | Toute valeur valide | Chaîne de caractères | Un ordre est en cours d'exécution. |
Standard Trailer | Oui |
Voir un exemple de message Order Cancel Reject ci-dessous.
Réponse :
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 | Nom du champ | Requis | Valeur | Format FIX | Commentaires |
|---|---|---|---|---|---|
Standard Header | Oui | ||||
| 41 | OrigClOrdID | Oui | Any valid value | Chaîne de caractères | Un identifiant unique de l'ordre qui va être modifié, attribué par le client. |
| 37 | OrderID | Non | Toute valeur valide | Chaîne de caractères | Un identifiant unique de l'ordre original qui va être modifié, attribué par le serveur. Une méthode préférable à utiliser. |
| 11 | ClOrdID | Oui | Toute valeur valide | Chaîne de caractères | Un identifiant unique de la demande de modification attribué par le client. |
| 38 | OrderQty | Oui | Toute valeur valide | Qté | Une quantité existante ou nouvellement spécifiée pour remplacer l'ancienne valeur. |
| 44 | Price | Non | Toute valeur valide | Prix | Un cours limite existant ou nouvellement spécifié pour remplacer l'ancienne valeur. Valable uniquement pour les ordres limites. |
| 99 | StopPx | Non | Toute valeur valide | Prix | Un cours stop existant ou nouvellement spécifié pour remplacer l'ancienne valeur. Valable uniquement pour les ordres stop. |
| 126 | ExpireTime | Non | 20140215-07:24:55 | Horodatage | Heure d'expiration existante ou nouvellement spécifiée. Valable uniquement pour les ordres en cours. |
Standard Trailer | Oui |
Voir des exemples de messages Order Cancel/Replace Request ci-dessous.
Requête :
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|
Réponse (réussie) :
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|
Réponse (échec) :
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 | Nom du champ | Requis | Valeur | Format FIX | Commentaires |
|---|---|---|---|---|---|
Standard Header | Oui | ||||
| 262 | MDReqID | Oui | Toute valeur valide | Chaîne de caractères | Doit faire référence à MDReqID (tag=262) de la demande. |
| 281 | MDReqRejReason | Non | Toute valeur valide | Entier | 0 = Symbole inconnu 4 = SubscriptionRequestType (tag=263) non pris en charge 5 = MarketDepth (tag=264) non pris en charge |
Standard Trailer | Oui |
Voir des exemples de messages Market Data Request Reject ci-dessous.
Requête :
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|
Rejet :
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|
Requête :
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|
Rejet :
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 | Nom du champ | Requis | Valeur | Format FIX | Commentaires |
|---|---|---|---|---|---|
Standard Header | Oui | ||||
| 320 | SecurityReqID | Oui | Toute valeur valide | Chaîne de caractères | Un identifiant unique de la Security Definition Request. |
| 559 | SecurityListRequestType | Oui | 0 | Entier | Le type de Security List Request effectué. Seul 0 = Symbol (tag=55) est pris en charge. |
| 55 | Symbol | Non | Toute valeur valide | Entier | Un identifiant pour résoudre le nom du symbole. |
Standard Trailer | Oui |
Voir des exemples de messages Security List Request ci-dessous.
Requête :
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|
Réponse :
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 | Nom du champ | Requis | Valeur | Format FIX | Commentaires |
|---|---|---|---|---|---|
Standard Header | Oui | ||||
| 320 | SecurityReqID | Oui | Toute valeur valide | Chaîne de caractères | Un identifiant unique de la Security Definition Request. |
| 322 | SecurityResponseID | Oui | Toute valeur valide | Chaîne de caractères | Un identifiant unique de la réponse Security List. |
| 560 | SecurityRequestResult | Oui | 0 | Entier | Résultats renvoyés au message Security Request. Les valeurs valides sont : 0 = Demande valide. 1 = Demande invalide ou non prise en charge. 2 = Aucun instrument correspondant aux critères de sélection n'a été trouvé. 3 = Non autorisé à récupérer les données de l'instrument. 4 = Données de l'instrument temporairement indisponibles. 5 = Demande de données d'instrument non prise en charge. |
| 146 | NoRelatedSym | Non | Toute valeur valide | Entier | Spécifie le nombre de symboles (instruments) répétés. |
| 55 | Symbol | Non | Toute valeur valide | Entier | Les identifiants d'instruments sont fournis par Spotware. |
| 1007 | SymbolName | Non | Toute valeur valide | Chaîne de caractères | Un nom de symbole. |
| 1008 | SymbolDigits | Non | Toute valeur valide | Entier | Décimales du symbole. Valeurs possibles de 0 à 5. |
Standard Trailer | Oui |
Voir un exemple de message Security List ci-dessous.
Réponse :
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|