Aller au contenu

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|