SlideShare a Scribd company logo
1 of 81
Download to read offline
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
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
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
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
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
MANUAL DO USUÁRIO   Utilização     Página/Folha

                                           MULTIGATEWAY          Externa           3/4
Capítulo                                                     Revisão        Data
Índice                                                                 02   30/05/08

                    1.4.3.17 HBOrderBookResponse2                           31/45


       1.5 LIB                                                              31/45
            1.5.1 Instalação do Componente LibGnr.a                         31/45
            1.5.2 Utilização Básica                                         32/45
            1.5.3 Funções                                                   33/45
                    1.5.3.1 GetStatus                                       33/45
                    1.5.3.2 GetLastCtrlNumber                               33/45
                    1.5.3.3 Start                                           33/45
                    1.5.3.4 Stop                                            34/45
                    1.5.3.5 SendOrder                                       34/45
                    1.5.3.6 CancelOrder                                     36/45
                    1.5.3.7 QueryLimits                                     36/45
                    1.5.3.8 QueryIndex                                      37/45
                    1.5.3.9 RecallMessages                                  37/45
                    1.5.3.10 QueryOrderBook                                 37/45
                    1.5.3.11 ModifyOrder                                    37/45
            1.5.4 Eventos                                                   38/45
                    1.5.4.1 OrderResponse                                   38/45
                    1.5.4.2 TradeResponse                                   39/45
                    1.5.4.3 CalcelResponse                                  40/45
                    1.5.4.4 LimitResponse                                   40/45
                    1.5.4.5 ErrorResponse                                   41/45
                    1.5.4.6 TradeCancelResponse                             41/45
                    1.5.4.7 IndexResponse                                   42/45
                    1.5.4.8 OrderBookResponse                               42/45
                    1.5.4.9 AuthenticationOk                                43/45
                    1.5.4.10 AuthenticationError                            44/45
                    1.5.4.11 ConnectionAccepted                             44/45
                    1.5.4.12 ConnectionError                                44/45
                    1.5.4.13 ModifyResponse                                 44/45


                                                                             1/11
2 – PROTOCOLO FIX

                                                                             1/11
       2.1 FIX

                                                                             2/11
       2.2 Mensagens FIX
            2.2.1 Header                                                     2/11
            2.2.2 Trailer                                                    3/11
            2.2.3 Mensagens Administrativas                                  3/11
                    2.2.3.1 Logon                                            4/11
                    2.2.3.2 Logout                                           4/11
                    2.2.3.3 HeartBeat                                        4/11
                    2.2.3.4 TestRequest                                      5/11
                    2.2.3.5 ResendRequest                                    5/11


GTW 00 Índice_ext.doc
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Manual do usuário do Multigateway
Manual do usuário do Multigateway
Manual do usuário do Multigateway
Manual do usuário do Multigateway
Manual do usuário do Multigateway
Manual do usuário do Multigateway
Manual do usuário do Multigateway
Manual do usuário do Multigateway
Manual do usuário do Multigateway
Manual do usuário do Multigateway
Manual do usuário do Multigateway
Manual do usuário do Multigateway
Manual do usuário do Multigateway
Manual do usuário do Multigateway
Manual do usuário do Multigateway
Manual do usuário do Multigateway
Manual do usuário do Multigateway
Manual do usuário do Multigateway
Manual do usuário do Multigateway
Manual do usuário do Multigateway
Manual do usuário do Multigateway
Manual do usuário do Multigateway
Manual do usuário do Multigateway
Manual do usuário do Multigateway
Manual do usuário do Multigateway
Manual do usuário do Multigateway
Manual do usuário do Multigateway
Manual do usuário do Multigateway
Manual do usuário do Multigateway
Manual do usuário do Multigateway
Manual do usuário do Multigateway
Manual do usuário do Multigateway
Manual do usuário do Multigateway
Manual do usuário do Multigateway
Manual do usuário do Multigateway
Manual do usuário do Multigateway
Manual do usuário do Multigateway
Manual do usuário do Multigateway
Manual do usuário do Multigateway
Manual do usuário do Multigateway
Manual do usuário do Multigateway
Manual do usuário do Multigateway

More Related Content

Viewers also liked

SB11 - Movie Introduction - Abigail, Patty, Shaun
SB11 - Movie Introduction - Abigail, Patty, ShaunSB11 - Movie Introduction - Abigail, Patty, Shaun
SB11 - Movie Introduction - Abigail, Patty, ShaunSustainable Brands
 
SB11 - Rimon Law Group - Lara Pearson
SB11 - Rimon Law Group - Lara PearsonSB11 - Rimon Law Group - Lara Pearson
SB11 - Rimon Law Group - Lara PearsonSustainable Brands
 
CeBIT störing gebrauchtsoftware 08.03.2012
CeBIT störing gebrauchtsoftware 08.03.2012CeBIT störing gebrauchtsoftware 08.03.2012
CeBIT störing gebrauchtsoftware 08.03.2012Marcst76
 
Sculturedizuccherofilato
SculturedizuccherofilatoSculturedizuccherofilato
SculturedizuccherofilatoSimona Converso
 
SB11 - 1% for the Planet - Melody Badgett
SB11 - 1% for the Planet - Melody Badgett SB11 - 1% for the Planet - Melody Badgett
SB11 - 1% for the Planet - Melody Badgett Sustainable Brands
 
New Studies and Insights on the Benefits of Gender Equality in Leadership Pos...
New Studies and Insights on the Benefits of Gender Equality in Leadership Pos...New Studies and Insights on the Benefits of Gender Equality in Leadership Pos...
New Studies and Insights on the Benefits of Gender Equality in Leadership Pos...Sustainable Brands
 
Standout Opportunities: Brands, Consumers and a Global Stage - Phil Cumming
Standout Opportunities: Brands, Consumers and a Global Stage - Phil CummingStandout Opportunities: Brands, Consumers and a Global Stage - Phil Cumming
Standout Opportunities: Brands, Consumers and a Global Stage - Phil CummingSustainable Brands
 
Project Kaisei: Collaborating to Protect Our Oceans
Project Kaisei: Collaborating to Protect Our OceansProject Kaisei: Collaborating to Protect Our Oceans
Project Kaisei: Collaborating to Protect Our OceansSustainable Brands
 

Viewers also liked (15)

Nardoraccolta 113
Nardoraccolta 113Nardoraccolta 113
Nardoraccolta 113
 
SB11 - Movie Introduction - Abigail, Patty, Shaun
SB11 - Movie Introduction - Abigail, Patty, ShaunSB11 - Movie Introduction - Abigail, Patty, Shaun
SB11 - Movie Introduction - Abigail, Patty, Shaun
 
SB11 - Rimon Law Group - Lara Pearson
SB11 - Rimon Law Group - Lara PearsonSB11 - Rimon Law Group - Lara Pearson
SB11 - Rimon Law Group - Lara Pearson
 
Out of the box presentation
Out of the box presentationOut of the box presentation
Out of the box presentation
 
CeBIT störing gebrauchtsoftware 08.03.2012
CeBIT störing gebrauchtsoftware 08.03.2012CeBIT störing gebrauchtsoftware 08.03.2012
CeBIT störing gebrauchtsoftware 08.03.2012
 
Sculturedizuccherofilato
SculturedizuccherofilatoSculturedizuccherofilato
Sculturedizuccherofilato
 
Gergo romanesco
Gergo romanescoGergo romanesco
Gergo romanesco
 
Lettera Di George
Lettera Di GeorgeLettera Di George
Lettera Di George
 
SB11 - 1% for the Planet - Melody Badgett
SB11 - 1% for the Planet - Melody Badgett SB11 - 1% for the Planet - Melody Badgett
SB11 - 1% for the Planet - Melody Badgett
 
New Studies and Insights on the Benefits of Gender Equality in Leadership Pos...
New Studies and Insights on the Benefits of Gender Equality in Leadership Pos...New Studies and Insights on the Benefits of Gender Equality in Leadership Pos...
New Studies and Insights on the Benefits of Gender Equality in Leadership Pos...
 
Revista da àgua
Revista da àguaRevista da àgua
Revista da àgua
 
Standout Opportunities: Brands, Consumers and a Global Stage - Phil Cumming
Standout Opportunities: Brands, Consumers and a Global Stage - Phil CummingStandout Opportunities: Brands, Consumers and a Global Stage - Phil Cumming
Standout Opportunities: Brands, Consumers and a Global Stage - Phil Cumming
 
Project Kaisei: Collaborating to Protect Our Oceans
Project Kaisei: Collaborating to Protect Our OceansProject Kaisei: Collaborating to Protect Our Oceans
Project Kaisei: Collaborating to Protect Our Oceans
 
Member Meeting | 31015 | HP
Member Meeting | 31015 | HPMember Meeting | 31015 | HP
Member Meeting | 31015 | HP
 
Nuove Idee
Nuove IdeeNuove Idee
Nuove Idee
 

Manual do usuário do Multigateway

  • 1.
  • 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
  • 7. MANUAL DO USUÁRIO Utilização Página/Folha MULTIGATEWAY Externa 3/4 Capítulo Revisão Data Índice 02 30/05/08 1.4.3.17 HBOrderBookResponse2 31/45 1.5 LIB 31/45 1.5.1 Instalação do Componente LibGnr.a 31/45 1.5.2 Utilização Básica 32/45 1.5.3 Funções 33/45 1.5.3.1 GetStatus 33/45 1.5.3.2 GetLastCtrlNumber 33/45 1.5.3.3 Start 33/45 1.5.3.4 Stop 34/45 1.5.3.5 SendOrder 34/45 1.5.3.6 CancelOrder 36/45 1.5.3.7 QueryLimits 36/45 1.5.3.8 QueryIndex 37/45 1.5.3.9 RecallMessages 37/45 1.5.3.10 QueryOrderBook 37/45 1.5.3.11 ModifyOrder 37/45 1.5.4 Eventos 38/45 1.5.4.1 OrderResponse 38/45 1.5.4.2 TradeResponse 39/45 1.5.4.3 CalcelResponse 40/45 1.5.4.4 LimitResponse 40/45 1.5.4.5 ErrorResponse 41/45 1.5.4.6 TradeCancelResponse 41/45 1.5.4.7 IndexResponse 42/45 1.5.4.8 OrderBookResponse 42/45 1.5.4.9 AuthenticationOk 43/45 1.5.4.10 AuthenticationError 44/45 1.5.4.11 ConnectionAccepted 44/45 1.5.4.12 ConnectionError 44/45 1.5.4.13 ModifyResponse 44/45 1/11 2 – PROTOCOLO FIX 1/11 2.1 FIX 2/11 2.2 Mensagens FIX 2.2.1 Header 2/11 2.2.2 Trailer 3/11 2.2.3 Mensagens Administrativas 3/11 2.2.3.1 Logon 4/11 2.2.3.2 Logout 4/11 2.2.3.3 HeartBeat 4/11 2.2.3.4 TestRequest 5/11 2.2.3.5 ResendRequest 5/11 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