Saltar a contenido

Motor FIX de cTrader (Reglas de Compromiso)

Introducción

Alcance

Esta especificación está destinada a servir a los desarrolladores de software como una guía de implementación para la API del motor FIX de cTrader.

Versión FIX

cTrader admite la versión 4.4 de FIX. Para obtener más información sobre esta versión, consulte estas especificaciones.

Conectividad

Tipo de conexión

La conexión al motor FIX de cTrader está disponible a través de Internet, un túnel VPN o una conexión cruzada a nuestras instalaciones de centro de datos en el Reino Unido. Contáctenos para obtener más detalles.

Reinicio del número de secuencia

Todos los lados de una sesión FIX deben tener los números de secuencia reiniciados al establecer una sesión FIX. Consulte el mensaje de inicio de sesión.

Mensajes

Como se define en el protocolo FIX, el servidor FIX de cTrader utiliza dos niveles de datos diferentes (sistema y aplicación). Tenga en cuenta que este es un conjunto mínimo de mensajes necesarios para admitir los flujos de trabajo necesarios. Está sujeto a cambios con el tiempo a medida que evolucionan tanto las necesidades comerciales como los estándares FIX.

Motor FIX de cTrader

Mensajes del sistema

  • Heartbeat (Cliente ↔ cTrader)
  • Test Request (Cliente ↔ cTrader)
  • Logon (Cliente → cTrader)
  • Logout (Cliente → cTrader)
  • Resend Request (Cliente ↔ cTrader)
  • Reject (Cliente ↔ cTrader)
  • Sequence Reset (Cliente ↔ cTrader)

Mensajes de aplicación

  • Market Data Request (Cliente → cTrader)
  • Market Data Snapshot/Full Refresh (Cliente ← cTrader)
  • Market Data Incremental Refresh (Cliente ← cTrader)
  • New Order Single (Cliente → cTrader)
  • Order Status Request (Cliente → cTrader)
  • Order Mass Status Request (Cliente → cTrader)
  • Execution Report (Cliente ← cTrader)
  • Business Message Reject (Cliente ← cTrader)
  • Request for Positions (Cliente → cTrader)
  • Position Report (Cliente ← cTrader)
  • Order Cancel Request (Cliente → cTrader)
  • Order Cancel Reject (Cliente ← cTrader)
  • Order Cancel/Replace Request (Cliente → cTrader)
  • Security List Request (Cliente → cTrader)
  • Security List (Cliente ← cTrader)
  • Security List Request (Client → cTrader)
  • Security List (Client ← cTrader)

Encabezado estándar

Cada mensaje administrativo o de aplicación está precedido por un encabezado estándar. Los encabezados identifican un tipo de mensaje, longitud, destino, número de secuencia, punto de origen y hora.

Todos los mensajes enviados a cTrader deben tener un encabezado estándar con los siguientes campos:

Tag Nombre del campo Obligatorio Valor Formato FIX Comentarios
8 BeginString FIX.4.4 String Siempre sin cifrar, debe ser el primer campo en un mensaje.
9 BodyLength Cualquier valor válido Integer Longitud del cuerpo del mensaje. Siempre sin cifrar, debe ser el segundo campo en un mensaje.
35 MsgType A String Un tipo de mensaje. Siempre sin cifrar, debe ser el tercer campo en un mensaje.
49 SenderCompID Cualquier valor válido String Un ID de la parte comercial en el siguiente formato: <Environment>.<BrokerUID>.<Trader Login>, donde Environment es una determinación del servidor, como demo o live; BrokerUID es proporcionado por cTrader y Trader Login es un identificador numérico de la cuenta del operador.
56 TargetCompID CSERVER String Un objetivo del mensaje. The valid value is CSERVER.
57 TargetSubID QUOTE o TRADE String Un calificador de sesión adicional. Los valores posibles son QUOTE y TRADE.
50 SenderSubID No Cualquier valor válido String El valor asignado utilizado para identificar un originador de mensaje específico. Debe establecerse en QUOTE si TargetSubID=QUOTE.
34 MsgSeqNum 1 Integer Un número de secuencia del mensaje.
52 SendingTime 20131129-15:40:08.155 UTCTimestamp Hora de la transmisión del mensaje siempre expresada en UTC (Tiempo Universal Coordinado, también conocido como GMT).

Trailer estándar

Cada mensaje, administrativo o de aplicación, se termina con un trailer estándar. El trailer se utiliza para segregar mensajes y contiene una representación de tres dígitos del valor CheckSum (tag=10).

Tag Nombre del campo Obligatorio Valor Formato FIX Comentarios
10 CheckSum 054 String Una suma de comprobación simple de tres bytes. Siempre el último campo en un mensaje (por ejemplo, sirve), con el <SOH> final como delimitador de fin de mensaje. Se define como tres caracteres (siempre sin cifrar).

Mensajes de sesión

Heartbeat (MsgType(35)=0)

Los mensajes de latido son enviados tanto por cTrader como por la aplicación del cliente para confirmar una conexión activa.

La aplicación del cliente del proveedor transmite un latido recurrente en el intervalo, que se define por el campo HeartBtInt (tag=108) en un mensaje de Logon, o como respuesta a un mensaje de Solicitud de Prueba.

Tag Nombre del campo Obligatorio Valor Formato FIX Comentarios
Standard Header
112 TestReqID No Cualquier valor válido String Si un latido es resultado del mensaje de Solicitud de Prueba, se requiere TestReqID.
Standard Trailer

Test Request (MsgType(35)=1)

Fuerza un latido del receptor de una solicitud. Se envía una respuesta desde el sistema receptor como un mensaje de Latido que contiene TestReqID.

Tag Nombre del campo Obligatorio Valor Formato FIX Comentarios
Standard Header
112 TestReqID Cualquier valor válido String Un ID de mensaje de latido. TestReqID debe ser incremental.
Standard Trailer

Logon (bidirectional) (MsgType(35)=A)

Un mensaje de Logon se envía desde la aplicación del lado del cliente para iniciar una sesión FIX de cTrader, y cTrader envía una respuesta a la aplicación del lado del cliente. Una vez que se completa el logon, los flujos de cotización y comercio pueden proceder durante el ciclo de vida de la sesión.

Si cTrader recibe un mensaje de Logon inválido (con campos inválidos), cTrader envía un mensaje de Logout en respuesta.

Tag Nombre del campo Obligatorio Valor Formato FIX Comentarios
Standard Header
98 EncryptMethod 0 Integer Define un esquema de cifrado de mensajes. Actualmente, solo se admite la seguridad a nivel de transporte. El valor válido es 0 = NONE_OTHER (no se utiliza cifrado).
108 HeartBtInt Cualquier valor válido Integer Un intervalo de latido en segundos. El valor se establece en el archivo config.properties (lado del cliente) como SERVER.POLLING.INTERVAL. El valor de intervalo predeterminado es 30 segundos. Si HeartBtInt se establece en 0, no se requiere mensaje de latido.
141 ResetSeqNumFlag No Y Boolean Todos los lados de la sesión FIX deben tener los números de secuencia restablecidos. El valor válido es Y (restablecer).
553 Username No Cualquier valor válido String Un ID de Usuario numérico. El usuario está vinculado al valor SenderCompID (la organización del usuario, tag=49).
554 Password No Cualquier valor válido String Una contraseña de usuario.
Standard Trailer

Nota

El campo Username (tag=553) debe contener un valor de inicio de sesión de operador numérico, mientras que SenderCompID (tag=49) debe contener un entorno, BrokerUID y un inicio de sesión de operador delimitados por un punto (por ejemplo, live.theBroker.12345).

Vea ejemplos de mensajes de Logon a continuación.

Solicitar:

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|

Respuesta (éxito):

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|

Respuesta (fallida):

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 mensaje de Logout se envía desde la aplicación del cliente para solicitar el fin de una sesión con cTrader y como respuesta por cTrader. Un cierre de sesión ocurre en respuesta a que un Participante del Mercado envíe un mensaje de Logout a cTrader. Antes de terminar la sesión, cTrader cancelará todos los precios que aún se están transmitiendo activamente a la parte solicitante. Si cTrader recibe un mensaje de Logon inválido (con campos inválidos), cTrader envía un mensaje de Logout en respuesta con detalles del error en el campo Text (tag=58).

Tag Nombre del campo Obligatorio Valor Formato FIX Comentarios
Standard Header
58 Text No Cualquier valor válido String Detalles de rechazo de Logon. Utilizado solo para mensajes de cTrader al cliente como respuesta a un mensaje de Logon inválido.
Standard Trailer

Vea ejemplos de mensajes de cierre de sesión a continuación.

Solicitar:

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|

Respuesta:

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 mensaje entrante/saliente se utiliza para solicitar el reenvío de un mensaje (o mensajes), típicamente cuando se detecta un hueco en la numeración de secuencia.

Tag Nombre del campo Obligatorio Valor Formato FIX Comentarios
Standard Header
7 BeginSeqNo Cualquier valor válido Integer Un número de secuencia de mensaje del primer registro en el rango a ser reenviado.
16 EndSeqNo Cualquier valor válido Integer Un número de secuencia de mensaje del último registro en el rango a ser reenviado.
Standard Trailer

Reject (bidirectional) (MsgType(35)=3)

Enviado cuando el mensaje recibido no puede ser procesado debido a una violación de regla a nivel de sesión. Los mensajes rechazados deben ser registrados y se debe aplicar un incremento al número de secuencia entrante.

Tag Nombre del campo Obligatorio Valor Formato FIX Comentarios
Standard Header
45 RefSeqNum Cualquier valor válido SeqNum Un número de secuencia del mensaje referenciado.
58 Text No Cualquier valor válido String Una cadena de texto de formato libre.
354 EncodedTextLen No Cualquier valor válido Longitud Longitud del campo EncodedText (caracteres no ASCII) en bytes.
355 EncodedText No Cualquier valor válido Datos Una representación del campo Text (tag=58), codificado usando el formato especificado en el campo MessageEncoding (tag=347) (del encabezado estándar). Si se utiliza la representación ASCII, también debe especificarse en el campo Text (tag=58).
371 RefTagID No Cualquier valor válido Integer Un número de tag del campo FIX que inició el rechazo del mensaje.
372 RefMsgType No Cualquier valor válido String MsgType (tag=35) del mensaje FIX referenciado.
373 SessionRejectReason No Cualquier valor válido Integer Causas codificadas del rechazo. Los valores válidos son:
0 = Número de tag inválido
1 = Falta tag requerido
2 = No hay tag definido para este tipo de mensaje
3 = Tag no definido
4 = Sin valor para el tag especificado
5 = Valor para este tag está fuera de rango
6 = Formato de datos incorrecto para el valor
7 = Problema de descifrado
8 = Error de firma
9 = Error de CompID
10 = Error de precisión de SendingTime
11 = MsgType inválido
12 = Error de validación XML
13 = El tag se está repitiendo
14 = El tag especificado no está en el orden correcto
15 = Los campos del grupo repetitivo no están en el orden correcto
16 = Recuento NumInGroup incorrecto para grupo repetitivo
17 = Delimitador de campo (carácter SOH) incluido en valor no de datos
Standard Trailer

Sequence Reset (MsgType(35)=4)

Un mensaje entrante/saliente no debe utilizarse a nivel de aplicación. Un mensaje de Reinicio de Secuencia solo puede aumentar un número de secuencia.

Tag Nombre del campo Obligatorio Valor Formato FIX Comentarios
Standard Header
123 GapFillFlag No Yes o No String Indica que un mensaje de Reinicio de Secuencia está reemplazando mensajes administrativos o de aplicación que no serán reenviados.
36 NewSeqNo 1 Integer Un nuevo número de secuencia.
Standard Trailer

Mensajes de aplicación

Market Data Request (MsgType(35)=V)

Tag Nombre del campo Obligatorio Valor Formato FIX Comentarios
Standard Header
262 MDReqID Cualquier valor válido String Un ID de solicitud de cotización único. Un nuevo ID para una nueva suscripción, el mismo ID utilizado anteriormente para una eliminación de suscripción.
263 SubscriptionRequestType 1 o 2 Char 1 = Instantánea más actualizaciones (suscribirse).
2 = Deshabilitar solicitud previa de instantánea más actualización (cancelar suscripción).
264 MarketDepth 0 o 1 Integer Se proporcionará un libro completo.
0 = Suscripción de profundidad
1 = Suscripción de spot
265 MDUpdateType Cualquier valor válido Integer Solo se admite la Actualización Incremental.
267 NoMDEntryTypes 2 Integer Siempre establecido en 2 (se enviarán tanto la oferta como la demanda).
269 MDEntryType 0 o 1 Char Este grupo repetitivo contiene una lista de todos los tipos de Entradas de Datos de Mercado que el solicitante desea recibir.
0 = Bid
1 = Offer
146 NoRelatedSym Cualquier valor válido Integer El número de símbolos solicitados.
55 Symbol Cualquier valor válido Larga(s) Los identificadores de instrumentos son proporcionados por Spotware.
Standard Trailer

Vea ejemplos de mensajes de Solicitud de Datos de Mercado a continuación.

Para Spots

Solicitud:

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|

Respuesta:

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|

Para Profundidades

Solicitud:

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|

Respuestas:

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 Nombre del campo Obligatorio Valor Formato FIX Comentarios
Standard Header
262 MDReqID Cualquier valor válido String El ID de la solicitud de datos de mercado enviada previamente.
55 Symbol Cualquier valor válido Larga(s) Los identificadores de instrumentos son proporcionados por Spotware.
268 NoMDEntries Cualquier valor válido Integer El número de entradas siguientes.
269 MDEntryType No 0 o 1 Char Los valores válidos son:
0 = Oferta
1 = Demanda
Requerido solo cuando NoMDEntries (tag=268) > 0.
299 QuoteEntryID No Cualquier valor válido String Una identificación única de la cotización como parte de QuoteSet.
270 MDEntryPx No 1.2345 Precio Un precio de la entrada de datos de mercado. Requerido solo cuando NoMDEntries (etiqueta=268) > 0.
271 MDEntrySize No 500000 Volumen Volumen de la entrada de datos de mercado. Requerido solo cuando NoMDEntries (etiqueta=268) > 0.
278 MDEntryID No Cualquier valor válido String Un identificador único de la entrada de datos de mercado.
Standard Trailer

Market Data Incremental Refresh (MsgType(35)=X)

Tag Nombre del campo Obligatorio Valor Formato FIX Comentarios
Standard Header
262 MDReqID Cualquier valor válido String El ID de la solicitud de datos de mercado enviada previamente.
268 NoMDEntries Cualquier valor válido Integer El número de entradas siguientes. Este grupo repetitivo contiene una lista de todos los tipos de entradas de datos de mercado que el solicitante desea recibir.
279 MDUpdateAction 0 o 2 Char Un tipo de acción de actualización de datos de mercado. Los valores válidos son:
0 = Nuevo
2 = Eliminar
269 MDEntryType No 0 o 1 Char Los valores válidos son:
0 = Oferta de compra
1 = Oferta de venta
278 MDEntryID Cualquier valor válido String Un ID de la entrada de datos de mercado.
55 Symbol Cualquier valor válido Larga(s) Los identificadores de instrumentos son proporcionados por Spotware.
270 MDEntryPx No 1.2345 Precio Requerido solo cuando MDUpdateAction (etiqueta=279) = 0.
271 MDEntrySize No 10000 Duplicar Requerido solo cuando MDUpdateAction (etiqueta=279) = 0.
Standard Trailer

New Order Single (MsgType(35)=D)

Un mensaje de Nueva Orden Individual tiene el siguiente formato.

Tag Nombre del campo Obligatorio Valor Formato FIX Comentarios
Standard Header
11 ClOrdID Cualquier valor válido String Un identificador único de la orden asignado por el cliente.
55 Symbol Cualquier valor válido Larga(s) Los identificadores de instrumentos son proporcionados por Spotware.
54 Side 1 o 2 Integer 1 = Buy
2 = Sell
60 TransactTime Cualquier valor válido Marca de tiempo Tiempo de solicitud generado por el cliente.
38 OrderQty Cualquier valor válido Qty El número de acciones ordenadas. Esto representa el número de acciones para valores de renta variable o, según la convención normal, el número de contratos para opciones, futuros, bonos convertibles, etc. La precisión máxima es 0,01. Antes de FIX 4.2, el tipo de este campo era "Integer".
40 OrdType 1, 2 o 3 Char 1 = Mercado, la orden se procesará mediante el esquema de Inmediata o Cancelar (IOC) (TimeInForce, etiqueta=59).
2 = Limitada, la orden se procesará mediante el esquema de Válida hasta Cancelar (GTC) (TimeInForce, etiqueta=59).
3 = Stop, la orden se procesará mediante el esquema de Válida hasta Cancelar (GTC) (TimeInForce, etiqueta=59).
44 Price No Cualquier valor válido Precio El peor precio del cliente que el cliente aceptará. Requerido solo cuando OrdType (etiqueta=40) = 2, en cuyo caso la orden no se ejecutará a menos que se pueda cumplir este precio.
99 StopPx No Cualquier valor válido Precio Un precio que activa la orden de stop. Requerido solo cuando OrdType (etiqueta=40) = 3, en cuyo caso la orden no se ejecutará a menos que se pueda cumplir este precio.
59 TimeInForce No 1, 3 or 6 String Obsoleto, este valor será ignorado. TimeInForce se detectará automáticamente dependiendo de OrdType (etiqueta=40) y ExpireTime (etiqueta=126):
1 = Válida hasta Cancelar (GTC), se utilizará solo para órdenes limitadas y de stop (OrdType, etiqueta=40) solo si ExpireTime (etiqueta=126) no está definido.
3 = Inmediata o Cancelar (IOC), se utilizará solo para órdenes de mercado (OrdType, etiqueta=40).
6 = Válida hasta Fecha (GTD), se utilizará solo para órdenes limitadas y de stop (OrdType, etiqueta=40) solo si ExpireTime (etiqueta=126) está definido.
126 ExpireTime No 20140215-07:24:55 Marca de tiempo Tiempo de expiración en el formato "AAAAMMDD-HH:MM:SS". Si se asigna, la orden se procesará mediante el esquema GTD (TimeInForce: GTD).
721 PosMaintRptID No Cualquier valor válido String Un ID de posición donde se debe colocar esta orden. Si no se establece, se creará una nueva posición y su ID se devolverá en el mensaje de Informe de Ejecución. Solo se puede especificar para cuentas con cobertura.
494 Designation No Cualquier valor válido String Una etiqueta de orden personalizada.
Standard Trailer

Vea ejemplos de mensajes de Nueva Orden Individual a continuación.

Orden de mercado para nueva posición

Solicitar:

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|

Respuestas:

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|

Orden de mercado para posición existente

Solicitar:

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|

Respuestas:

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

Orden limitada para posición existente

Solicitar:

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|

Respuesta:

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|

Orden de stop para nueva posición

Solicitar:

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|

Respuesta:

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 mensaje de Solicitud de Estado de Orden es utilizado por una institución para generar un mensaje de estado de orden de vuelta desde el operador. Para una interacción correcta, es muy importante tener identificadores de orden de cliente únicos (ClOrdID) para todas las órdenes.

Tag Nombre del campo Obligatorio Valor Formato FIX Comentarios
Standard Header
11 ClOrdID Cualquier valor válido String Un identificador único de la orden asignado por el cliente.
54 Side No 1 o 2 Integer 1 = Buy
2 = Sell
Standard Trailer

Vea ejemplos de mensajes de Solicitud de Estado de Orden a continuación.

Solicitar:

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|

Respuesta:

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 mensaje de Solicitud de Estado Masivo de Órdenes solicita el estado de las órdenes que coinciden con los criterios especificados en la solicitud. La respuesta se devolverá como una serie de mensajes de Informe de Ejecución (uno para cada orden), o como un mensaje de Rechazo de Mensaje de Negocio si no se encuentran órdenes.

Tag Nombre del campo Obligatorio Valor Formato FIX Comentarios
Standard Header
584 MassStatusReqID Cualquier valor válido String Un ID único de la Solicitud de Estado Masivo asignado por el cliente.
585 MassStatusReqType Cualquier valor válido Integer 7 = Estado para todas las órdenes.
Actualmente solo se admite el valor 7.
225 IssueDate No Cualquier valor válido String Si se establece, la respuesta contendrá solo las órdenes creadas antes de esta fecha.
Standard Trailer

Vea ejemplos de mensajes de Solicitud de Estado Masivo de Órdenes a continuación.

Solicitar:

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|

Respuesta:

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 mensaje de Informe de Ejecución para una orden aceptada tiene el siguiente formato.

Tag Nombre del campo Obligatorio Valor Formato FIX Comentarios
Standard Header
37 OrderID Cualquier valor válido String Un ID de orden de cTrader.
11 ClOrdID No Cualquier valor válido String Un identificador único de la orden asignado por el cliente.
911 TotNumReports No Cualquier valor válido Integer El número total de informes devueltos en respuesta al mensaje de Solicitud de Estado Masivo de Órdenes.
150 ExecType Cualquier valor válido Char 0 = New
4 = Canceled
5 = Replace
8 = Rejected
C = Expired
F = Trade
I = Order Status
39 OrdStatus Cualquier valor válido Char 0 = Nueva
1 = Parcialmente ejecutada
2 = Ejecutada
8 = Rechazada
4 = Cancelada (cuando la orden está parcialmente ejecutada, se devuelve Canceled indicando (tag=151), LeavesQty está cancelada y no se ejecutará posteriormente).
C = Expirada
55 Symbol No Cualquier valor válido Larga(s) Los identificadores de instrumentos son proporcionados por Spotware.
54 Side No 1 o 2 Integer 1 = Compra
2 = Venta
60 TransactTime No Cualquier valor válido Marca de tiempo Tiempo de ejecución de una transacción representada por el mensaje de Informe de Ejecución (en UTC).
6 AvgPx No Cualquier valor válido Integer Un precio al que se ejecutó la transacción. Para una orden IOC o GTD, este es el Precio Medio Ponderado por Volumen (VWAP) de la orden ejecutada.
38 OrderQty No Cualquier valor válido Qty Esto representa el número de acciones para valores de renta variable o, según la convención normal, el número de contratos para opciones, futuros, bonos convertibles, etc. Antes de FIX 4.2, el tipo de este campo era "Integer".
151 LeavesQty No Cualquier valor válido Qty El número de órdenes que aún deben ejecutarse. Los valores posibles están entre 0 (totalmente ejecutada) y OrderQty (parcialmente ejecutada).
14 CumQty No Cualquier valor válido Qty El número total de órdenes que se han ejecutado.
32 LastQty No Cualquier valor válido Qty La cantidad comprada/vendida de órdenes que se han ejecutado en esta (última) ejecución.
40 OrdType No 1 o 2 Char 1 = Mercado
2 = Límite
44 Price No Cualquier valor válido Precio Si se proporciona en un mensaje de Nueva Orden Individual, se repite en este mensaje de Informe de Ejecución.
99 StopPx No Cualquier valor válido Precio Si se proporciona en un mensaje de Nueva Orden Individual, se repite en este mensaje de Informe de Ejecución.
59 TimeInForce No 1, 3 o 6 String 1 = Válida hasta cancelación (GTC)
3 = Inmediata o cancelar (IOC)
6 = Válida hasta fecha (GTD)
126 ExpireTime No 20140215-07:24:55 Marca de tiempo Si se proporciona en un mensaje de Nueva Orden Individual, se repite en este mensaje de Informe de Ejecución.
58 Text No Cualquier valor válido String Cuando sea posible, un mensaje explicará el Informe de Ejecución.
103 OrdRejReason No 0 Integer 0 = OrdRejReason.BROKER_EXCHANGE_OPTION
721 PosMaintRptID No Cualquier valor válido String Un ID de posición.
494 Designation No Cualquier valor válido String Una etiqueta de orden personalizada del cliente.
584 MassStatusReqID No Cualquier valor válido String Un ID único de la solicitud de estado masivo asignado por el cliente.
1000 AbsoluteTP No Cualquier valor válido Precio Un precio absoluto al que se activará el take profit.
1001 RelativeTP No Cualquier valor válido Precio Una distancia en pips desde el precio de entrada al que se activará el take profit.
1002 AbsoluteSL No Cualquier valor válido Precio Un precio absoluto al que se activará el stop loss.
1003 RelativeSL No Cualquier valor válido Precio Una distancia en pips desde el precio de entrada al que se activará el stop loss.
1004 TrailingSL No N o Y Boolean Indica si el stop loss es dinámico.
N = El stop loss no es dinámico.
Y = El stop loss es dinámico.
1005 TriggerMethodSL No Cualquier valor válido Integer Un método de activación indicado del stop loss.
1 = El stop loss se activará por el lado de la operación.
2 = El stop loss se activará por el lado opuesto (demanda para posiciones de compra y oferta para posiciones de venta).
3 = El stop loss se activará después de dos ticks consecutivos según el lado de la operación.
4 = El stop loss se activará después de dos ticks consecutivos según el lado opuesto (el segundo tick de demanda para posiciones de compra y el segundo tick de oferta para posiciones de venta).
1006 GuaranteedSL No N o Y Boolean Indica si el stop loss está garantizado.
N = El stop loss no está garantizado.
Y = El stop loss está garantizado.
Standard Trailer

Vea un ejemplo de Nueva Orden Única al final de la guía.

Business Message Reject (MsgType(35)=j)

Este tipo de mensaje se envía cuando el sistema no puede procesar una solicitud de suscripción o una orden no puede ejecutarse.

Tag Nombre del campo Obligatorio Valor Formato FIX Comentarios
Standard Header
45 RefSeqNum No Cualquier valor válido Integer MsgSeqNum (etiqueta=34) del mensaje rechazado.
372 RefMsgType No Cualquier valor válido String MsgType (etiqueta=35) del mensaje FIX al que se hace referencia.
379 BusinessRejectRefID No Cualquier valor válido String Valor del campo de ID a nivel de negocio en el mensaje al que se hace referencia. Requerido a menos que el campo de ID correspondiente no se haya especificado.
380 BusinessRejectReason 0 Integer Un código para identificar el motivo de un mensaje de Rechazo de Mensaje de Negocio.
0 = Otro
58 Text No Cualquier valor válido String Cuando sea posible, un mensaje para explicar el motivo del rechazo.
Standard Trailer

Vea un ejemplo de un mensaje de Rechazo de Mensaje de Negocio a continuación.

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 Nombre del campo Obligatorio Valor Formato FIX Comentarios
Standard Header
710 PosReqID Cualquier valor válido String Un ID de solicitud único (establecido por el cliente).
721 PosMaintRptID No Cualquier valor válido String Un ID de posición para solicitar. Si no se establece, se devolverán todas las posiciones abiertas.
Standard Trailer

Vea ejemplos de mensajes de Solicitud de Posiciones a continuación.

Solicitar:

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|

Respuesta:

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 Nombre del campo Obligatorio Valor Formato FIX Comentarios
Standard Header
710 PosReqID Cualquier valor válido String Un ID del mensaje de Solicitud de Posiciones.
721 PosMaintRptID No Cualquier valor válido String Un ID de posición, que no se establece si PosReqResult (etiqueta=728) no es VALID_REQUEST.
727 TotalNumPosReports Cualquier valor válido String El recuento total de Informes de Posición en una secuencia cuando PosReqResult (etiqueta=728) es VALID_REQUEST, de lo contrario = 0.
728 PosReqResult 0 o 2 String 0 = Solicitud válida
2 = No se encuentran posiciones abiertas que coincidan con los criterios.
55 Symbol No Cualquier valor válido String Un símbolo para el cual se prepara el Informe de Posición actual. No se establece si PosReqResult (etiqueta=728) no es VALID_REQUEST.
702 NoPositions No 1 String 1 cuando PosReqResult (etiqueta=728) es VALID_REQUEST, de lo contrario no se establece.
704 LongQty No Cualquier valor válido String Volumen abierto de la posición en caso de lado de operación de compra, igual a 0 en caso de lado de operación de venta. No se establece si PosReqResult (etiqueta=728) no es VALID_REQUEST.
705 ShortQty No Cualquier valor válido String Volumen abierto de la posición en caso de lado de operación de venta, igual a 0 en caso de lado de operación de compra. No se establece si PosReqResult (etiqueta=728) no es VALID_REQUEST.
730 SettlPrice No Cualquier valor válido String Un precio promedio del volumen abierto en el Informe de Posición actual.
1000 AbsoluteTP No Cualquier valor válido Precio Un precio absoluto al que se activará el take profit.
1002 AbsoluteSL No Cualquier valor válido Precio Un precio absoluto al que se activará el stop loss.
1004 TrailingSL No Cualquier valor válido Boolean Indica si el stop loss es dinámico.
N = El stop loss no es dinámico.
Y = El stop loss es dinámico.
1005 TriggerMethodSL No Cualquier valor válido Integer Un método de activación indicado del stop loss.
1 = El stop loss se activará por el lado de la operación.
2 = El stop loss se activará por el lado opuesto (demanda para posiciones de compra y oferta para posiciones de venta).
3 = El stop loss se activará después de dos ticks consecutivos según el lado de la operación.
4 = El stop loss se activará después de dos ticks consecutivos según el lado opuesto (segundo tick de demanda para posiciones de compra y segundo tick de oferta para posiciones de venta).
1006 GuaranteedSL No Cualquier valor válido Boolean Indica si el stop loss está garantizado.
N = El stop loss no está garantizado.
Y = El stop loss está garantizado.
Standard Trailer

Order Cancel Request (MsgType(35)=F)

Tag Nombre del campo Obligatorio Valor Formato FIX Comentarios
Standard Header
41 OrigClOrdID Cualquier valor válido String Un identificador único de la orden que se va a cancelar, asignado por el cliente.
37 OrderID No Cualquier valor válido String Un ID único de la orden devuelto por cServer.
11 ClOrdID Cualquier valor válido String Un ID único de la solicitud de cancelación asignado por el cliente.
Standard Trailer

Vea ejemplos de mensajes de Solicitud de Cancelación de Orden a continuación.

Solicitar:

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|

Respuesta (éxito):

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|

Respuesta (fallida):

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 Nombre del campo Obligatorio Valor Formato FIX Comentarios
Standard Header
37 OrderID Cualquier valor válido String Un identificador único de la orden que el sistema no pudo cancelar.
11 ClOrdID Cualquier valor válido String Un identificador único de la Solicitud de Cancelación de Orden.
41 OrigClOrdID No Cualquier valor válido String Un identificador único de la orden que se intentó cancelar, asignado por el cliente.
39 OrdStatus Cualquier valor válido Char 0 = Nueva
1 = Parcialmente ejecutada
2 = Ejecutada
8 = Rechazada
4 = Cancelada (cuando la orden está parcialmente ejecutada, se devuelve Canceled indicando (tag=151), LeavesQty está cancelada y no se ejecutará posteriormente).
C = Expirada
434 CxlRejResponseTo 1 o 2 Char 1 = Rechazar cancelación de orden.
2 = Rechazar modificación de orden desde otra terminal.
58 Text No Cualquier valor válido String Una orden está en ejecución.
Standard Trailer

Vea un ejemplo de un mensaje de Rechazo de Cancelación de Orden a continuación.

Respuesta:

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 Nombre del campo Obligatorio Valor Formato FIX Comentarios
Standard Header
41 OrigClOrdID Any valid value String Un identificador único de la orden que se va a modificar, asignado por el cliente.
37 OrderID No Cualquier valor válido String Un ID único de la orden original que se va a modificar, asignado por el servidor. Un método preferible para usar.
11 ClOrdID Cualquier valor válido String Un ID único de la solicitud de modificación asignado por el cliente.
38 OrderQty Cualquier valor válido Qty Una cantidad existente o recién especificada para reemplazar el valor antiguo.
44 Price No Cualquier valor válido Precio Un precio límite existente o recién especificado para reemplazar el valor antiguo. Válido solo para órdenes limitadas.
99 StopPx No Cualquier valor válido Precio Un precio de stop existente o recién especificado para reemplazar el valor antiguo. Válido solo para órdenes de stop.
126 ExpireTime No 20140215-07:24:55 Marca de tiempo Tiempo de vencimiento existente o recién especificado. Válido solo para órdenes pendientes.
Standard Trailer

Vea ejemplos de mensajes de Solicitud de Cancelación/Reemplazo de Orden a continuación.

Solicitar:

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|

Respuesta (éxito):

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|

Respuesta (fallida):

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 Nombre del campo Obligatorio Valor Formato FIX Comentarios
Standard Header
262 MDReqID Cualquier valor válido String Debe referirse a MDReqID (tag=262) de la solicitud.
281 MDReqRejReason No Cualquier valor válido Integer 0 = Símbolo desconocido
4 = SubscriptionRequestType (tag=263) no soportado
5 = MarketDepth (tag=264) no soportado
Standard Trailer

Vea ejemplos de mensajes de Rechazo de Solicitud de Datos de Mercado a continuación.

Solicitar:

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|

Rechazar:

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|

Solicitar:

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|

Rechazar:

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 Nombre del campo Obligatorio Valor Formato FIX Comentarios
Standard Header
320 SecurityReqID Cualquier valor válido String Un ID único de la Solicitud de Definición de Seguridad.
559 SecurityListRequestType 0 Integer El tipo de Solicitud de Lista de Seguridad que se está realizando. Solo se admite 0 = Symbol (tag=55).
55 Symbol No Cualquier valor válido Integer Un ID para resolver el nombre del símbolo.
Standard Trailer

Vea ejemplos de mensajes de Solicitud de Lista de Seguridad a continuación.

Solicitar:

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|

Respuesta:

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 Nombre del campo Obligatorio Valor Formato FIX Comentarios
Standard Header
320 SecurityReqID Cualquier valor válido String Un ID único de la Solicitud de Definición de Seguridad.
322 SecurityResponseID Cualquier valor válido String Un ID único de la respuesta de Lista de Seguridad.
560 SecurityRequestResult 0 Integer Resultados devueltos al mensaje de Solicitud de Seguridad. Los valores válidos son:
0 = Solicitud válida.
1 = Solicitud inválida o no soportada.
2 = No se encuentran instrumentos que coincidan con los criterios de selección.
3 = No autorizado para recuperar datos de instrumentos.
4 = Datos de instrumentos temporalmente no disponibles.
5 = Solicitud de datos de instrumentos no soportada.
146 NoRelatedSym No Cualquier valor válido Integer Especifica el número de símbolos (instrumentos) repetidos.
55 Symbol No Cualquier valor válido Integer Los identificadores de instrumentos son proporcionados por Spotware.
1007 SymbolName No Cualquier valor válido String Un nombre de símbolo.
1008 SymbolDigits No Cualquier valor válido Integer Dígitos del símbolo. Valores posibles de 0 a 5.
Standard Trailer

Vea un ejemplo de un mensaje de Lista de Seguridad a continuación.

Respuesta:

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|