Ir para o conteúdo

Motor FIX do cTrader (Regras de Envolvimento)

Introdução

Âmbito

Esta especificação destina-se a servir os programadores de software como um guia de implementação para a API do motor FIX do cTrader.

Versão FIX

O cTrader suporta a versão 4.4 do FIX. Para mais informações sobre esta versão, consulte estas especificações.

Conectividade

Tipo de ligação

Está disponível uma ligação ao motor FIX do cTrader através da Internet, um túnel VPN ou uma ligação cruzada às nossas instalações de centro de dados no Reino Unido. Contacte-nos para mais detalhes.

Reinicialização do número de sequência

Todos os lados de uma sessão FIX devem ter os números de sequência reiniciados ao estabelecer uma sessão FIX. Consulte a mensagem de início de sessão.

Mensagens

Conforme definido no protocolo FIX, o servidor FIX do cTrader está a utilizar dois níveis de dados diferentes (sistema e aplicação). Note que este é um conjunto mínimo de mensagens necessárias para suportar os fluxos de trabalho necessários. Está sujeito a alterações ao longo do tempo à medida que as necessidades de negócio e as normas FIX evoluem.

Motor FIX do cTrader

Mensagens do 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)

Mensagens da aplicação

  • 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)

Cabeçalho padrão

Cada mensagem administrativa ou de aplicação é precedida por um cabeçalho padrão. Os cabeçalhos identificam um tipo de mensagem, comprimento, destino, número de sequência, ponto de origem e hora.

Todas as mensagens enviadas para o cTrader devem ter um cabeçalho padrão com os seguintes campos:

Tag Nome do campo Obrigatório Valor Formato FIX Comentários
8 BeginString Sim FIX.4.4 String Sempre não encriptado, deve ser o primeiro campo numa mensagem.
9 BodyLength Sim Qualquer valor válido Integer Comprimento do corpo da mensagem. Sempre não encriptado, deve ser o segundo campo numa mensagem.
35 MsgType Sim A String Um tipo de mensagem. Sempre não encriptado, deve ser o terceiro campo numa mensagem.
49 SenderCompID Sim Qualquer valor válido String Um ID da parte negociadora no seguinte formato: <Environment>.<BrokerUID>.<Trader Login>, onde Environment é uma determinação do servidor, como demo ou live; BrokerUID é fornecido pelo cTrader e Trader Login é um identificador numérico da conta do trader.
56 TargetCompID Sim CSERVER String Um alvo da mensagem. The valid value is CSERVER.
57 TargetSubID Sim QUOTE ou TRADE String Um qualificador de sessão adicional. Os valores possíveis são QUOTE e TRADE.
50 SenderSubID Não Qualquer valor válido String O valor atribuído usado para identificar um originador específico da mensagem. Deve ser definido como QUOTE se TargetSubID=QUOTE.
34 MsgSeqNum Sim 1 Integer Um número de sequência da mensagem.
52 SendingTime Sim 20131129-15:40:08.155 UTCTimestamp Hora da transmissão da mensagem sempre expressa em UTC (Tempo Universal Coordenado, também conhecido como GMT).

Trailer padrão

Cada mensagem, administrativa ou de aplicação, é terminada por um trailer padrão. O trailer é usado para segregar mensagens e contém uma representação de três dígitos do valor CheckSum (tag=10).

Tag Nome do campo Obrigatório Valor Formato FIX Comentários
10 CheckSum Sim 054 String Uma soma de verificação simples de três bytes. Sempre o último campo numa mensagem (por exemplo, serve), com o <SOH> final como delimitador de fim de mensagem. É definido como três caracteres (sempre não encriptado).

Mensagens de sessão

Heartbeat (MsgType(35)=0)

As mensagens de heartbeat são enviadas tanto pelo cTrader como pela aplicação do cliente para confirmar uma conexão ativa.

A aplicação do cliente do fornecedor transmite um heartbeat recorrente no intervalo, que é definido pelo campo HeartBtInt (tag=108) numa mensagem de Logon, ou como resposta a uma mensagem de Pedido de Teste.

Tag Nome do campo Obrigatório Valor Formato FIX Comentários
Standard Header Sim
112 TestReqID Não Qualquer valor válido String Se um heartbeat é resultado da mensagem de Pedido de Teste, TestReqID é necessário.
Standard Trailer Sim

Test Request (MsgType(35)=1)

Força um heartbeat do recetor de um pedido. Uma resposta é enviada do sistema recetor como uma mensagem de Heartbeat contendo TestReqID.

Tag Nome do campo Obrigatório Valor Formato FIX Comentários
Standard Header Sim
112 TestReqID Sim Qualquer valor válido String Um ID de mensagem de heartbeat. TestReqID deve ser incremental.
Standard Trailer Sim

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

Uma mensagem de Logon é enviada da aplicação do lado do cliente para iniciar uma sessão FIX do cTrader, e uma resposta é enviada pelo cTrader para a aplicação do lado do cliente. Uma vez que o logon esteja completo, os fluxos de cotação e negociação podem prosseguir durante o ciclo de vida da sessão.

Se uma mensagem de Logon inválida for recebida pelo cTrader (com campos inválidos), o cTrader envia uma mensagem de Logout em resposta.

Tag Nome do campo Obrigatório Valor Formato FIX Comentários
Standard Header Sim
98 EncryptMethod Sim 0 Integer Define um esquema de encriptação de mensagem. Atualmente, apenas a segurança a nível de transporte é suportada. O valor válido é 0 = NONE_OTHER (a encriptação não é usada).
108 HeartBtInt Sim Qualquer valor válido Integer Um intervalo de heartbeat em segundos. O valor é definido no ficheiro config.properties (lado do cliente) como SERVER.POLLING.INTERVAL. O valor de intervalo padrão é 30 segundos. Se HeartBtInt for definido como 0, nenhuma mensagem de heartbeat é necessária.
141 ResetSeqNumFlag Não Y Boolean Todos os lados da sessão FIX devem ter os números de sequência reiniciados. O valor válido é Y (reiniciar).
553 Username Não Qualquer valor válido String Um ID de Utilizador numérico. O utilizador está ligado ao valor SenderCompID (a organização do utilizador, tag=49).
554 Password Não Qualquer valor válido String Uma palavra-passe de utilizador.
Standard Trailer Sim

Nota

O campo Username (tag=553) deve conter um valor de login de trader numérico, enquanto SenderCompID (tag=49) deve conter um ambiente, BrokerUID e um login de trader delimitados por um ponto (por exemplo, live.theBroker.12345).

Veja exemplos de mensagens de Logon abaixo.

Pedido:

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|

Resposta (sucesso):

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|

Resposta (falha):

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)

Uma mensagem de Logout é enviada da aplicação do cliente para solicitar o fim de uma sessão com o cTrader e como resposta pelo cTrader. Um logout de sessão ocorre em resposta a um Participante de Mercado enviando uma mensagem de Logout para o cTrader. Antes de terminar a sessão, o cTrader cancelará todos os preços que ainda estão a ser transmitidos ativamente para a parte solicitante. Se uma mensagem de Logon inválida for recebida pelo cTrader (com campos inválidos), o cTrader envia uma mensagem de Logout em resposta com detalhes do erro no campo Text (tag=58).

Tag Nome do campo Obrigatório Valor Formato FIX Comentários
Standard Header Sim
58 Text Não Qualquer valor válido String Detalhes de rejeição de logon. Usado apenas para mensagens do cTrader para o cliente como resposta a uma mensagem de Logon inválida.
Standard Trailer Sim

Veja exemplos de mensagens de Logout abaixo.

Pedido:

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|

Resposta:

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)

Uma mensagem de entrada/saída é usada para solicitar o reenvio de uma mensagem (ou mensagens), normalmente quando é detetada uma lacuna na numeração sequencial.

Tag Nome do campo Obrigatório Valor Formato FIX Comentários
Standard Header Sim
7 BeginSeqNo Sim Qualquer valor válido Integer Um número de sequência de mensagem do primeiro registo no intervalo a ser reenviado.
16 EndSeqNo Sim Qualquer valor válido Integer Um número de sequência de mensagem do último registo no intervalo a ser reenviado.
Standard Trailer Sim

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

Enviado quando a mensagem recebida não pode ser processada devido a uma violação de regra a nível de sessão. As mensagens recusadas devem ser registadas e deve ser aplicado um incremento ao número de sequência de entrada.

Tag Nome do campo Obrigatório Valor Formato FIX Comentários
Standard Header Sim
45 RefSeqNum Sim Qualquer valor válido SeqNum Um número de sequência da mensagem referenciada.
58 Text Não Qualquer valor válido String Uma string de texto de formato livre.
354 EncodedTextLen Não Qualquer valor válido Extensão Comprimento do campo EncodedText (caracteres não ASCII) em bytes.
355 EncodedText Não Qualquer valor válido Dados Uma representação do campo Text (tag=58), codificada usando o formato especificado no campo MessageEncoding (tag=347) (do cabeçalho padrão). Se a representação ASCII for usada, também deve ser especificada no campo Text (tag=58).
371 RefTagID Não Qualquer valor válido Integer Um número de tag do campo FIX que iniciou a recusa da mensagem.
372 RefMsgType Não Qualquer valor válido String MsgType (tag=35) da mensagem FIX referenciada.
373 SessionRejectReason Não Qualquer valor válido Integer Causas codificadas da rejeição. Os valores válidos são:
0 = Número de tag inválido
1 = Tag obrigatória em falta
2 = Nenhuma tag definida para este tipo de mensagem
3 = Tag não definida
4 = Sem valor para a tag especificada
5 = Valor para esta tag está fora do intervalo
6 = Formato de dados incorreto para o valor
7 = Problema de desencriptação
8 = Erro de assinatura
9 = Erro de CompID
10 = Erro de precisão do SendingTime
11 = MsgType inválido
12 = Erro de validação XML
13 = A tag está a ser repetida
14 = A tag especificada não está na ordem correta
15 = Campos do grupo de repetição não estão na ordem correta
16 = Contagem NumInGroup incorreta para o grupo de repetição
17 = Delimitador de campo (caractere SOH) incluído em valor não-dados
Standard Trailer Sim

Sequence Reset (MsgType(35)=4)

Uma mensagem de entrada/saída não deve ser usada a nível de aplicação. Uma mensagem de Redefinição de Sequência só pode aumentar um número de sequência.

Tag Nome do campo Obrigatório Valor Formato FIX Comentários
Standard Header Sim
123 GapFillFlag Não Yes ou No String Indica que uma mensagem de Redefinição de Sequência está a substituir mensagens administrativas ou de aplicação que não serão reenviadas.
36 NewSeqNo Sim 1 Integer Um novo número de sequência.
Standard Trailer Sim

Mensagens de aplicação

Market Data Request (MsgType(35)=V)

Tag Nome do campo Obrigatório Valor Formato FIX Comentários
Standard Header Sim
262 MDReqID Sim Qualquer valor válido String Um ID de pedido de cotação único. Um novo ID para uma nova subscrição, o mesmo ID usado anteriormente para uma remoção de subscrição.
263 SubscriptionRequestType Sim 1 ou 2 Char 1 = Instantâneo mais atualizações (subscrever).
2 = Desativar pedido anterior de instantâneo mais atualização (cancelar subscrição).
264 MarketDepth Sim 0 ou 1 Integer Será fornecido um livro completo.
0 = Subscrição de profundidade
1 = Subscrição de spot
265 MDUpdateType Sim Qualquer valor válido Integer Apenas a Atualização Incremental é suportada.
267 NoMDEntryTypes Sim 2 Integer Sempre definido como 2 (tanto a oferta de compra como a de venda serão enviadas).
269 MDEntryType Sim 0 ou 1 Char Este grupo de repetição contém uma lista de todos os tipos de Entradas de Dados de Mercado que o solicitante deseja receber.
0 = Bid
1 = Offer
146 NoRelatedSym Sim Qualquer valor válido Integer O número de símbolos solicitados.
55 Symbol Sim Qualquer valor válido Longa(s) Os identificadores de instrumento são fornecidos pela Spotware.
Standard Trailer Sim

Veja exemplos de mensagens de Pedido de Dados de Mercado abaixo.

Para Spots

Pedido:

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|

Resposta:

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

Pedido:

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|

Respostas:

8=FIX.4.4|9=310|35=W|34=2|49=CSERVER|50=QUOTE|52=20180925-12:05:28.284|56=live.theBroker.12345|57=Quote|55=1|268=6|269=1|270=1.11132|271=3000000|278=16|269=1|270=1.11134|271=5000000|278=17|269=1|270=1.11133|271=3000000|278=15|269=0|270=1.1112|271=2000000|278=12|269=0|270=1.11121|271=1000000|278=13|269=0|270=1.11122|271=3000000|278=14|10=247|
8=FIX.4.4|9=693|35=X|34=2|49=CSERVER|50=QUOTE|52=20170117-11:13:44.461|56=live.theBroker.12345|57=any_string|268=12|279=0|269=1|278=7475|55=1|270=1.0691|271=2000000|279=0|269=1|278=7476|55=1|270=1.06911|271=3000000|279=0|269=1|278=7484|55=1|270=1.06931|271=34579000|279=0|269=1|278=7485|55=1|270=1.06908|271=1000000|279=0|269=1|278=7483|55=1|270=1.06906|271=500000|279=0|269=1|278=7482|55=1|270=1.06907|271=500000|279=0|269=1|278=7488|55=1|270=1.06909|271=3000000|279=0|269=0|278=7468|55=1|270=1.06898|271=500000|279=0|269=0|278=7467|55=1|270=1.06874|271=32371000|279=0|269=0|278=7457|55=1|270=1.06899|271=1000000|279=0|269=0|278=7478|55=1|270=1.06896|271=7000000|279=0|269=0|278=7477|55=1|270=1.06897|271=1500000|10=111|
8=FIX.4.4|9=376|35=X|34=3|49=CSERVER|50=QUOTE|52=20170117-11:13:44.555|56=live.theBroker.12345|57=any_string|268=8|279=0|269=0|278=7491|55=1|270=1.06897|271=1000000|279=0|269=0|278=7490|55=1|270=1.06898|271=1000000|279=0|269=0|278=7489|55=1|270=1.06874|271=32373000|279=0|269=1|278=7496|55=1|270=1.06931|271=34580000|279=2|278=7477|55=1|279=2|278=7468|55=1|279=2|278=7467|55=1|279=2|278=7484|55=1|10=192|

Market Data Snapshot/Full Refresh (MsgType(35)=W)

Tag Nome do campo Obrigatório Valor Formato FIX Comentários
Standard Header Sim
262 MDReqID Sim Qualquer valor válido String O ID do pedido de dados de mercado enviado anteriormente.
55 Symbol Sim Qualquer valor válido Longa(s) Os identificadores de instrumento são fornecidos pela Spotware.
268 NoMDEntries Sim Qualquer valor válido Integer O número de entradas seguintes.
269 MDEntryType Não 0 ou 1 Char Os valores válidos são:
0 = Oferta de compra
1 = Oferta de venda
Obrigatório apenas quando NoMDEntries (tag=268) > 0.
299 QuoteEntryID Não Qualquer valor válido String Uma identificação única da cotação como parte do QuoteSet.
270 MDEntryPx Não 1.2345 Preço Um preço da Entrada de Dados de Mercado. Necessário apenas quando NoMDEntries (tag=268) > 0.
271 MDEntrySize Não 500000 Volume Volume da Entrada de Dados de Mercado. Necessário apenas quando NoMDEntries (tag=268) > 0.
278 MDEntryID Não Qualquer valor válido String Um identificador único da Entrada de Dados de Mercado.
Standard Trailer Sim

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

Tag Nome do campo Obrigatório Valor Formato FIX Comentários
Standard Header Sim
262 MDReqID Sim Qualquer valor válido String O ID do pedido de dados de mercado enviado anteriormente.
268 NoMDEntries Sim Qualquer valor válido Integer O número de entradas seguintes. Este grupo repetitivo contém uma lista de todos os tipos de Entradas de Dados de Mercado que o solicitante deseja receber.
279 MDUpdateAction Sim 0 ou 2 Char Um tipo de ação de atualização de Dados de Mercado. Os valores válidos são:
0 = Novo
2 = Eliminar
269 MDEntryType Não 0 ou 1 Char Os valores válidos são:
0 = Bid
1 = Offer
278 MDEntryID Sim Qualquer valor válido String Um ID da Entrada de Dados de Mercado.
55 Symbol Sim Qualquer valor válido Longa(s) Os identificadores de instrumento são fornecidos pela Spotware.
270 MDEntryPx Não 1.2345 Preço Necessário apenas quando MDUpdateAction (tag=279) = 0.
271 MDEntrySize Não 10000 Duplicar Necessário apenas quando MDUpdateAction (tag=279) = 0.
Standard Trailer Sim

New Order Single (MsgType(35)=D)

Uma mensagem de Nova Ordem Única tem o seguinte formato.

Tag Nome do campo Obrigatório Valor Formato FIX Comentários
Standard Header Sim
11 ClOrdID Sim Qualquer valor válido String Um identificador único da ordem atribuído pelo cliente.
55 Symbol Sim Qualquer valor válido Longa(s) Os identificadores de instrumento são fornecidos pela Spotware.
54 Side Sim 1 ou 2 Integer 1 = Buy
2 = Sell
60 TransactTime Sim Qualquer valor válido Carimbo de data/hora Hora do pedido gerada pelo cliente.
38 OrderQty Sim Qualquer valor válido Qty O número de ações encomendadas. Isto representa o número de ações para ações ou, com base na convenção normal, o número de contratos para opções, futuros, obrigações convertíveis, etc. A precisão máxima é de 0,01. Antes do FIX 4.2, o tipo deste campo era "Integer".
40 OrdType Sim 1, 2 ou 3 Char 1 = Mercado, a ordem será processada pelo esquema Imediato ou Cancelar (IOC) (TimeInForce, tag=59).
2 = Limite, a ordem será processada pelo esquema Válido até Cancelar (GTC) (TimeInForce, tag=59).
3 = Stop, a ordem será processada pelo esquema Válido até Cancelar (GTC) (TimeInForce, tag=59).
44 Price Não Qualquer valor válido Preço O pior preço para o cliente que o cliente aceitará. Necessário apenas quando OrdType (tag=40) = 2, caso em que a ordem não será preenchida a menos que este preço possa ser cumprido.
99 StopPx Não Qualquer valor válido Preço Um preço que ativa a ordem de stop. Necessário apenas quando OrdType (tag=40) = 3, caso em que a ordem não será preenchida a menos que este preço possa ser cumprido.
59 TimeInForce Não 1, 3 or 6 String Obsoleto, este valor será ignorado. TimeInForce será detetado automaticamente dependendo de OrdType (tag=40) e ExpireTime (tag=126):
1 = Válido até Cancelar (GTC), será usado apenas para ordens de limite e stop (OrdType, tag=40) apenas se ExpireTime (tag=126) não estiver definido.
3 = Imediato ou Cancelar (IOC), será usado apenas para ordens de mercado (OrdType, tag=40).
6 = Válido até Data (GTD), será usado apenas para ordens de limite e stop (OrdType, tag=40) apenas se ExpireTime (tag=126) estiver definido.
126 ExpireTime Não 20140215-07:24:55 Carimbo de data/hora Hora de expiração no formato "AAAAMMDD-HH:MM:SS". Se atribuído, a ordem será processada pelo esquema GTD (TimeInForce: GTD).
721 PosMaintRptID Não Qualquer valor válido String Um ID de posição onde esta ordem deve ser colocada. Se não for definido, uma nova posição será criada e o seu ID será devolvido na mensagem de Relatório de Execução. Pode ser especificado apenas para contas com cobertura.
494 Designation Não Qualquer valor válido String Uma etiqueta de ordem personalizada.
Standard Trailer Sim

Veja exemplos de mensagens de Nova Ordem Única abaixo.

Ordem de mercado para nova posição

Pedido:

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|

Respostas:

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|

Ordem de mercado para posição existente

Pedido:

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|

Respostas:

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

Ordem de limite para posição existente

Pedido:

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|

Resposta:

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|

Ordem de stop para nova posição

Pedido:

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|

Resposta:

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)

Uma mensagem de Pedido de Estado da Ordem é usada por uma instituição para gerar uma mensagem de estado da ordem de volta do trader. Para uma interação correta, é muito importante ter identificadores de ordem de cliente únicos (ClOrdID) para todas as ordens.

Tag Nome do campo Obrigatório Valor Formato FIX Comentários
Standard Header Sim
11 ClOrdID Sim Qualquer valor válido String Um identificador único da ordem atribuído pelo cliente.
54 Side Não 1 ou 2 Integer 1 = Buy
2 = Sell
Standard Trailer Sim

Veja exemplos de mensagens de Pedido de Estado da Ordem abaixo.

Pedido:

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|

Resposta:

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)

Uma mensagem de Pedido de Estado de Massa de Ordens solicita o estado das ordens que correspondem aos critérios especificados no pedido. A resposta será devolvida como um número de mensagens de Relatório de Execução (uma para cada ordem), ou como uma mensagem de Rejeição de Mensagem de Negócio se nenhuma ordem for encontrada.

Tag Nome do campo Obrigatório Valor Formato FIX Comentários
Standard Header Sim
584 MassStatusReqID Sim Qualquer valor válido String Um ID único do Pedido de Estado em Massa atribuído pelo cliente.
585 MassStatusReqType Sim Qualquer valor válido Integer 7 = Estado para todas as ordens.
Apenas o valor 7 é atualmente suportado.
225 IssueDate Não Qualquer valor válido String Se definido, a resposta conterá apenas ordens criadas antes desta data.
Standard Trailer Sim

Veja abaixo exemplos de mensagens de Pedido de Estado em Massa de Ordens.

Pedido:

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|

Resposta:

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)

Uma mensagem de Relatório de Execução para uma ordem aceite tem o seguinte formato.

Tag Nome do campo Obrigatório Valor Formato FIX Comentários
Standard Header Sim
37 OrderID Sim Qualquer valor válido String Um ID de ordem do cTrader.
11 ClOrdID Não Qualquer valor válido String Um identificador único da ordem atribuído pelo cliente.
911 TotNumReports Não Qualquer valor válido Integer O número total de relatórios devolvidos em resposta à mensagem de Pedido de Estado em Massa de Ordens.
150 ExecType Sim Qualquer valor válido Char 0 = New
4 = Canceled
5 = Replace
8 = Rejected
C = Expired
F = Trade
I = Order Status
39 OrdStatus Sim Qualquer valor válido Char 0 = Nova
1 = Parcialmente preenchida
2 = Preenchida
8 = Rejeitada
4 = Cancelada (quando a ordem é parcialmente preenchida, é devolvido Canceled significando (tag=151), LeavesQty é cancelada e não será posteriormente preenchida).
C = Expirada
55 Symbol Não Qualquer valor válido Longa(s) Os identificadores de instrumento são fornecidos pela Spotware.
54 Side Não 1 ou 2 Integer 1 = Comprar
2 = Vender
60 TransactTime Não Qualquer valor válido Carimbo de data/hora Hora de execução de uma transação representada pela mensagem de Relatório de Execução (em UTC).
6 AvgPx Não Qualquer valor válido Integer Um preço ao qual a transação foi preenchida. Para uma ordem IOC ou GTD, este é o Preço Médio Ponderado por Volume (VWAP) da ordem preenchida.
38 OrderQty Não Qualquer valor válido Qty Isto representa o número de ações para ações ou, com base na convenção normal, o número de contratos para opções, futuros, obrigações convertíveis, etc. Antes do FIX 4.2, o tipo deste campo era "Integer".
151 LeavesQty Não Qualquer valor válido Qty O número de ordens ainda por preencher. Os valores possíveis estão entre 0 (totalmente preenchida) e OrderQty (parcialmente preenchida).
14 CumQty Não Qualquer valor válido Qty O número total de ordens que foram preenchidas.
32 LastQty Não Qualquer valor válido Qty A quantidade comprada/vendida de ordens que foram preenchidas neste (último) preenchimento.
40 OrdType Não 1 ou 2 Char 1 = Mercado
2 = Limite
44 Price Não Qualquer valor válido Preço Se fornecido numa mensagem de Nova Ordem Única, é repetido nesta mensagem de Relatório de Execução.
99 StopPx Não Qualquer valor válido Preço Se fornecido numa mensagem de Nova Ordem Única, é repetido nesta mensagem de Relatório de Execução.
59 TimeInForce Não 1, 3 ou 6 String 1 = Válida até Cancelar (GTC)
3 = Imediata ou Cancelar (IOC)
6 = Válida até Data (GTD)
126 ExpireTime Não 20140215-07:24:55 Carimbo de data/hora Se fornecido numa mensagem de Nova Ordem Única, é repetido nesta mensagem de Relatório de Execução.
58 Text Não Qualquer valor válido String Quando possível, uma mensagem explicará o Relatório de Execução.
103 OrdRejReason Não 0 Integer 0 = OrdRejReason.BROKER_EXCHANGE_OPTION
721 PosMaintRptID Não Qualquer valor válido String Um ID de posição.
494 Designation Não Qualquer valor válido String Uma etiqueta de ordem personalizada do cliente.
584 MassStatusReqID Não Qualquer valor válido String Um ID único do pedido de estado em massa atribuído pelo cliente.
1000 AbsoluteTP Não Qualquer valor válido Preço Um preço absoluto ao qual o take profit será ativado.
1001 RelativeTP Não Qualquer valor válido Preço Uma distância em pips do preço de entrada ao qual o take profit será ativado.
1002 AbsoluteSL Não Qualquer valor válido Preço Um preço absoluto ao qual o stop loss será ativado.
1003 RelativeSL Não Qualquer valor válido Preço Uma distância em pips do preço de entrada ao qual o stop loss será ativado.
1004 TrailingSL Não N ou Y Boolean Indica se o stop loss é móvel.
N = O stop loss não é móvel.
Y = O stop loss é móvel.
1005 TriggerMethodSL Não Qualquer valor válido Integer Um método de ativação indicado do stop loss.
1 = O stop loss será ativado pelo lado da negociação.
2 = O stop loss será ativado pelo lado oposto (compra para posições de compra e venda para posições de venda).
3 = O stop loss será ativado após dois ticks consecutivos de acordo com o lado da negociação.
4 = O stop loss será ativado após dois ticks consecutivos de acordo com o lado oposto (o segundo tick de compra para posições de compra e o segundo tick de venda para posições de venda).
1006 GuaranteedSL Não N ou Y Boolean Indica se o stop loss é garantido.
N = O stop loss não é garantido.
Y = O stop loss é garantido.
Standard Trailer Sim

Veja um exemplo de Nova Ordem Única no final do guia.

Business Message Reject (MsgType(35)=j)

Este tipo de mensagem é enviado quando o sistema não consegue processar um pedido de subscrição ou uma ordem não pode ser executada.

Tag Nome do campo Obrigatório Valor Formato FIX Comentários
Standard Header Sim
45 RefSeqNum Não Qualquer valor válido Integer MsgSeqNum (tag=34) da mensagem rejeitada.
372 RefMsgType Não Qualquer valor válido String MsgType (tag=35) da mensagem FIX referenciada.
379 BusinessRejectRefID Não Qualquer valor válido String Valor do campo ID de nível de negócio na mensagem referenciada. Obrigatório, a menos que o campo ID correspondente não tenha sido especificado.
380 BusinessRejectReason Sim 0 Integer Um código para identificar o motivo de uma mensagem de Rejeição de Mensagem de Negócio.
0 = Outro
58 Text Não Qualquer valor válido String Quando possível, uma mensagem para explicar o motivo da rejeição.
Standard Trailer Sim

Veja um exemplo de uma mensagem de Rejeição de Mensagem de Negócio abaixo.

8=FIX.4.4|9=149|35=j|34=2|49=CSERVER|52=20170105-06:36:00.912|56=live.theBroker.12345|57=any_string|58=Message to explain reason for rejection|379=u4Jr7Rr5t2VS7HSP|380=0|10=123|

Request for Positions (MsgType(35)=AN)

Tag Nome do campo Obrigatório Valor Formato FIX Comentários
Standard Header Sim
710 PosReqID Sim Qualquer valor válido String Um ID de pedido único (definido pelo cliente).
721 PosMaintRptID Não Qualquer valor válido String Um ID de posição a solicitar. Se não definido, todas as posições abertas serão devolvidas.
Standard Trailer Sim

Veja exemplos de mensagens de Pedido de Posições abaixo.

Pedido:

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|

Resposta:

8=FIX.4.4|9=163|35=AP|34=98|49=CSERVER|50=TRADE|52=20170117-10:09:54.076|56=live.theBroker.12345|57=any_string|55=1|710=876316401|721=101|727=1|728=0|730=1.06671|702=1|704=0|705=30000|10=182|

Position Report (MsgType(35)=AP)

Tag Nome do campo Obrigatório Valor Formato FIX Comentários
Standard Header Sim
710 PosReqID Sim Qualquer valor válido String Um ID da mensagem de Pedido de Posições.
721 PosMaintRptID Não Qualquer valor válido String Um ID de posição, que não é definido se PosReqResult (tag=728) não for VALID_REQUEST.
727 TotalNumPosReports Sim Qualquer valor válido String A contagem total de Relatórios de Posição numa sequência quando PosReqResult (tag=728) é VALID_REQUEST, caso contrário = 0.
728 PosReqResult Sim 0 ou 2 String 0 = Pedido válido
2 = Não foram encontradas posições abertas que correspondam aos critérios.
55 Symbol Não Qualquer valor válido String Um símbolo para o qual o Relatório de Posição atual é preparado. Não é definido se PosReqResult (tag=728) não for VALID_REQUEST.
702 NoPositions Não 1 String 1 quando PosReqResult (tag=728) é VALID_REQUEST, caso contrário não é definido.
704 LongQty Não Qualquer valor válido String Volume aberto da posição no caso do lado de compra da negociação, igual a 0 no caso do lado de venda da negociação. Não definido se PosReqResult (tag=728) não for VALID_REQUEST.
705 ShortQty Não Qualquer valor válido String Volume aberto da posição no caso do lado de venda da negociação, igual a 0 no caso do lado de compra da negociação. Não definido se PosReqResult (tag=728) não for VALID_REQUEST.
730 SettlPrice Não Qualquer valor válido String Um preço médio do volume aberto no Relatório de Posição atual.
1000 AbsoluteTP Não Qualquer valor válido Preço Um preço absoluto ao qual o take profit será ativado.
1002 AbsoluteSL Não Qualquer valor válido Preço Um preço absoluto ao qual o stop loss será ativado.
1004 TrailingSL Não Qualquer valor válido Boolean Indica se o stop loss é móvel.
N = O stop loss não é móvel.
Y = O stop loss é móvel.
1005 TriggerMethodSL Não Qualquer valor válido Integer Um método de ativação indicado do stop loss.
1 = O stop loss será ativado pelo lado da negociação.
2 = O stop loss será ativado pelo lado oposto (compra para posições de compra e venda para posições de venda).
3 = O stop loss será ativado após dois ticks consecutivos de acordo com o lado da negociação.
4 = O stop loss será ativado após dois ticks consecutivos de acordo com o lado oposto (segundo tick de compra para posições de compra e segundo tick de venda para posições de venda).
1006 GuaranteedSL Não Qualquer valor válido Boolean Indica se o stop loss é garantido.
N = O stop loss não é garantido.
Y = O stop loss é garantido.
Standard Trailer Sim

Order Cancel Request (MsgType(35)=F)

Tag Nome do campo Obrigatório Valor Formato FIX Comentários
Standard Header Sim
41 OrigClOrdID Sim Qualquer valor válido String Um identificador único da ordem que vai ser cancelada, atribuído pelo cliente.
37 OrderID Não Qualquer valor válido String Um ID único da ordem devolvido pelo cServer.
11 ClOrdID Sim Qualquer valor válido String Um ID único do pedido de cancelamento atribuído pelo cliente.
Standard Trailer Sim

Veja exemplos de mensagens de Pedido de Cancelamento de Ordem abaixo.

Pedido:

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|

Resposta (sucesso):

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|

Resposta (falha):

8=FIX.4.4|9=174|35=j|34=3|49=CSERVER|50=TRADE|52=20170721-13:41:21.856|56=live.theBroker.12345|57=Trade|58=ORDER_NOT_FOUND:Order with clientOrderId=n9Tm8x1AavO5 not found.|379=jR8dBPcZEQa9|380=0|10=075|

Order Cancel Reject (MsgType(35)=9)

Tag Nome do campo Obrigatório Valor Formato FIX Comentários
Standard Header Sim
37 OrderID Sim Qualquer valor válido String Um identificador único da ordem que o sistema não conseguiu cancelar.
11 ClOrdID Sim Qualquer valor válido String Um identificador único do Pedido de Cancelamento de Ordem.
41 OrigClOrdID Não Qualquer valor válido String Um identificador único da ordem que se tentou cancelar, atribuído pelo cliente.
39 OrdStatus Sim Qualquer valor válido Char 0 = Nova
1 = Parcialmente preenchida
2 = Preenchida
8 = Rejeitada
4 = Cancelada (quando a ordem está parcialmente preenchida, é devolvido Canceled significando (tag=151), LeavesQty é cancelada e não será posteriormente preenchida).
C = Expirada
434 CxlRejResponseTo Sim 1 ou 2 Char 1 = Rejeitar ordem de cancelamento.
2 = Rejeitar ordem de alteração de outro terminal.
58 Text Não Qualquer valor válido String Uma ordem está em execução.
Standard Trailer Sim

Veja um exemplo de uma mensagem de Rejeição de Cancelamento de Ordem abaixo.

Resposta:

8=FIX.4.4|9=156|35=9|34=3|49=CSERVER|50=TRADE|52=20181024-12:35:02.896|56=live.theBroker.12345|57=Trade|11=gBljx7YOg5jY|37=629|39=0|41=FdXLfS0tTyUL|58=Order is under execution|434=1|10=109|

Order Cancel/Replace Request (MsgType(35)=G)

Tag Nome do campo Obrigatório Valor Formato FIX Comentários
Standard Header Sim
41 OrigClOrdID Sim Any valid value String Um identificador único da ordem que vai ser alterada, atribuído pelo cliente.
37 OrderID Não Qualquer valor válido String Um ID único da ordem original, que vai ser alterada, atribuído pelo servidor. Um método preferível a usar.
11 ClOrdID Sim Qualquer valor válido String Um ID único do pedido de alteração atribuído pelo cliente.
38 OrderQty Sim Qualquer valor válido Qty Uma quantidade existente ou recentemente especificada para substituir o valor antigo.
44 Price Não Qualquer valor válido Preço Um preço-limite existente ou recentemente especificado para substituir o valor antigo. Válido apenas para ordens de limite.
99 StopPx Não Qualquer valor válido Preço Um preço de stop existente ou recentemente especificado para substituir o valor antigo. Válido apenas para ordens de stop.
126 ExpireTime Não 20140215-07:24:55 Carimbo de data/hora Tempo de expiração existente ou recentemente especificado. Válido apenas para ordens pendentes.
Standard Trailer Sim

Veja exemplos de mensagens de Pedido de Cancelamento/Substituição de Ordem abaixo.

Pedido:

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|

Resposta (sucesso):

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|

Resposta (falha):

8=FIX.4.4|9=171|35=j|34=3|49=CSERVER|50=TRADE|52=20170721-13:42:18.784|56=live.theBroker.12345|57=Trade|58=ORDER_NOT_FOUND:Order with orderId:4429421711699105367 isn't found|379=NXek3EzJvMme|380=0|10=245|

Market Data Request Reject (MsgType(35)=Y)

Tag Nome do campo Obrigatório Valor Formato FIX Comentários
Standard Header Sim
262 MDReqID Sim Qualquer valor válido String Deve referir-se ao MDReqID (tag=262) do pedido.
281 MDReqRejReason Não Qualquer valor válido Integer 0 = Símbolo desconhecido
4 = SubscriptionRequestType (tag=263) não suportado
5 = MarketDepth (tag=264) não suportado
Standard Trailer Sim

Veja exemplos de mensagens de Rejeição de Pedido de Dados de Mercado abaixo.

Pedido:

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|

Rejeitar:

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|

Pedido:

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|

Rejeitar:

8=FIX.4.4|9=157|35=Y|34=6|49=CSERVER|50=QUOTE|52=20170920-09:52:13.201|56=live.theBroker.12345|57=Quote|58=INVALID_REQUEST: MarketDepth should be either 0 or 1|262=EwOhiWvMdCpc|281=5|10=088|

Security List Request (MsgType(35)=x)

Tag Nome do campo Obrigatório Valor Formato FIX Comentários
Standard Header Sim
320 SecurityReqID Sim Qualquer valor válido String Um ID único do Pedido de Definição de Segurança.
559 SecurityListRequestType Sim 0 Integer O tipo de Pedido de Lista de Segurança a ser feito. Suportado apenas 0 = Symbol (tag=55).
55 Symbol Não Qualquer valor válido Integer Um ID para resolver o nome do símbolo.
Standard Trailer Sim

Veja exemplos de mensagens de Pedido de Lista de Segurança abaixo.

Pedido:

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|

Resposta:

8=FIX.4.4|9=158|35=y|34=3|49=CSERVER|50=TRADE|52=20180427-12:24:27.107|56=live.theBroker.12345|57=Trade|320=ILCea0JkdQEm|322=responce:ILCea0JkdQEm|560=0|146=1|55=39|1007=NZDCHF|1008=4|10=088|

Security List (MsgType(35)=y)

Tag Nome do campo Obrigatório Valor Formato FIX Comentários
Standard Header Sim
320 SecurityReqID Sim Qualquer valor válido String Um ID único do Pedido de Definição de Segurança.
322 SecurityResponseID Sim Qualquer valor válido String Um ID único da resposta da Lista de Segurança.
560 SecurityRequestResult Sim 0 Integer Resultados devolvidos à mensagem de Pedido de Segurança. Os valores válidos são:
0 = Pedido válido.
1 = Pedido inválido ou não suportado.
2 = Não foram encontrados instrumentos que correspondam aos critérios de seleção.
3 = Não autorizado a recuperar dados do instrumento.
4 = Dados do instrumento temporariamente indisponíveis.
5 = Pedido de dados do instrumento não suportado.
146 NoRelatedSym Não Qualquer valor válido Integer Especifica o número de símbolos (instrumentos) repetidos.
55 Symbol Não Qualquer valor válido Integer Os identificadores de instrumento são fornecidos pela Spotware.
1007 SymbolName Não Qualquer valor válido String Um nome de símbolo.
1008 SymbolDigits Não Qualquer valor válido Integer Dígitos do símbolo. Valores possíveis de 0 a 5.
Standard Trailer Sim

Veja um exemplo de uma mensagem de Lista de Segurança abaixo.

Resposta:

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|