O documento apresenta um manual de usuário para o Multigateway, fornecendo instruções sobre seu funcionamento e estrutura. É dividido em seções sobre objetivos, aplicações, definições, procedimentos do protocolo API e FIX, além de classes e funções da DLL e LIB para acesso ao Multigateway.
2. MANUAL DO USUÁRIO Utilização Página/Folha
MULTIGATEWAY Externa 1/1
Capítulo Revisão Data
Apresentação 02 30/05/08
Este manual é dirigido às Sociedades Corretoras que se utilizam de ferramentas on line (como Home
Brokers) para se conectarem e realizarem negociações on line. Seu conteúdo apresenta instruções sobre o
funcionamento e as estruturas que compõem o Multigateway, detalhando suas funcionalidades, estrutura de
dados, características de conexões com os clientes e com o Sistema de Negociação MEGA BOLSA.
Este manual deve ser estudado pelos gestores e funcionários das instituições que estejam envolvidos com o
assunto e obtiveram o serviço.
O conteúdo do documento é dividido da seguinte forma:
Objetivos: orientar os usuários no desenvolvimento de soluções para o tratamento das
informações disponibilizadas pelo Multigateway.
Capítulos subseqüentes..Protocolo API, Protocolo FIX,.Mensagens FIX
A BOVESPA divulgará aos usuários que receberam este manual as atualizações com eventuais revisões
nos capítulos, sempre que necessário.
Para qualquer solicitação de acesso ao Multigateway, deverão ser consultadas as orientações contidas no
site www.bovespanet.com.br Normas / Roteamento de Ordens / Conexões Automatizadas
O suporte técnico às instituições envolvidas nesse processo será dado pela Central de Atendimento pelo
telefone: (11) 3233-2333 ou e-mail: cab@bovespa.com.br.
GTW 00 Apresentação_ext.doc
3. MANUAL DO USUÁRIO Utilização Página/Folha
MULTIGATEWAY Externa 1/1
Capítulo Revisão Data
03 01/10/08
Alterações
Com a finalidade de facilitar a identificação das alterações ocorridas no sistema, apresentamos o histórico
das modificações ocorridas:
Multigateway: 01/10/2008
Regras do Sistema (Cap. I – Objetivo, Aplicação e Definições,
item 3.3)
Inclusão de regras do sistema Inclusão
API (Cap. I I – Procedimentos, item 1)
strUserID As String (nota referente a restrição de tamanho de
campo. Inclusão
FIX (Cap. I I – Procedimentos, item 2.2.4.1 - NewOrderSingle
Inclusão
Inclusão de nota referente a restrição de tamanho de campo.
Inclusão
Multigateway: 30/05/2008
Regras do Sistema (Cap. I – Objetivo, Aplicação e Definições,
item 3.2)
Inclusão de regras do sistema Inclusão
Restrições (Cap. I – Objetivo, Aplicação e Definições, item
3.3)
Inclusão de restrições do sistema Inclusão
Utilização Básica (Cap. II Procedimentos item 1.4.2)
Inclusão de novas instruções de utilização básica Inclusão
HBConnection (Cap. II Procedimentos item 1.4.3.1)
Alteração de método Alteração
HBConnection2 (Cap. II Procedimentos item 1.4.3.2)
Inclusão de interface Inclusão
HBOrderBookResponse (Cap. II Procedimentos item 1.4.3.16)
Inclusão de informações de retorno Inclusão
HBOrderBookResponse2 (Cap. II Procedimentos item
1.4.3.17)
Inclusão de informações de retorno Inclusão
NewOrderSingle (Cap. II Procedimentos item 2.2.4.1)
Inclusão do campo 38 (OrderQty) Inclusão
ExecutionReport (Cap. II Procedimentos item 2.2.4.4)
Inclusão do campo 38 (OrderQty) Inclusão
OrderCancelReplace (Cap. II Procedimentos item 2.2.4.5)
Inclusão do campo 38 (OrderQty) Inclusão
Cap II – Item 3 – Mensagens
Inclusão do item Inclusão
GTW 00 Alterações_ext.doc
4. MANUAL DO USUÁRIO Utilização Página/Folha
MULTIGATEWAY Externa 2/2
Capítulo Revisão Data
03 01/10/08
Alterações
Multigateway: 12/05/2008
Mensagem de Solicitação de Registro de Nova Oferta (Cap. II
Procedimentos, item 1.3.4.1)
Inclusão do campo m_strDisplayQuantity Inclusão
Mensagem de Solicitação de Alteração de Oferta (Cap. II
Procedimentos item 1.3.4.15)
Inclusão de mensagem Inclusão
Mensagem de Resposta de Confirmação de Alteração de
Oferta (Cap. II Procedimentos item 1.3.4.16)
Inclusão de mensagem Inclusão
DLL (Cap. II Procedimentos item 1.4)
Inclusão de item Inclusão
LIB (Cap. II Procedimentos item 1.5)
Inclusão de item Inclusão
FIX (Cap. II Procedimentos item 2.1)
Alteração do suporte de versão FIX apenas para 4.2 a 4.4 Alteração
NewOrderSingle (Cap. II Procedimentos item 2.2.4.1)
Inclusão do campo 111 (MaxFloor) Inclusão
Inclusão de valores possíveis no campo 40 (OrdType) Inclusão
ExecutionReport (Cap. II Procedimentos item 2.2.4.4)
Inclusão do campo 210 (MaxShow) Inclusão
OrderCancelReplace (Cap. II Procedimentos item 2.2.4.5)
Inclusão da mensagem de aplicação OrderCancelReplace Inclusão
GTW 00 Alterações_ext.doc
5. MANUAL DO USUÁRIO Utilização Página/Folha
MULTIGATEWAY Externa 1/4
Capítulo Revisão Data
Índice 02 30/05/08
Capítulos Página
1/1
Apresentação
Alterações 1/1
Índice 1/4
I – OBJETIVO, APLICAÇÃO E DEFINIÇÕES
1 – OBJETIVO 1/3
2 – APLICAÇÃO 1/3
3 – DEFINIÇÕES 1/3
3.1 Termos e Nomenclaturas 1/3
3.2 Regras do Sistema 1/3
3.2.1 Modificação de Oferta 1/3
3.2.1.1 API 1/3
3.2.1.2 FIX 2/3
3.2.2 Cancelamento ou Modificação de Ordem já Modificada – API e FIX 2/3
3.3 Restrições 3/3
3.4 Referências 3/3
II – PROCEDIMENTOS
1 – PROTOCOLO API 1/45
1.1 Conexão 1/45
1.2 Camada de Sessão 1/45
1.2.1 Seqüenciamento de Mensagens 2/45
1.2.2 Buffer de Mensagens Para Retransmissão 2/45
1.2.3 Mecanismo de Retransmissão 2/45
1.2.4 Verificação de Conexão Ativa 2/45
1.2.5 Mensagens da Camada de Sessão 3/45
1.2.5.1 Mensagem de Solicitação de Autenticação 3/45
1.2.5.2 Mensagem de Sucesso na Autenticação 4/45
1.2.5.3 Mensagem de Erro na Autenticação 4/45
1.2.5.4 Mensagem de Solicitação de Reenvio de Mensagens 5/45
1.2.5.5 Mensagem de Notificação de Nova Seqüência de Mensagens 5/45
GTW 00 Índice_ext.doc
6. MANUAL DO USUÁRIO Utilização Página/Folha
MULTIGATEWAY Externa 2/4
Capítulo Revisão Data
Índice 02 30/05/08
1.2.5.6 Mensagem de Heartbeat 6/45
1.2.5.7 Mensagem de Resposta a Heartbeat 6/45
1.3 Camada de Aplicação 7/45
1.3.1 Index 7/45
1.3.2 Control Number 7/45
1.3.3 Controle de Seqüência de Retransmissão 7/45
1.3.4 Mensagens da Camada de Aplicação 8/45
1.3.4.1 Mensagem de Solicitação de Registro de Nova Oferta 8/45
1.3.4.2 Mensagem de Solicitação de Cancelamento de Oferta 8/45
1.3.4.3 Mensagem de Re-solicitação de Ordens 9/45
1.3.4.4 Mensagem de Consulta de Limites 9/45
1.3.4.5 Mensagem de Consulta ao Último Índice 9/45
1.3.4.6 Mensagem de Consulta ao Order Book 10/45
1.3.4.7 Mensagem de Ack 10/45
1.3.4.8 Mensagem de Resposta de Confirmação do Registro de Ordem 11/45
1.3.4.9 Mensagem de Resposta de Confirmação do Cancelamento da Ordem 11/45
1.3.4.10 Mensagem de Resposta de Ocorrência de Erro 12/45
1.3.4.11 Mensagem de Resposta de Execução de Ordem 13/45
1.3.4.12 Mensagem de Resposta à Consulta de Índice 13/45
1.3.4.13 Mensagem de Resposta à Consulta de Limites 14/45
1.3.4.14 Mensagem de Resposta à Consulta de Order Book 14/45
1.3.4.15 Mensagem de Solicitação de Alteração de Oferta 15/45
1.3.4.16 Mensagem de Resposta de Confirmação de Alteração de Oferta 15/45
1.4 DLL 16/45
1.4.1 Instalação do Componente GWHBClientCOM.dll 16/45
1.4.2 Utilização Básica 18/45
1.4.3 Classes do Componente 18/45
1.4.3.1 HBConnection 18/45
1.4.3.2 HBConnection2 22/45
1.4.3.3 HBOrderInfo 22/45
1.4.3.4 HBCancelOrder 24/45
1.4.3.5 HBQueryLimits 24/45
1.4.3.6 HBRecalMsgs 25/45
1.4.3.7 HBOrderResponse 25/45
1.4.3.8 HBCancelResponse 25/45
1.4.3.9 HBErrorResponse 26/45
1.4.3.10 HBIndexResponse 27/45
1.4.3.11 HBLimitResponse 27/45
1.4.3.12 HBTradeResponse 28/45
1.4.3.13 HBModifyResponse 29/45
1.4.3.14 HBNewOrder 30/45
1.4.3.15 HBModifyOrder 30/45
1.4.3.16 HBOrderBookResponse 30/45
GTW 00 Índice_ext.doc
8. MANUAL DO USUÁRIO Utilização Página/Folha
MULTIGATEWAY Externa 4/4
Capítulo Revisão Data
Índice 02 30/05/08
2.2.3.6 Reject 6/11
2.2.3.7 SequenceReset 6/11
2.2.4 Mensagens de Aplicação 7/11
2.2.4.1 NewOrderSingle 7/11
2.2.4.2 OrderCancelRequest 8/11
2.2.4.3 OrderCancelReject 8/11
2.2.4.4 ExecutionReport 9/11
2.2.4.5 OrderCancelReplace 10/11
3 – MENSAGENS FIX 1/14
3.1 NewOrderSingle 1/14
3.1.1 Registrando uma Oferta 1/14
3.1.2 Solicitação de Registro de Oferta, Seguido de Rejeição 1/14
3.1.3 Congelamento de Oferta 2/14
3.1.4 Congelamento de Oferta, Seguido de Aceite no Descongelamento 2/14
3.1.5 Congelamento de Oferta, Seguido de Recusa no Descongelamento 3/14
3.1.6 Envio de Oferta, Seguido de Negócio Parcial, Congelamento e Posterior Descongelamento com Aceite 4/14
3.1.7 Congelamento de Oferta, Seguido de Leilão 5/14
3.1.8 Envio de Nova Oferta, durante um Leilão 5/14
3.2 OrderCancelRequest 6/14
3.2.1 Cancelando uma Oferta Registrada 6/14
3.2.2 Cancelando uma Oferta Inexistente 7/14
3.2.3 Cancelando uma Oferta já Cancelada Anteriormente 8/14
3.2.4 Cancelando uma Oferta em Leilão 9/14
3.3 OrderCancelReplace 10/14
3.3.1 Modificando uma Oferta Registrada 10/14
3.3.2 Modificando uma Oferta Inexistente 11/14
3.4 Trade 12/14
3.4.1 Trade - Filled 12/14
3.4.2 Trade – Partially Filled 13/14
3.4.3 Cancel Trade 14/14
GTW 00 Índice_ext.doc
9. MANUAL DO USUÁRIO Utilização Página/Folha
MULTIGATEWAY Externa 1/3
Capítulo Revisão Data
I – Objetivo, Aplicação e Definições 03 01/10/08
1 – OBJETIVO
Este documento tem como objetivo detalhar o funcionamento e as estruturas que compõem o MultiGateway.
A intenção é permitir um maior conhecimento do sistema como um todo, bem como obter entendimento das
particularidades de cada módulo que o compõe. Serão detalhadas as funcionalidades, características de
conexões com os clientes e com o sistema de negociação, estruturas de dados e demais particularidades.
2 – APLICAÇÃO
Sociedades Corretoras que se utilizam de ferramentas on line (como Home Brokers) para se conectarem e
realizarem negociações on line.
3 – DEFINIÇÕES
3.1 Termos e Nomenclaturas
DLL: Dynamic Link Library
MEGA BOLSA: é o sistema de negociação da Bolsa de Valores de São Paulo que gerencia, controla as
informações e é responsável pelo registro de todas as operações de mercado fechadas na BOVESPA.
MULTIGATEWAY: é o servidor de Home Broker e conexões automatizadas.
Pipe: mecanismo que permite que um processo transfira informação para outro.
Linkedição: método de unir uma biblioteca à aplicação.
Callback: ponteiro para uma função.
LIB: biblioteca Unix que se adiciona à aplicação client para se ter acesso às funções.
3.2 Regras do Sistema
3.2.1 Modificação de Oferta
3.2.1.1 API
Para se fazer uma modificação de oferta, é necessário informar todos os campos da oferta original, mesmo
que a alteração seja realizada em somente um deles.
No campo “Quantidade da Oferta”, é necessário observar o seguinte detalhe: a quantidade que se altera é a
quantidade remanescente. Sendo assim, se houver execuções parciais, a quantidade informada na
modificação será somada à quantidade executada. Portanto, sempre que o usuário enviar uma modificação
será necessário calcular a quantidade, querendo-se modificá-la ou não.
Exemplo :
Qtd original: 500
Qtd executada: 100 (qtd remanescente 400)
GTW 00 Objetivo_ext.doc
10. MANUAL DO USUÁRIO Utilização Página/Folha
MULTIGATEWAY Externa 2/3
Capítulo Revisão Data
I – Objetivo, Aplicação e Definições 03 01/10/08
No exemplo acima, caso se envie um ModifyOrder com Qtd 500, está sendo indicado que se deseja que a
quantidade remanescente (ou seja, 400) passe a ser 500. Conseqüentemente, a quantidade total será 600
(600 – 100 executada = 500)
Para se evitar, neste caso, que a quantidade remanescente seja alterada, deve-se passar a Qtd 400, de
maneira que o retorno da quantidade total seja 500 (500 -100 = 400).
Para os demais campos, podem ser mantidos os valores originais, a não ser que se queira modificá-los.
3.2.1.2 FIX
Para se fazer uma modificação de oferta, é necessário informar todos os campos da oferta original, mesmo
que a alteração seja realizada em somente um deles.
Para modificar a quantidade de uma oferta, o valor enviado no campo quantidade deverá ser sempre a
quantidade total da oferta e não a remanescente, como no caso do API.
Ex.:Oferta original :
Quantidade = 500
executada = 300
remanescente = 200
Modificação 1
Quantidade = 400
Na modificação acima, a quantidade remanescente passaria a 100, pois 400 - 300 (que é a quantidade
executada) = 100
Modificação 2
Quantidade = 600
Na modificação acima, a quantidade remanescente passaria a 300, pois 600 - 300 (que é a quantidade
executada) = 300
Modificação 3
Quantidade = 200
Neste caso, ocorreria um erro, pois a quantidade total não pode ser menor ou igual que a quantidade
executada.
Dessa forma, no caso do FIX, é necessário que o usuário informe sempre a quantidade total que deseja para
a oferta.
3.2.2 Cancelamento ou Modificação de Ordem já Modificada – API e FIX
No caso de API e FIX, para cancelar ou modificar uma ordem já modificada, é necessário informar sempre o
último número de controle da ordem.
GTW 00 Objetivo_ext.doc
11. MANUAL DO USUÁRIO Utilização Página/Folha
MULTIGATEWAY Externa 3/3
Capítulo Revisão Data
I – Objetivo, Aplicação e Definições 03 01/10/08
3.3 Restrições
A modificação do cliente da ordem, inclusive durante leilões, não será permitida para as famílias de portas
de 300 a 309 e de 500 a 509.
A colocação de ordem com preço de abertura durante os leilões e calls somente poderá ser efetuada
pelas famílias de portas 400, 500 e 510.
O campo código de cliente deve ter, no máximo, 8 dígitos, já incluído o dígito verificador, sem hífen. Isso
deve ser observado tanto para envio, quanto para cancelamento ou modificação de ofertas.
3.4 Referências
FIX Protocol
http://www.fixprotocol.org
QuickFIX - Engine FIX Open-Source
http://www.quickfixengine.org
GTW 00 Objetivo_ext.doc
12. MANUAL DO USUÁRIO Utilização Página/Folha
MULTIGATEWAY Externa 1/45
Capítulo Revisão Data
II - Procedimentos 03 01/10/08
1 – PROTOCOLO API
1.1 Conexão
A conexão entre o cliente e o servidor MultiGateway via API HomeBroker ocorre da seguinte forma.
A aplicação cliente, utilizando o componente GWHBClientCOM.dll, abre a conexão com o servidor (coloca o
socket TCP/IP em listen) e aguarda que esse se conecte.
O servidor do MultiGateway, por sua vez, faz sucessivas tentativas de conexão com o cliente, em intervalos de
tempo definidos pelo administrador do sistema, nas telas de configuração dos recursos de cluster. Lá é
definido o número de tentativas de conexões e o intervalo entre novas tentativas.
Uma vez em funcionamento, o servidor do MultiGateway sempre tenta se conectar com seu respectivo cliente,
previamente configurado na tela de administração, de forma a tentar manter sempre ativa essa conexão.
Ocorrida a conexão do servidor com o cliente, dá-se início à troca de mensagens. O cliente envia uma
mensagem de solicitação de autenticação e o servidor responde, permitindo ou não a transmissão de novas
mensagens. Esse mecanismo será mais bem detalhado nos itens abaixo.
Visando melhor distribuição de dados, dividimos o sistema em duas camadas: camada de sessão e camada
de aplicação. Trata-se, na verdade, de duas camadas conceituais, sendo que cada uma é responsável por
determinada atividade.
1.2 Camada de Sessão
A camada de sessão é responsável pela comunicação física entre cliente e servidor. Ela é responsável desde
a abertura e conexão entre os sockets até o seqüenciamento e retransmissão de mensagens. Possui
mensagens específicas para esses fins, que são tratadas apenas nesta camada, não sendo enviadas à
camada de aplicação.
As mensagens trocadas entre servidor e cliente são compostas de um cabeçalho e de um corpo. O cabeçalho
é composto de campos fixos, iguais para todas as mensagens. Os campos que compõem o corpo são
específicos para cada mensagem. A seguir temos a estrutura do cabeçalho:
GTW 01 API_ext rev03.doc
13. MANUAL DO USUÁRIO Utilização Página/Folha
MULTIGATEWAY Externa 2/45
Capítulo Revisão Data
II - Procedimentos 03 01/10/08
Nome do campo Formato Descrição
Wsize Numérico Armazena o tamanho em Bytes da mensagem a ser enviada.
bytLayer Byte Informa a qual camada a mensagem é destinada: 1 – camada de sessão,
2 – camada de aplicação.
bytType Byte Informa o tipo de mensagem. Ex: 1 – mensagem de autenticação, 2 –
mensagem de autenticação OK.
dwSeq Numérico Seqüencial da mensagem. Será detalhado no item Seqüenciamento de
Mensagens.
dwAck Numérico Seqüencial de recebimento de mensagem. Será detalhado no item Buffer
de Mensagens para Retransmissão.
1.2.1 Seqüenciamento de Mensagens
O seqüenciamento de mensagens é feito utilizando-se os campos dwSeq e dwAck do cabeçalho das
mensagens. O campo dwSeq informa seqüencialmente o número da mensagem enviada, começando de zero.
O campo dwAck informa o número da última mensagem recebida e processada, enviada pela outra ponta.
Cada vez que uma conexão entre o servidor e o cliente é estabelecida, o cliente e o servidor zeram seus
valores de seqüenciamento. A cada nova mensagem a ser enviada, o valor de dwSeq é incrementado de 1.
Quando uma das pontas recebe uma mensagem, imediatamente atualiza seu valor de dwAck para o valor
recebido no campo dwSeq.
Dessa forma o seqüenciamento das mensagens é realizado, garantindo que as mensagens sejam
processadas na ordem em que foram enviadas.
1.2.2 Buffer de Mensagens para Retransmissão
Visando garantir o envio de suas mensagens, tanto o servidor quanto o cliente armazenam em um buffer
todas as mensagens enviadas para a outra ponta. Isso é feito para atender casos em que é necessário
retransmitir mensagens já enviadas, devido a problemas de rede, por exemplo.
A cada nova mensagem recebida, analisando o campo dwAck, podemos saber qual a última mensagem que a
outra ponta processou. Então, com base nesse campo, podemos remover todas as mensagens já enviadas do
Buffer, cujo seqüencial seja menor ou igual ao valor de dwAck.
1.2.3 Mecanismo de Retransmissão
Toda vez que uma mensagem é recebida, o campo dwSeq é comparado com um valor esperado (dwSeq da
mensagem anterior somado de 1). Caso esse valor seja superior ao esperado, significa que mensagens não
foram recebidas. Dessa forma é preciso solicitar à outra ponta que retransmita as mensagens não recebidas,
de forma a restabelecer a seqüência correta.
1.2.4 Verificação de Conexão Ativa
O mecanismo de HeartBeat – ImAlive é utilizado para verificar se a conexão entre cliente e servidor
permanece ativa, mesmo após um intervalo de tempo sem recebimento de mensagens.
Após um período de inatividade, período esse configurado pelo administrador do sistema, o servidor envia
uma mensagem de HeartBeat para o cliente. O cliente, quando recebe esse tipo de mensagem, envia para o
servidor uma outra mensagem do tipo ImAlive.
Caso o servidor não receba uma mensagem do tipo ImAlive após um determinado período de tempo, a
conexão com o cliente é cortada. Da mesma forma, se o cliente não recebe uma mensagem do tipo HeartBeat
após um intervalo de tempo, ele corta a conexão com o servidor. Após o corte de conexão, o servidor do
Gateway tenta novamente estabelecer uma nova conexão com o cliente.
GTW 01 API_ext rev03.doc
14. MANUAL DO USUÁRIO Utilização Página/Folha
MULTIGATEWAY Externa 3/45
Capítulo Revisão Data
II - Procedimentos 03 01/10/08
1.2.5 Mensagens da Camada de Sessão
1.2.5.1 Mensagem de Solicitação de Autenticação
Tipo: Solicitação de Autenticação.
Objetivo: Enviar os dados de autenticação ao servidor do MultiGateway.
É a primeira mensagem trafegada após a conexão física do cliente com o servidor.
Estrutura: sMsgAuth
Origem: Cliente
Destino: Servidor
struct sMsgAuth
{
sClientMsgHeader sHeader;
union
{
struct
{
char cIdCorretora[5];
char cIdVersao [5];
char cOSPlatformId [6];
char cOSMajorVersion [6];
char cOSMinorVersion [6];
char cOSBuildNumber [6];
char cOSCSDVersion [15];
char cOSServicePackMajor[6];
char cOSServicePackMinor[6];
char cProcessorArchitecture[6];
char cProcessorType [6];
char cProcessorLevel [6];
char cProcessorRevision [6];
char cProcessorSpeed [6];
char cMemory [6];
char cIP [15];
char cPort [5];
char cSource;
}; // 120 Bytes -> 8 (oito) Blocos são necessários
char cFiller [8 * BLOCO_CRIPTO];
} sBody;
};
GTW 01 API_ext rev03.doc
15. MANUAL DO USUÁRIO Utilização Página/Folha
MULTIGATEWAY Externa 4/45
Capítulo Revisão Data
II - Procedimentos 03 01/10/08
1.2.5.2 Mensagem de Sucesso na Autenticação
Tipo: Sucesso na autenticação
Objetivo: Autenticar o cliente para iniciar as atividades no sistema. Informa o número do último
índice de mensagem tratado, o último control number recebido e também o tempo de inatividade que
deverá ser utilizado pelo cliente para o envio de mensagens do tipo ImAlive.
Estrutura: sMsgAuthOK
Origem: Servidor
Destino: Cliente
struct sMsgAuthOK
{
sClientMsgHeader sHeader;
union
{
struct
{
DWORD dwLastIndex; // 4 Bytes
char cLastCtrlNum[20]; // 20 Bytes
DWORD dwInactivityTimeout; // 4 Bytes
}; // 28 Bytes -> 2 (dois) Blocos são necessários
char cFiller [2*BLOCO_CRIPTO];
} sBody;
};
1.2.5.3 Mensagem de Erro na Autenticação
Mensagem: Erro de Autenticação
Objetivo: Avisar o cliente sobre um erro de autenticação.
Estrutura: sMsgAuthErr
Origem: Servidor
Destino: Cliente
struct sMsgAuthErr
{
sClientMsgHeader sHeader;
union
{
struct
{
BYTE bytReason;
}; // 1 Byte -> apenas 1 (um) Bloco é necessário
char cFiller [BLOCO_CRIPTO];
} sBody;
};
GTW 01 API_ext rev03.doc
16. MANUAL DO USUÁRIO Utilização Página/Folha
MULTIGATEWAY Externa 5/45
Capítulo Revisão Data
II - Procedimentos 03 01/10/08
1.2.5.4 Mensagem de Solicitação de Reenvio de Mensagens
Tipo: Reenvio de mensagens
Objetivo: Solicitar à ponta oposta a retransmissão de um intervalo de mensagens.
Estrutura: sMsgResync
Origem: Servidor / Cliente
Destino: Cliente / Servidor
struct sMsgResync
{
sClientMsgHeader sHeader;
union
{
struct
{
DWORD dwBegin;
DWORD dwEnd;
}; // 8 Bytes -> apenas 1 (um) Bloco é necessário
char cFiller [BLOCO_CRIPTO];
} sBody;
};
1.2.5.5 Mensagem de Notificação de Nova Seqüência de Mensagens
Tipo: Notificação de nova seqüência de mensagens
Objetivo: Informar à ponta oposta uma nova seqüência de mensagens.
Estrutura: sMsgGapFill
Origem: Servidor / Cliente
Destino: Cliente / Servidor
struct sMsgGapFill
{
sClientMsgHeader sHeader;
union
{
struct
{
DWORD dwNewSeq;
}; // 4 Bytes -> apenas 1 (um) Bloco é necessário
char cFiller [BLOCO_CRIPTO];
} sBody;
};
GTW 01 API_ext rev03.doc
17. MANUAL DO USUÁRIO Utilização Página/Folha
MULTIGATEWAY Externa 6/45
Capítulo Revisão Data
II - Procedimentos 03 01/10/08
1.2.5.6 Mensagem de Heartbeat
Tipo: HeartBeat
Objetivo: Enviar ao cliente uma mensagem informando que ainda está ativo e aguarda uma
mensagem do tipo ImAlive do cliente.
Estrutura: sMsgHeartBeat
Origem: Servidor
Destino: Cliente
struct sMsgHeartBeat
{
sClientMsgHeader sHeader;
};
1.2.5.7 Mensagem de Resposta a Heartbeat
Tipo: Resposta a heartbeat
Objetivo: Enviar ao servidor uma mensagem informando que ainda está ativo, para não ser
desconectado por timeout.
Estrutura: sMsgImAlive
Origem: Cliente
Destino: Servidor
struct sMsgImAlive
{
sClientMsgHeader sHeader;
};
GTW 01 API_ext rev03.doc
18. MANUAL DO USUÁRIO Utilização Página/Folha
MULTIGATEWAY Externa 7/45
Capítulo Revisão Data
II - Procedimentos 03 01/10/08
1.3 Camada de Aplicação
A camada de aplicação é responsável por tudo que diz respeito à negociação, funcionando de forma isolada
da camada de sessão. É responsável pelo tratamento das mensagens de aplicação e da interação direta com
a aplicação cliente. Possui um conjunto de mensagens específicas para a camada e utiliza a camada de
sessão para o envio e recebimento das mensagens.
As mensagens não possuem tamanhos fixos e são codificadas segundo padrão definido pela BOVESPA.
Cada uma possui campos específicos para as finalidades a que se predispõem, porém podemos enumerar
alguns campos que estão presentes em todas elas:
Nome do Campo Formato Descrição
M_strIndex String Índice das mensagens de aplicação.
M_strMsgTransmissionTime String Data/Hora em que a mensagem foi
enviada.
1.3.1 Index
O campo index (m_strIndex) é responsável pelo seqüenciamento das mensagens de aplicação. Ao contrário
da camada de sessão na qual o seqüenciamento é feito por conexão, a seqüência de mensagens de
aplicação é diária.
Esse seqüenciamento permite que todas as mensagens de aplicação sejam indexadas e armazenadas,
ficando disponíveis para o cliente durante todo o dia.
1.3.2 Control Number
O campo Control Number, presente em grande parte das mensagens, é uma informação não relevante ao
Gateway, mas que serve como identificador de ordens para as aplicações clientes. O servidor do Gateway
sempre armazena o último Control Number utilizado o qual corresponde ao mesmo transmitido na mensagem
de confirmação de autenticação do cliente.
1.3.3 Controle de Seqüência de Retransmissão
A cada mensagem enviada ao cliente, o servidor espera uma mensagem do tipo Ack, informando-o que a
mensagem foi processada corretamente pelo cliente. Essa mensagem contém informações que auxiliam o
servidor no controle de envio e retransmissão das mensagens de aplicação.
A cada autenticação efetuada, o servidor do Gateway envia ao seu cliente o último índice e o último Control
Number processado. Nesse momento, o servidor, baseado nas mensagens de Ack recebidas nas últimas
conexões, sabe quais mensagens efetivamente chegaram a ser processadas pelo cliente, retransmitindo, caso
seja necessário, as mensagens perdidas.
A aplicação cliente pode ainda solicitar arbitrariamente mensagens antigas já processadas, utilizando-se da
mensagem Recall Messages, na qual é definido o índice da primeira e da última mensagem a serem
retransmitidas.
GTW 01 API_ext rev03.doc
19. MANUAL DO USUÁRIO Utilização Página/Folha
MULTIGATEWAY Externa 8/45
Capítulo Revisão Data
II - Procedimentos 03 01/10/08
1.3.4 Mensagens da Camada de Aplicação
1.3.4.1 Mensagem de Solicitação de Registro de Nova Oferta
Tipo: Nova ordem
Objetivo: Enviar uma nova ordem para o sistema de negociação
Classe: CAppMsgNewOrder
Origem: Cliente
Destino: Servidor
Campo Descrição
strCtrlNumber ControlNumber, número que identifica a ordem para a aplicação cliente.
strStock Código do papel a ser negociado.
strUserID Código do usuário no sistema de negociação.
eotType Tipo da ordem: 0 – compra, 1 – venda.
eocCondition Condição para execução da ordem: 0 – preço limite, 3 – preço abertura. Vide cap. I, item
3.3
eovValidity Tipo de validade: 0 - hoje, 1 – até cancelamento, 2 – data específica, 3 – tudo ou nada, 4
– execução ou cancelamento.
strQuantity Quantidade de ações a serem negociadas.
strPrice Preço por ação.
strValidityDate Data de validade.
m_strDisplayQuantity Quantidade a ser exibida – Oferta com quantidade aparente.
1.3.4.2 Mensagem de Solicitação de Cancelamento de Oferta
Tipo: Cancelamento de ordem
Objetivo: Enviar uma solicitação de cancelamento de uma ordem para o sistema de negociação
Classe: CAppMsgCancel
Origem: Cliente
Destino: Servidor
Campo Descrição
strCtrlNumber ControlNumber, número que identifica a ordem para a aplicação cliente.
strStock Código do papel a ser negociado.
strUserID Código do usuário no sistema de negociação.
eotType Tipo da ordem: 0 – compra, 1 – venda.
eocCondition Condição para execução da ordem: 0 – preço limite, 3 – preço abertura
Vide cap I, item 3.3
eovValidity Tipo de validade: 0 - hoje, 1 – até cancelamento, 2 – data específica, 3 – tudo ou nada, 4
– execução ou cancelamento.
strQuantity Quantidade de ações a serem negociadas.
strPrice Preço por ação.
strValidityDate Data de validade.
strExchangeNumber Número que identifica a ordem no Gateway. Vide cap I, item 3.2.2
GTW 01 API_ext rev03.doc
20. MANUAL DO USUÁRIO Utilização Página/Folha
MULTIGATEWAY Externa 9/45
Capítulo Revisão Data
II - Procedimentos 03 01/10/08
1.3.4.3 Mensagem de Re-solicitação de Ordens
Tipo: Re-solicitação de ordens anteriores
Objetivo: Solicitar o envio de ordens previamente envidadas pelo servidor
Classe: CAppMsgRecallMsgs
Origem: Cliente
Destino: Servidor
Campo Descrição
strBegin Índice da primeira mensagem a ser retransmitida.
strEnd Índice da última mensagem a ser retransmitida.
1.3.4.4 Mensagem de Consulta de Limites
Tipo: Consulta de limites
Objetivo: Consultar os limites de um determinado cliente
Classe: CAppMsgQueryLimits
Origem: Cliente
Destino: Servidor
Campo Descrição
strCtrlNumber Número de controle para identificar a
solicitação.
strUserID Código do usuário.
1.3.4.5 Mensagem de Consulta ao Último Índice
Tipo: Consulta ao último índice
Objetivo: Solicitar ao servidor do Gateway o último índice utilizado
Classe: CAppMsgQueryIndex
Origem: Cliente
Destino: Servidor
Campo Descrição
strCtrlNumber Número de controle para identificar a
solicitação.
StrUserID Código do usuário.
GTW 01 API_ext rev03.doc
21. MANUAL DO USUÁRIO Utilização Página/Folha
MULTIGATEWAY Externa 10/45
Capítulo Revisão Data
II - Procedimentos 03 01/10/08
1.3.4.6 Mensagem de Consulta ao Order Book
Tipo: Consulta ao Order Book
Objetivo: Solicitar ao servidor do Gateway uma informação diferenciada sobre um determinado
intervalo de mensagens
Classe: CAppMsgQueryOrderBook
Origem: Cliente
Destino: Servidor
Campo Descrição
eobType Tipo da consulta: 0 – Por índice, 1 -
últimos.
strBegin Índice da primeira mensagem.
strEnd Índice da última mensagem.
1.3.4.7 Mensagem de Ack
Tipo: Ack
Objetivo: Informar ao servidor que a mensagem recebida foi processada corretamente. É enviada
sempre após o tratamento de uma mensagem de aplicação recebida pelo cliente
Classe: CAppMsgAck
Origem: Cliente
Destino: Servidor
Campo Descrição
strIndex Índice da mensagem.
strMsgTransmissionTime Horário em que a mensagem foi tratada.
strIndexAck Índice da mensagem recebida pelo cliente.
bytOriginalMsgType Tipo da mensagem recebida pelo cliente.
strOriginalMsgReceptionTime Horário em que a mensagem foi recebida.
strCtrlNumber Número de controle para identificar a solicitação.
strExchangeNumber Número de identificação da transação no servidor do
Gateway.
strStock Código do papel utilizado na transação.
GTW 01 API_ext rev03.doc
22. MANUAL DO USUÁRIO Utilização Página/Folha
MULTIGATEWAY Externa 11/45
Capítulo Revisão Data
II - Procedimentos 03 01/10/08
1.3.4.8 Mensagem de Resposta de Confirmação do Registro de Ordem
Tipo: Resposta de inclusão de ordem
Objetivo: Mensagem enviada após a confirmação de uma inclusão de ordem no sistema de
negociação.
Classe: CAppMsgOrderResponse
Origem: Servidor
Destino: Cliente
Campo Descrição
strIndex Índice da mensagem.
strCtrlNumber ControlNumber, número que identifica a ordem para a aplicação cliente.
strStock Código do papel a ser negociado.
strUserID Código do usuário no sistema de negociação.
eotType Tipo da ordem: 0 – compra, 1 – venda.
eocCondition Condição para execução da ordem: 0 – preço limite, 3 – preço abertura.
eovValidity Tipo de validade: 0 - hoje, 1 – até cancelamento, 2 – data específica, 3 – tudo ou
nada, 4 – execução ou cancelamento.
strQuantity Quantidade de ações a serem negociadas.
strPrice Preço por ação.
strValidityDate Data de validade.
strOrderTime Data em que a ordem foi registrada no sistema de negociação.
strExchangeNumber Código de identificação da ordem no sistema de negociação.
m_strOrderTime Data em que a ordem foi registrada no sistema de negociação.
m_strTotalExecutedQuantity Quantidade total executada da ordem original.
1.3.4.9 Mensagem de Resposta de Confirmação do Cancelamento da Ordem
Tipo: Resposta de cancelamento de ordem
Objetivo: Mensagem enviada após a confirmação de cancelamento de ordem no sistema de
negociação.
Classe: CAppMsgCancelResponse
Origem: Servidor
Destino: Cliente
Campo Descrição
strIndex Índice da mensagem.
strCtrlNumber ControlNumber, número que identifica a ordem para a aplicação cliente.
strStock Código do papel a ser negociado.
strUserID Código do usuário no sistema de negociação.
eotType Tipo da ordem: 0 – compra, 1 – venda.
eocCondition Condição para execução da ordem: 0 – preço limite, 3 – preço abertura.
eovValidity Tipo de validade: 0 - hoje, 1 – até cancelamento, 2 – data específica, 3 – tudo ou nada, 4
– execução ou cancelamento.
strQuantity Quantidade de ações a serem negociadas.
strPrice Preço por ação.
strValidityDate Data de validade.
strCancelTime Data em que a ordem foi cancelada no sistema de negociação.
strExchangeNumber Código de identificação da ordem no sistema de negociação.
eccCondition Condição do cancelamento: 0 – Parcial, 1 – Total.
strCancelledQuantity Quantidade cancelada.
GTW 01 API_ext rev03.doc
23. MANUAL DO USUÁRIO Utilização Página/Folha
MULTIGATEWAY Externa 12/45
Capítulo Revisão Data
II - Procedimentos 03 01/10/08
1.3.4.10 Mensagem de Resposta de Ocorrência de Erro
Tipo: Resposta de ocorrência de erro
Objetivo: Mensagem enviada após a ocorrência de um erro no tratamento de uma solicitação.
Classe: CAppMsgErrorResponse
Origem: Servidor
Destino: Cliente
Campo Descrição
strIndex Índice da mensagem.
strCtrlNumber ControlNumber, número que identifica a ordem para a aplicação cliente.
strStock Código do papel a ser negociado.
strUserID Código do usuário no sistema de negociação.
eotType Tipo da ordem: 0 – compra, 1 – venda.
eocCondition Condição para execução da ordem: 0 – preço limite, 3 – preço abertura.
eovValidity Tipo de validade: 0 - hoje, 1 – até cancelamento, 2 – data específica, 3 – tudo ou nada, 4 –
execução ou cancelamento.
strQuantity Quantidade de ações a serem negociadas.
strPrice Preço por ação.
strValidityDate Data de validade.
strErrorTime Data em que o erro foi originado.
strOrderStatus Status da ordem.
strErrorSeverity Severidade do erro.
strErrorNumber Código do erro.
strErrorMsg Mensagem de erro.
GTW 01 API_ext rev03.doc
24. MANUAL DO USUÁRIO Utilização Página/Folha
MULTIGATEWAY Externa 13/45
Capítulo Revisão Data
II - Procedimentos 03 01/10/08
1.3.4.11 Mensagem de Resposta de Execução de Ordem
Tipo: Resposta de execução de ordem
Objetivo: Mensagem enviada após a execução de uma ordem no sistema de negociação.
Classe: CAppMsgTradeResponse
Origem: Servidor
Destino: Cliente
Campo Descrição
strIndex Índice da mensagem.
strCtrlNumber ControlNumber, número que identifica a ordem para a aplicação cliente.
strStock Código do papel a ser negociado.
strUserID Código do usuário no sistema de negociação.
eotType Tipo da ordem: 0 – compra, 1 – venda.
eocCondition Condição para execução da ordem: 0 – preço limite, 3– preço abertura.
eovValidity Tipo de validade: 0 - hoje, 1 – até cancelamento, 2 – data específica, 3 – tudo ou
nada, 4 – execução ou cancelamento.
strQuantity Quantidade de ações a serem negociadas.
strPrice Preço por ação.
strValidityDate Data de validade.
strExecutionTime Data e hora da execução da ordem.
strExchangeNumber Código que identifica a transação no sistema de negociação.
etcCondition Condição da execução: 0 – Parcial, 1 – Total.
strTradeQuantity Quantidade executada.
strTotalExecutedQuantity Quantidade total executada da ordem original.
strRemainingQuantity Quantidade remanescente.
strExecutedPrice Preço de execução.
strCounterpartBroker Identificação da outra parte da negociação.
strTradeId Identificação da transação.
1.3.4.12 Mensagem de Resposta à Consulta de Índice
Tipo: Resposta à consulta de índice.
Objetivo: Mensagem enviada após a solicitação de consulta de índice.
Classe: CAppMsgIndexResponse
Origem: Servidor
Destino: Cliente
Campo Descrição
strIndex Índice da mensagem.
strLastIndex Último índice de mensagem utilizado.
strLastCtrlNumber Último Control Number utilizado pelo
cliente.
GTW 01 API_ext rev03.doc
25. MANUAL DO USUÁRIO Utilização Página/Folha
MULTIGATEWAY Externa 14/45
Capítulo Revisão Data
II - Procedimentos 03 01/10/08
1.3.4.13 Mensagem de Resposta à Consulta de Limites
Tipo: Resposta à consulta de limites.
Objetivo: Mensagem enviada após a solicitação de consulta de limites.
Classe: CAppMsgLimitResponse
Origem: Servidor
Destino: Cliente
Campo Descrição
strIndex Índice da mensagem.
strCtrlNumber ControlNumber, número que identifica a ordem para a aplicação
cliente.
strUserID Código do usuário.
strTotalLimit Total de limite do cliente.
strConsumedLimit Limite consumido.
strPeriod Período.
1.3.4.14 Mensagem de Resposta à Consulta de Order Book
Tipo: Resposta à consulta de Order Book.
Objetivo: Mensagem enviada após a solicitação de consulta de Order Book.
Classe: CAppMsgOrderBookResponse
Origem: Servidor
Destino: Cliente
Campo Descrição
strIndex Índice da mensagem.
strCtrlNumber ControlNumber, número que identifica a ordem para a aplicação cliente.
strStock Código do papel a ser negociado.
strUserID Código do usuário no sistema de negociação.
eotType Tipo da ordem: 0 – compra, 1 – venda.
eocCondition Condição para execução da ordem: 0 – preço limite, 3 – preço abertura.
eovValidity Tipo de validade: 0 - hoje, 1 – até cancelamento, 2 – data específica, 3 – tudo ou nada,
4 – execução ou cancelamento.
strQuantity Quantidade de ações a serem negociadas.
strPrice Preço por ação.
strValidityDate Data de validade da ordem.
strOrderTime Data Hora do processamento da mensagem.
strExchangeNumber Número de identificação da ordem no sistema de negociação.
strCumulativeQuantity Quantidade da ordem que já foi executada.
strRemainingQuantity Quantidade da ordem que ainda não foi executada.
strAveragePrice Preço médio de execução.
strOrderBookIndex Índice do Order Book.
strNumberOfTrades Número de execuções da ordem.
strStatusOfOrder Status da ordem.
strNoMsgsAvailable Indica se é a última mensagem de Order Book a ser enviada.
m_strDisplayQuantity Quantidade a ser exibida – Oferta com quantidade aparente.
GTW 01 API_ext rev03.doc
26. MANUAL DO USUÁRIO Utilização Página/Folha
MULTIGATEWAY Externa 15/45
Capítulo Revisão Data
II - Procedimentos 03 01/10/08
1.3.4.15 Mensagem de Solicitação de Alteração de Oferta
Tipo: Alteração de ordem
Objetivo: Enviar uma solicitação de alteração de uma ordem para o sistema de negociação.
Classe: CAppMsgModify
Origem: Cliente
Destino: Servidor
Campo Descrição
strCtrlNumber ControlNumber, número que identifica a ordem para a aplicação cliente.
strStock Código do papel a ser negociado.
strUserID Código do usuário no sistema de negociação. Vide cap I, item 3.3
eotType Tipo da ordem: 0 – compra, 1 – venda.
eocCondition Condição para execução da ordem: 0 – preço limite, 3 – preço abertura.
Vide cap I, item 3.3
eovValidity Tipo de validade: 0 - hoje, 1 – até cancelamento, 2 – data específica, 3 –
tudo ou nada, 4 – execução ou cancelamento.
strQuantity Quantidade de ações a serem negociadas. Vide cap I, item 3.2.1
strPrice Preço por ação.
strValidityDate Data de validade.
strExchangeNumber Número que identifica a ordem no Gateway. Vide cap I, item 3.2.2
m_strDisplayQuantity Quantidade a ser exibida – Oferta com quantidade aparente.
1.3.4.16 Mensagem de Resposta de Confirmação de Alteração de Oferta
Tipo: Resposta de modificação de ordem
Objetivo: Mensagem enviada após a confirmação de uma modificação de ordem no sistema de
negociação.
Classe: CAppMsgModifyResponse
Origem: Servidor
Destino: Cliente
Campo Descrição
strIndex Índice da mensagem.
strCtrlNumber ControlNumber, número que identifica a ordem para a aplicação cliente.
strStock Código do papel a ser negociado.
strUserID Código do usuário no sistema de negociação.
eotType Tipo da ordem: 0 – compra, 1 – venda.
eocCondition Condição para execução da ordem: 0 – preço limite, 3 – preço abertura.
eovValidity Tipo de validade: 0 - hoje, 1 – até cancelamento, 2 – data específica, 3 – tudo ou
nada, 4 – execução ou cancelamento.
strQuantity Quantidade de ações a serem negociadas.
strPrice Preço por ação.
strValidityDate Data de validade.
m_strExchangeNumber Código de identificação da ordem no sistema de negociação.
m_strOrderTime Data em que a ordem foi registrada no sistema de negociação.
m_strTotalExecutedQuantity Quantidade total executada da ordem original.
m_strQtdDispl Quantidade a ser exibida – Oferta com quantidade aparente.
GTW 01 API_ext rev03.doc
27. MANUAL DO USUÁRIO Utilização Página/Folha
MULTIGATEWAY Externa 16/45
Capítulo Revisão Data
II - Procedimentos 03 01/10/08
1.4 DLL
1.4.1 Instalação do Componente GWHBClientCOM.dll
Se você já possui este componente em seu computador, siga a seqüência de passos abaixo para remover o
registro do seu componente atual.
- Clique em Iniciar Executar
- Digite a seguinte linha de comando: regsvr32 /u <caminho para seu arquivo atual >GWHBClientCOM.dll
- Pressione o botão “OK” e a mensagem seguinte irá aparecer:
Para registrar o componente, siga os passos abaixo:
- Copie o novo arquivo GWHBClientCOM.dll para o seu computador;
- Clique em Iniciar Executar
GTW 01 API_ext rev03.doc
28. MANUAL DO USUÁRIO Utilização Página/Folha
MULTIGATEWAY Externa 17/45
Capítulo Revisão Data
II - Procedimentos 03 01/10/08
- Digite a seguinte linha de comando: regsvr32 <caminho para o novo arquivo >GWHBClientCOM.dll
- Pressione o botão “OK” e a mensagem seguinte irá aparecer:
GTW 01 API_ext rev03.doc
29. MANUAL DO USUÁRIO Utilização Página/Folha
MULTIGATEWAY Externa 18/45
Capítulo Revisão Data
II - Procedimentos 03 01/10/08
1.4.2 Utilização Básica
Instanciar um objeto da classe HBConnection.
-
Utilizar o método Start para iniciar o processo de conexão e autenticação com o Gateway Server.
-
Aguardar a chegada do evento AuthenticationOK para iniciar o processo de envio e cancelamento.
-
Utilizar o objeto para transmissão de solicitações e recepção de eventos.
-
Em caso de erro de autenticação e/ou de conexão, utilizar o método Stop para liberação de recursos,
-
seguido do método Start para reiniciar o processo de conexão.
- Ao terminar a execução, chamar o método Stop e liberar os recursos do objeto HBConnection.
- Para utilização das novas funcionalidades, será necessário utilizar a interface HBConnection2, que herda
os métodos e propriedades de HBConnection, e implementa SendOrder2 (que possibilita o envio da
quantidade aparente) e o ModifyOrder;
- Quando utilizado o evento OrderBookResponse, o evento gerado terá a interface OrderBookResponse.
Para acessar a propriedade quot;strDisplayQuantityquot;, é necessário acessar a interface OrderBookResponse2.
Visual Basic -> a conversão é simples e pode ser realizada criando um novo objeto do
tipoHBOrderBookResponse2, como por exemplo:
Dim objOrderBookResponse2 As HBOrderBookResponse2
Set objOrderBookResponse = objOrderBookResponse1
Visual C++ -> a interface HBOrderBookResponse2 pode ser acessada utilizando QueryInterface.
1.4.3 Classes do Componente
1.4.3.1 HBConnection
Objetivo:
Responsável pela manutenção da conexão com o Gateway, permitindo o envio de solicitações e o
recebimento de respostas na forma de eventos. Deve ser instanciado no início da aplicação, e permanecer
instanciado durante a execução da aplicação de forma a permitir a ocorrência de eventos e sua utilização
para solicitações ao Gateway.
Propriedades:
LngStatus As Long
Objetivo:
Situação da conexão com o Gateway.
Possíveis Valores:
0 - Sem conexão com o servidor.
1 - Aguardando conexão com o servidor do Gateway.
2 - Conectado com o servidor.
-1 - Erro de conexão.
Métodos:
SendOrder (hbOrderInfo As HBOrderInfo)
GTW 01 API_ext rev03.doc
30. MANUAL DO USUÁRIO Utilização Página/Folha
MULTIGATEWAY Externa 19/45
Capítulo Revisão Data
II - Procedimentos 03 01/10/08
Objetivo:
Envio de ordens para o sistema de negociação.
Parâmetros:
hbOrderInfo – objeto com detalhes da ordem.
Objetivo:
Inicia o processo de conexão com a corretora.
Parâmetros:
LngPort - porta de conexão com o Gateway.
IntCorretora - identificação da corretora.
LngVersao -número da versão do protocolo Cliente x Gateway. Atualmente deverá ser fixa
igual a 4.
Stop ( )
Objetivo:
Termina a conexão com o Gateway.
CancelOrder ( hbCancelOrder As HBCancelOrder )
Objetivo:
Cancela uma ordem enviada previamente para o sistema de negociação.
Parâmetros:
HbCancelOrder – objeto com detalhes da ordem a ser cancelada.
QueryIndex ( )
Objetivo:
Solicita que o Gateway informe o último índice transmitido e o último control number recebido.
QueryLimits( hbQueryLimits As HBQueryLimits )
Objetivo:
Solicita informações sobre o saldo disponível para utilização no sistema.
Parâmetros:
HbQueryLimits – objeto com detalhes da solicitação de consulta de limites.
RecallMsgs(hbRecallMsgs As HBRecallMsgs )
Objetivo:
Solicita a retransmissão de mensagens.
Parâmetros:
HbRecallMsgs – objeto com detalhes sobre as mensagens que devem ser retransmitidas.
Eventos:
AuthenticationError( lngError As Long )
GTW 01 API_ext rev03.doc
31. MANUAL DO USUÁRIO Utilização Página/Folha
MULTIGATEWAY Externa 20/45
Capítulo Revisão Data
II - Procedimentos 03 01/10/08
Objetivo:
Disparado quando ocorre um erro de autenticação.
Parâmetros:
LngError - código do erro.
ConnectionError( lngError As Long )
Objetivo:
Disparado quando ocorre um erro na conexão com o Gateway Server.
Parâmetros:
LngError - código do erro.
ConnectionOK()
Objetivo:
Disparado quando a conexão com o Gateway ocorre com sucesso.
AuthenticationOK( strLastIndex As String, strLastCtrlNum As String )
Objetivo:
Disparado quando a autenticação com o Gateway é realizada com sucesso.
Parâmetros:
StrLastIndex - índice da última mensagem enviada.
StrLastCtrlNum - último Control Number enviado.
ConnectionClosed()
Objetivo:
Disparado quando a conexão com o Gateway Server é encerrada.
OrderResponse( hbOrderResponse As IHBOrderResponse )
Objetivo:
Disparado quando o Gateway Server envia uma resposta sobre uma ordem previamente enviada
através do método SendOrder().
Parâmetros:
HbOrderResponse - objeto contendo os detalhes do envio da ordem.
CancelResponse( hbCancelResponse As IHBCancelResponse )
Objetivo:
Disparado para informar o cancelamento de uma ordem, que pode ter sido solicitado através do
método CancelOrder ou via outras ferramentas do sistema de negociação (Supervisor e/ou
Controle do Mega).
Parâmetros:
HbCancelResponse - objeto contendo os detalhes do cancelamento da ordem.
ErrorResponse( hbErrorResponse As IHBErrorResponse )
GTW 01 API_ext rev03.doc
32. MANUAL DO USUÁRIO Utilização Página/Folha
MULTIGATEWAY Externa 21/45
Capítulo Revisão Data
II - Procedimentos 03 01/10/08
Objetivo:
Disparado em resposta a um erro ocorrido no tratamento de uma solicitação (Ordem,
Cancelamento ou Consulta a Limite).
Parâmetros:
HbErrorResponse - objeto contendo os detalhes do erro.
IndexResponse( hbIndexResponse As IHBIndexResponse )
Objetivo:
Resposta a uma consulta de informações sobre os últimos índices enviados e control number
processado pelo Gateway.
Parâmetros:
HbIndexResponse - objeto contendo o último índice transmitido e também o último control number
processado pelo Gateway.
LimitResponse( hbLimitResponse As IHBLimitResponse )
Objetivo:
Resposta a uma consulta de limites.
Parâmetros:
HbLimitResponse - objeto contendo informações sobre o saldo disponível do usuário.
TradeResponse( hbTradeResponse As IHBTradeResponse )
Objetivo:
Evento disparado para informar a execução de um negócio.
Parâmetros:
HbTradeResponse - objeto contendo os detalhes sobre a execução do negócio.
TradeCancelResponse( hbTradeCancelResponse As IHBTradeResponse )
Objetivo:
Evento disparado para informar o cancelamento de um negócio.
Parâmetros:
HbTradeCancelResponse - objeto contendo os detalhes sobre o cancelamento do negócio.
GTW 01 API_ext rev03.doc
33. MANUAL DO USUÁRIO Utilização Página/Folha
MULTIGATEWAY Externa 22/45
Capítulo Revisão Data
II - Procedimentos 03 01/10/08
1.4.3.2 HBConnection2
Objetivo:
Interface baseada na interface HBConnection, com o objetivo de criar novos métodos e manter a
compatibilidade.
Métodos:
SendOrder2 (hbNewOrder As HBNewOrder)
Objetivo:
Envio de ordens para o sistema de negociação.
Parâmetros:
hbNewOrder – objeto com detalhes da ordem.
ModifyOrder (hbModifyOrder As HBModifyOrder)
Objetivo:
Envio de modificação de ordens para o sistema de negociação.
Parâmetros:
hbModifyOrder – objeto com detalhes da ordem.
1.4.3.3 HBOrderInfo
Objetivo:
Representa as características de uma ordem. É utilizado nas solicitações e eventos para definir/informar as
características de uma ordem.
Propriedades:
strStock As String
Objetivo:
Código do papel / ativo.
strCtrlNumber As String
Objetivo:
Identificação da ordem ou cancelamento (criado pela aplicação cliente) deve identificar
unicamente uma solicitação.
strUserID As String
Objetivo:
Código do cliente associado à ordem (com dígito verificador).
Nota: o campo código de cliente deve ter, no máximo, 8 dígitos, já incluído o dígito
verificador, sem hífen.
GTW 01 API_ext rev03.doc
34. MANUAL DO USUÁRIO Utilização Página/Folha
MULTIGATEWAY Externa 23/45
Capítulo Revisão Data
II - Procedimentos 03 01/10/08
eotType As HBOrderType (enum)
Objetivo:
Tipo da ordem.
Possíveis Valores:
0 – Compra
1 – Venda
strQuantity As String
Objetivo:
Quantidade de ações.
eocCondition As HBOrderCondition
Objetivo:
Condição (tipo de preço) da ordem.
Possíveis Valores:
0 – Preço limite
1 – Preço de mercado
2 – Melhor preço
3 – Preço abertura
4 – Qualquer preço
5 – Melhor venda
6 – Melhor compra
7 – Último preço
8 – Preço de venda
9 – Preço de compra
strPrice As String
Objetivo:
Preço do papel. Deve ser preenchido sempre que a condição (tipo de preço) for igual a “0 – Preço
Limite”. Utiliza ponto (‘.’) como separador de decimais, suportando até 6 casas decimais. Não
utiliza separador de milhares. Pode conter no máximo 9 dígitos significativos.
eovValidity As HBOrderValidity
Objetivo:
Tipo de validade da ordem.
Possíveis Valores:
0 – Hoje
1 – Até que seja cancelada
2 – Data específica
3 –Tudo ou nada
4 – Executa ou cancela
strValidityDate as String
Objetivo:
GTW 01 API_ext rev03.doc
35. MANUAL DO USUÁRIO Utilização Página/Folha
MULTIGATEWAY Externa 24/45
Capítulo Revisão Data
II - Procedimentos 03 01/10/08
Data de validade da ordem no formado AAAAMMDD. Deve ser preenchida sempre que o tipo de
validade for igual a “2 – Data Específica”.
1.4.3.4 HBCancelOrder
Objetivo:
Informações relevantes ao cancelamento de uma ordem. É utilizado nas solicitações de cancelamento.
Propriedades:
hbOrderInfo As HBOrderInfo
Objetivo:
Detalhes da ordem a ser cancelada.
StrExchangeNumber As String
Objetivo:
Exchange Number da ordem a ser cancelada.
1.4.3.5 HBQueryLimits
Objetivo:
Informações relevantes às consultas de limites.
Propriedades:
strCtrlNumber As String
Objetivo:
Identificador da solicitação.
StrUserID As String
Objetivo:
Usuário ao qual a consulta se refere.
Nota: o campo código de cliente deve ter, no máximo, 8 dígitos, já incluído o dígito
verificador, sem hífen.
1.4.3.6 HBRecallMsgs
Objetivo:
Informações relevantes às recuperações de mensagens.
Propriedades:
strBegin As String
Índice da mensagem inicial cuja retransmissão está sendo solicitada.
strEnd As String
Índice da mensagem final cuja retransmissão está sendo solicitada.
GTW 01 API_ext rev03.doc
36. MANUAL DO USUÁRIO Utilização Página/Folha
MULTIGATEWAY Externa 25/45
Capítulo Revisão Data
II - Procedimentos 03 01/10/08
1.4.3.7 HBOrderResponse
Objetivo:
Informações sobre a aceitação de uma ordem pelo sistema de negociação.
Propriedades:
strExchangeNumber As String
Objetivo:
Número atribuído pelo sistema de negociação à ordem.
strOrderTime As String
Objetivo:
Hora em que a ordem foi registrada no sistema no formato AAAAMMDDHHMMSS.
strIndex As String
Objetivo:
Índice seqüencial diário da mensagem transmitida. Em caso de quebra de seqüência, a aplicação
deverá solicitar retransmissão de mensagens.
hbOrderInfo As HBOrderInfo
Objetivo:
Objeto contendo detalhe da ordem aceita.
1.4.3.8 HBCancelResponse
Objetivo:
Informações sobre o cancelamento de uma ordem pelo sistema de negociação.
Propriedades:
strExchangeNumber As String
Objetivo:
Número atribuído pelo sistema de negociação à ordem cancelada.
strIndex As String
Objetivo:
Índice seqüencial diário da mensagem transmitida. Em caso de quebra de seqüência, a aplicação
deverá solicitar retransmissão de mensagens.
hbOrderInfo As HBOrderInfo
Objetivo:
Detalhes da ordem cancelada.
strCancelledQuantity As String
Objetivo:
Quantidade cancelada.
hbCancelCondition As HBCancelCondition
Objetivo:
Condição de cancelamento
GTW 01 API_ext rev03.doc
37. MANUAL DO USUÁRIO Utilização Página/Folha
MULTIGATEWAY Externa 26/45
Capítulo Revisão Data
II - Procedimentos 03 01/10/08
Possíveis Valores:
0 – Parcial
1 – Total
strCancelTime As String
Objetivo:
Hora em que o cancelamento da ordem foi efetuado no formato AAAAMMDDHHMMSS.
1.4.3.9 HBErrorResponse
Objetivo:
Informações sobre o erro ocorrido.
Propriedades:
hbOrderInfo As HBOrderInfo
Objetivo:
Detalhes da ordem que gerou o erro ou da ordem associada ao cancelamento que gerou o erro.
strErrorMsg As String
Objetivo:
Mensagem de erro textual. Obedece a uma tabela consultada pelo Gateway.
Se o usuário desejar exibir mensagens em diferentes línguas, deve utilizar a propriedade
ErrorNumber para traduzir para a linguagem desejada.
strErrorNumber As String
Objetivo:
Código numérico do erro.
strErrorSeverity As String
Objetivo:
Severidade do erro.
Possíveis Valores:
0 – Gateway
1 – SLE
2 – MEGA BOLSA
strErrorTime As String
Objetivo:
Hora da ocorrência do erro.
strIndex As String
Objetivo:
Índice seqüencial diário da mensagem transmitida. Em caso de quebra de seqüência, a aplicação
deverá solicitar retransmissão de mensagens.
strOrderStatus As String
Objetivo:
Status da ordem no sistema de negociação.
Possíveis Valores:
GTW 01 API_ext rev03.doc
38. MANUAL DO USUÁRIO Utilização Página/Folha
MULTIGATEWAY Externa 27/45
Capítulo Revisão Data
II - Procedimentos 03 01/10/08
5 – Ordem Congelada. Quando ocorre esta situação, a ordem fica no sistema
aguardando o aceite ou a recusa; isto faz com que a ordem não seja
desconsiderada. Em caso de aceite ocorrerá um evento OrderResponse
confirmando a ordem, caso contrário, será emitido um novo erro ou cancelamento,
invalidando a ordem.
Outros Valores – Ordem Rejeitada (não registrada).
1.4.3.10 HBIndexResponse
Objetivo:
Informações relativas à resposta de uma consulta de índices.
Propriedades:
strLastCtrlNumber As String
Objetivo:
Último Control Number processado pelo Gateway.
strLastIndex As String
Objetivo:
Índice da última mensagem enviada pelo Gateway.
1.4.3.11 HBLimitResponse
Objetivo:
Informações sobre o limite de operação de um usuário.
Propriedades:
strConsumedLimit As String
Objetivo:
Valor utilizado do Limite.
strCtrlNumber As String
Objetivo:
Identificador da solicitação (consulta).
strIndex As String
Objetivo:
Índice seqüencial diário da mensagem transmitida. Em caso de quebra de seqüência, a aplicação
deverá solicitar retransmissão de mensagens.
strPeriod As String
Objetivo:
Número de dias até a reinicialização de limite.
strTotalLimit As String
Objetivo:
Limite total do usuário.
GTW 01 API_ext rev03.doc
39. MANUAL DO USUÁRIO Utilização Página/Folha
MULTIGATEWAY Externa 28/45
Capítulo Revisão Data
II - Procedimentos 03 01/10/08
strUserID As String
Objetivo:
Código do usuário cujo limite foi consultado.
Nota: o campo código de cliente deve ter, no máximo, 8 dígitos, já incluído o dígito
verificador, sem hífen.
1.4.3.12 HBTradeResponse
Objetivo:
Informações sobre a execução ou o cancelamento de um negócio.
Propriedades:
hbTradeCondition As HBTradeCondition
Objetivo:
Condição do negócio.
Possíveis Valores:
0 - Execução parcial.
1 - Execução total.
hbOrderInfo As HBOrderInfo
Objetivo:
Detalhes da ordem.
strAveragePrice As String
Objetivo:
Preço médio entre todas as execuções associadas à ordem.
strCounterpartBroker As String
Objetivo:
Contraparte do negócio.
strExchangeNumber As String
Objetivo:
Exchange Number da ordem.
strExecutedPrice As String
Objetivo:
Preço de execução do negócio.
strExecutionTime As String
Objetivo:
Hora do fechamento do negócio.
strIndex As String
Objetivo:
Índice seqüencial diário da mensagem transmitida. Em caso de quebra de seqüência, a aplicação
deverá solicitar retransmissão de mensagens.
strRemainingQuantity As String
Objetivo:
Quantidade remanescente em aberto.
GTW 01 API_ext rev03.doc