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|