Informações sobre o protocolo ALI, protocolo de Market Data para negociação e formação de preços de referência na Base Exchange.
| Versão | Compatível com versão anterior |
Descrição da Alteração | Data |
|---|---|---|---|
| 3.0 | Não | Adicionada mensagem Negócio Direto; Adicionados os campos UpperPrice e LowerPrice à mensagem Preço de Referência MCV; Diretório de Ativos: removidos campos SecuritySubType, SecurityGroup, MaxOrderQty |
11/08/2026 |
| 2.0 | Não | Removida a mensagem Diretório de Participantes; Diretório de Ativos: - alterado PriceDecimals para PriceIncrement, - adicionado MaxOrderVolume, - alterado o tipo de dado do SecuritySubType de Alfanumérico para Numérico, - alterado o tipo de dado do SecurityGroup de Alfanumérico para Numérico; Inclusão de Ordem: FirmId alterado para FirmCode, tamanho 4; Ordem Executada: AggressorFirmId alterado para AggressorFirmCode, tamanho 4 |
21/07/2025 |
| 1.0 | - | Versão original | 11/08/2024 |
ALI é um protocolo nativo de dados de mercado em formato binário, projetado com foco em simplicidade e desempenho. As mensagens de dados de mercado incluem instrumentos disponíveis diariamente, status dos instrumentos, status de mercado, livros de ofertas e dados de negócios.
O protocolo ALI consiste em um canal de comunicação unidirecional entre o gateway de dados de mercado e a aplicação cliente, intermediado por um protocolo de nível inferior, o BaseUDP. As mensagens de saída, ou seja, do gateway de dados de mercado para o cliente, são sempre sequenciadas e entregues por meio de um dos canais multicast de Market Data.
Em caso de perda de mensagens pelo cliente, o usuário pode enviar uma solicitação de retransmissão para uma das instâncias retransmissoras do ALI, utilizando novamente o protocolo BaseUDP, especificando as mensagens necessárias para a resincronização. Caso o cliente tenha perdido muitas mensagens ou deseje obter uma visão atualizada do mercado, existe também a opção de solicitar o snapshot mais recente disponível, utilizando o protocolo BaseTCP.
Todos os comprimentos dos campos são considerados em bytes.
Campos do tipo Alfanumérico permitem caracteres ASCII maiúsculos e minúsculos. Campos Alfanuméricos de largura fixa são preenchidos à direita com espaços.
Campos do tipo Numérico são representados em formato binário, big-endian e unsigned.
O campo Preço é um campo Numérico com 4 casas decimais implícitas.
| Nome | Comprimento | Tipo | Observações |
|---|---|---|---|
| Type | 1 | Alfanumérico | S = Evento de Sistema |
| Timestamp | 8 | Numérico | Nanosegundos desde a meia-noite |
| Event Code | 1 | Alfanumérico | O = Início das Mensagens; S = Início do Horário de Negociação; E = Fim do Horário de Negociação; C = Fim das Mensagens |
| Nome | Comprimento | Tipo | Observações |
|---|---|---|---|
| Type | 1 | Alfanumérico | R = Diretório de Ativos |
| Timestamp | 8 | Numérico | Nanosegundos desde a meia-noite |
| SecurityId | 2 | Numérico | SecurityId atribuído exclusivamente ao ativo para o dia |
| Symbol | 8 | Alfanumérico | Código do ativo utilizado no sistema de execução |
| RoundLotSize | 4 | Numérico | Quantidade de ações que compõem um lote padrão |
| PriceIncrement | 4 | Numérico | Incremento mínimo de preço |
| SecurityType | 1 | Alfanumérico | Identifica a classe do ativo |
| Authenticity | 1 | Alfanumérico | P = Produção, T = Teste |
| VCMThreshold | 2 | Numérico | Limite de disparo do MCV |
| MaxOrderVolume | 8 | Numérico | Volume máximo permitido por ordem para o ativo |
| Nome | Comprimento | Tipo | Observações |
|---|---|---|---|
| Type | 1 | Alfanumérico | H = Ação de Negociação do Ativo |
| Timestamp | 8 | Numérico | Nanosegundos desde a meia-noite |
| SecurityId | 2 | Numérico | SecurityId identificando o ativo |
| TradingState | 1 | Alfanumérico | H = Suspenso , T = Em Negociação |
| Reason | 1 | Alfanumérico | B = Mudança de status proveniente do mercado de listagem; O = Mudança de status por motivo operacional |
| Nome | Comprimento | Tipo | Observações |
|---|---|---|---|
| Type | 1 | Alfanumérico | P = Preço de Referência MCV |
| Timestamp | 8 | Numérico | Nanosegundos desde a meia-noite |
| SecurityId | 2 | Numérico | SecurityId identificando o ativo |
| VCMReferencePrice | 4 | Numérico | Preço de Referência MCV |
| LowerPrice | 4 | Numérico | Limite inferior de preço |
| UpperPrice | 4 | Numérico | Limite superior de preço |
| Nome | Comprimento | Tipo | Observações |
|---|---|---|---|
| Type | 1 | Alfanumérico | V = Disparo de MCV |
| Timestamp | 8 | Numérico | Nanosegundos desde a meia-noite |
| SecurityId | 2 | Numérico | SecurityId identificando o ativo |
| CoolingOffStartTime | 8 | Numérico | Horário de início do período de resfriamento, em nanosegundos desde a meia-noite |
| CoolingOffEndTime | 8 | Numérico | Horário de término do período de resfriamento, em nanosegundos desde a meia-noite |
| VCMReferencePrice | 4 | Numérico | Preço de referência durante o período de resfriamento |
| VCMLowerPrice | 4 | Numérico | Banda inferior de preço durante o período de resfriamento |
| VCMUpperPrice | 4 | Numérico | Banda superior de preço durante o período de resfriamento |
| Nome | Comprimento | Tipo | Observações |
|---|---|---|---|
| Type | 1 | Alfanumérico | A = Inclusão de Ordem |
| Timestamp | 8 | Numérico | Nanosegundos desde a meia-noite |
| OrderRefNum | 8 | Numérico | Número único de referência da ordem |
| Side | 1 | Alfanumérico | B = Compra, S = Venda |
| Quantity | 4 | Numérico | Quantidade total de ações associadas à ordem |
| SecurityId | 2 | Numérico | SecurityId identificando o ativo |
| Price | 4 | Numérico | Preço exibido da nova ordem |
| FirmCode | 4 | Numérico | Identificador do Participante de Negociação |
| Nome | Comprimento | Tipo | Observações |
|---|---|---|---|
| Type | 1 | Alfanumérico | U = Substituição de Ordem |
| Timestamp | 8 | Numérico | Nanosegundos desde a meia-noite |
| OrigOrderRefNum | 8 | Numérico | Número de referência da ordem original |
| NewOrderRefNum | 8 | Numérico | Novo número de referência da ordem |
| Quantity | 4 | Numérico | Nova quantidade exibida |
| Price | 4 | Numérico | Novo preço exibido |
| Nome | Comprimento | Tipo | Observações |
|---|---|---|---|
| Type | 1 | Alfanumérico | D = Exclusão de Ordem |
| Timestamp | 8 | Numérico | Nanosegundos desde a meia-noite |
| OrderRefNum | 8 | Numérico | Número de referência da ordem cancelada |
| Nome | Comprimento | Tipo | Observações |
|---|---|---|---|
| Type | 1 | Alfanumérico | E = Ordem Executada |
| Timestamp | 8 | Numérico | Nanosegundos desde a meia-noite |
| OrderRefNum | 8 | Numérico | Número único de referência da ordem |
| Quantity | 4 | Numérico | Quantidade executada |
| MatchNumber | 8 | Numérico | Número único de identificação do negócio |
| AggressorFirmCode | 4 | Numérico | Identificador do Participante de Negociação agressor |
| Nome | Comprimento | Tipo | Observações |
|---|---|---|---|
| Type | 1 | Alfanumérico | c = Negócio Direto |
| Timestamp | 8 | Numérico | Nanosegundos desde a meia-noite |
| SecurityId | 2 | Numérico | SecurityId identificando o ativo |
| Price | 4 | Numérico | Preço da negociação |
| Quantity | 4 | Numérico | Quantidade total negociada |
| MatchNumber | 8 | Numérico | Número único de identificação do negócio |
| FirmCode | 4 | Numérico | Identificador do Participante de Negociação |
| Nome | Comprimento | Tipo | Observações |
|---|---|---|---|
| Type | 1 | Alfanumérico | B = Negócio Cancelado |
| Timestamp | 8 | Numérico | Nanosegundos desde a meia-noite |
| MatchNumber | 8 | Numérico | MatchNumber do negócio cancelado |