Olá, estou iniciando aplicações que usam está biblioteca e no momento procuro entender melhor seu funcionamento, pretendendo me aprofundar no conhecimento a respeito do FIX (Financial Information eXchange) e de sua implementação livre em java, o projeto quickfixj. Caso outros leitores deste fórum tenham algum conhecimento ou interesse neste tópico, poderiamos criar um grupo para trocar idéias sobre a utilização da biblioteca e para uma melhor compreensão do protocolo.
Não sei se este é o espaço ideal para criar este tópico, mas acredito que sim, já que os desenvolvedores mais avançados frequentam este fórum. Além disso realizei pesquisas no fórum e não encontrei nada a respeito do FIX, então acho que é uma oportunidade para aprender algo novo e que poderá trazer boas oportunidades a carreira dos desenvolvedores que dominarem a tecnologia, por isso deixo o convite aqui neste fórum para a criação deste grupo de estudos.
“A mente que se abre a uma nova idéia jamais voltará ao seu tamanho original” (Albert Einstein)
Eu dei uma palestra no JustJava do ano passado referente ao FIX e ao QuickFIX entre outras coisas; entretanto, eu uso a versão C++, não a QuickFIX/J (embora eu a tenha usado em um programa de teste).
Em particular acho a versão Java bem melhor que a versão C++ (aqui onde estou alocado a QuickFIX/C++ foi pesadamente modificada porque a original está excessivamente bugada). A versão Java é bem mais robusta, mas está um pouco “atrasada” em relação à versão C++.
Legal, eu to iniciando ainda com o quickfixj e o protocolo FIX, mas 24 horas depois do post, não parece haver muito interesse da comunidade por esta tecnologia. Os problemas que vocês encontraram com o quickfix (C++) são falhas graves ou apenas alterações pequenas ?
Pergunto isso pq onde estou liderando o projeto de um roteador de ordens, que irá rotear ordens tanto através de FIX com a biblioteca quickfix, como sobre https, através da biblioteca HttpClient, e este está sendo projetado/escrito em Java, mas os clientes do roteador podem vir a ser implementados em C++, o que estou tentando evitar, mas cabe ao lider do projeto dos clientes decidir, hehehe… de qualquer maneira a decisão final não é minha, e a troca de mensagens entre cliente e roteador será feita através do FIX sobre TCP então à princípio, nenhum problema nisso.
Uma última dúvida, estou com problemas para setar o Timezone na JVM…o log de inicialização do Roteador fica assim: 20090508-16:53:52.972: Session FIX.4.4:ROUTER->TESTE_CLIENT_1 schedule is weekly, MON 11:00:00 UTC - SAT 01:00:00 UTC (weekly, MON 08:00:00 BRT - SAT 22:00:00 BRT).
Isso foi executado as 13:53:52:972… na troca de mensagens após isso, tudo certo, pois a configuração da session do FIX está correta, mas a linha sempre começa com a hora UTC + 0 e não estou encontrando na internet a resposta para essa simples questão. Será q vc pode me ajudar ?
“A mente que se abre a uma nova idéia jamais voltará ao seu tamanho original” (Albert Einstein)
O padrão de log do QuickFIX é UTC mesmo.
Não mude esse padrão, porque há várias aplicações que lêem logs nesse formato, e esperam que esteja em UTC, não em BRT (horário de Brasília) ou BRST (horário de verão de Brasília).
Agora uma coisa, o QuickFix é uma coisa e o logViewer é outro pacote separado ?
Teria como trabalhar somente com o logViewer ?
No about do site do projeto não me diz muita coisa, na verdade não diz nada, a não ser que é um mecanismo para trabahar com fix, mas não diz o que faz realmente.
Hum… por que é que você quer usar apenas o Log Viewer (visualizador de logs do QuickFIX)?
Se é para usar o QuickFIX (quer seja para efetuar uma negociação, quer seja para obter a difusão do sinal) use o QuickFIX/J (e futuramente o OpenFAST, para receber a nova difusão de sinal, que está prevista para entrar logo no ar.)
[quote=entanglement]Hum… por que é que você quer usar apenas o Log Viewer (visualizador de logs do QuickFIX)?
Se é para usar o QuickFIX (quer seja para efetuar uma negociação, quer seja para obter a difusão do sinal) use o QuickFIX/J (e futuramente o OpenFAST, para receber a nova difusão de sinal, que está prevista para entrar logo no ar.)
[/quote]
A questão é que nem sei o que QuickFix faz direito. No site não consigui informação além de que é uma ferramenta que trabalha com o protocolo Fix.
O que essa ferramenta faz e o que logViewer faz efetivamente ?
Obrigadão desde já.
Tá bom.
O QuickFIX (que nome infeliz, isso para mim em inglês quer dizer “band-aid”) é uma implementação do protocolo FIX que foi escrita em C++.
Foi feito um porte desse projeto para o Java, chamado “QuickFIX/J”.
Você pode escrever clientes do protocolo FIX (também chamados de “initiators”) e servidores desse protocolo (também chamados de “acceptors” com essa biblioteca.
Tipicamente o protocolo FIX requer uma conexão TCP/IP; o formato das mensagens é bem simples (até simples demais) mas não foi devidamente pensado direito (ele na verdade foi bem remendado).
Se você precisa, por exemplo, comprar um lote de ações na BM&FBovespa, você precisa mandar uma mensagem “New Order Single” com os parâmetros adequados, e a confirmação da sua compra (supondo-se, é claro, que haja ações disponíveis para serem compradas) é dada por uma mensagem “Execution Report”, que é mandada pelo “núcleo de negociação” para você.
[quote=entanglement]Tá bom.
O QuickFIX (que nome infeliz, isso para mim em inglês quer dizer “band-aid”) é uma implementação do protocolo FIX que foi escrita em C++.
Foi feito um porte desse projeto para o Java, chamado “QuickFIX/J”.
Você pode escrever clientes do protocolo FIX (também chamados de “initiators”) e servidores desse protocolo (também chamados de “acceptors” com essa biblioteca.
Tipicamente o protocolo FIX requer uma conexão TCP/IP; o formato das mensagens é bem simples (até simples demais) mas não foi devidamente pensado direito (ele na verdade foi bem remendado).
Se você precisa, por exemplo, comprar um lote de ações na BM&FBovespa, você precisa mandar uma mensagem “New Order Single” com os parâmetros adequados, e a confirmação da sua compra (supondo-se, é claro, que haja ações disponíveis para serem compradas) é dada por uma mensagem “Execution Report”, que é mandada pelo “núcleo de negociação” para você. [/quote]
O QuickFix então é um “monta ordens” e somente isso ?
No cliente ele monta as ordens no padrão FIX e no server ele recebe essas ordens dos clientes ?
Mas que tipo de serviço além de montar (client) e ler (server) ordens, o QuickFix provê a ponto de disponibilizar uma API para desenvolvimento ?
Bom, depende do tipo de serviço que a Bolsa disponibiliza. Por exemplo, você pode obter os dados de mercado (“Market Data”) no formato FIX - entre os dados de mercado incluem-se as cotações, as 5 melhores ofertas, os “books” etc. Entretanto, a BM&FBovespa irá usar em futuro próximo o formato FAST, que pelo próprio nome é mais rápido e mais eficiente. Entretanto, como será difundida usando-se o protocolo UDP em vez de TCP, o cliente do protocolo FAST também tem de ser rápido suficiente para conseguir suportar as milhares de mensagens por minuto que devem ser recebidas pelos clientes.
[quote=thingol]Bom, depende do tipo de serviço que a Bolsa disponibiliza. Por exemplo, você pode obter os dados de mercado (“Market Data”) no formato FIX - entre os dados de mercado incluem-se as cotações, as 5 melhores ofertas, os “books” etc. Entretanto, a BM&FBovespa irá usar em futuro próximo o formato FAST, que pelo próprio nome é mais rápido e mais eficiente. Entretanto, como será difundida usando-se o protocolo UDP em vez de TCP, o cliente do protocolo FAST também tem de ser rápido suficiente para conseguir suportar as milhares de mensagens por minuto que devem ser recebidas pelos clientes.
[/quote]
Obrigado Thingol.
Só o seguinte, esse formato Fast é uma nova implementação do protocolo Fix ? Seria uma nova versão corrreto ?
Agora outra coisa,o que é realmente o QuickFix ? Que parte do trabalho ele é responsável ?
La vou eu…
Primeiro preciso dizer que não sei nada deste assunto, só as coisas que ando lendo por ai que deixam muito a desejar, mas quero saber mais.
Acho muito complicado e nada direto as coisas que leio por ai, parece que as pessoas complicam de propósito, achei bem bacana a conversa de vcs então ai vão algumas perguntas bem básicas que eu não entendo.
Ao utilizar o QuickFix/J o que eu posso fazer? Enviar, receber ordens, consultar informações market data completa em tempo real?
O QuickFix é só a API certo? Para acessar o sinal da Bm&fBovespa preciso comprar o direito de acesso ao sinal Bm&fBovespa?
O direito de acesso ao sinal é oque? Um login de acesso a um servidor? Como é feita a a recepção deste sinal?
O sinal é obtido direto com a Bm&fBovespa ou é necessário um vendor intermediário para eu adquirir este sinal?
Se é necessário obter este sinal através de um Vendor, quais exemplos de Vendors que disponibilizam este sinal? Qual o preço deste sinal pra meros mortais?
Como configurar o QuickFix/J para receber o sinal Bm&fBovespa?
Com o QuickFix/J posso acessar a Bm&fBovespa e outros mercados? Como especificar o mercado que desejo acesssar?
Bom acho que não esqueci nada
Agradeço se puderem me dar uma luz pois nao estou encontrando respostas claras para estas perguntas.
Suas perguntas por si só gerariam mais páginas do que ficha criminal da Dilma.
Mas vou tentar lhe dar um caminho, pois já sofri por não encontrar informações sobre o que é o FIX.
Vamos lá:
O Quickfix(J), serve para muitas aplicações de caráter financeiro, inclusive dados relacionados a bolsas de valores. Ou seja, não é específico para bolsa.
2)Sim, necessita comprar o sinal.
3)O acesso ao sinal pode ser entendido por login e senha, mas já é uma sessão Fix. Procure por classes “Aplicações” ou Aplication em Fix. Deve achar alguns exemplos ai pelo google.
É necessário um vendor, e até onde sei, só existe um, e não me recordo o nome.
Você necessitará de um link de 2Mb para começar a brincadeira, mas existem exigências para que sejam 4Mb. O preço é bem sagaldo, e não me recordo também.
Como configurar é algo muito complexo para lhe explicar aqui. Leia o documento da Bell que as coisas vão clarear mais para você e ai você reduzir as perguntas para pontos mais específicos.
Comece estudando pela BM&F.
Tem algumas outras questões que você deve considerar. A BM&F por exemplo utiliza uma versão própria do Fix. É a versão 4.4 porém customizada por eles.
Um conselho, procure pelo manual da BELL no site da BMF Bovespa, ele apesar de ser mal escrito em alguns pontos, vai te mostrar como e quais são as mensagens em Fii
Este site também será seu melhor amigo nessa jornada insana : http://www.fixprotocol.org/FIXimate3.0/
A BMF também um simulador de sinal grotesco, mas que irá quebrar um bom galho para você começar a ganhar cabelos brancos.
ehehe vlw ai pelas respostas, rs.
Eu estava esperando mais ou menos por respostas como estas, andei fuçando neste manual da BELL e já estava ficando enjoado só de olhar.
Imaginei que seria uma tarefa extremamente complicada e vendo sua mensagem confirmei isso eheheh então acho que vou preservar um pouco a cor dos meus cabelos rs.
Só o que me deixa realmente frustrado é o fato de parecer ser feito para ser complexo, não só pela arquitetura (extremamente complicada pelo pouco que li) mas tb pela forma como são divulgadas as informações e é claro os preços.
De qualquer forma ai vai mais algumas perguntas, uma ou outra simplesmente pra ver se tomo coragem para prosseguir com esta luta.
Imaginando que vc tenha experiência nesta área, então lhe pergunto:
Você já fez ou já conseguiu fazer algo interessante para acesso aos dados da bolsa desta forma, usando o QuickFix/J? Acha que seria extremamente insano tentar faze-lo?
O padrâo das mensagens FIX da Bm&fBovespa são estáticos ou mudam com o tempo?
Com o novo padrâo Fix/Fast, você imagina alguma forma mais facil que virá recentemente tornar uma tarefa como estas mais plausível de ser realizada?
Você conhece se existe ou é possivel realizar esta tarefa utilizando alguma API ou meios imagináveis que acessam a Globex?
Não se desespere não.
É complicado no início, e depois piora. hehehe . Brincadeira, a maior dificuldade é dar o primeiro passo. Não tem muito material, pois é um segmento muito fechado.
Mas é possível, acredite. Depende do seu empenho.
Que eu mal lhe pergunte, o que você pretende ? Abrir uma corretora ?
Mas vamos lá:
Já ouvi falar do OnixS, mas nunca usei. Vou dar uma olhada depois.
Sim, fiz e faço muita coisa beemmm interessante com isso. No início achei insano, pois como você, não tinha idéia de como funcionava. O mais difícil é escrever a primeira classe, depois a mágica acontece e tudo é natural e fluído. Passe pelo bastimo de fogo, escrevendo sua classe Aplication. Pesquise por isso !!! Ela é o ponto chave.
O padrão é estático. Caso tenha alguma alteração, esta só seria lançada em uma nova versão.
Até onde sei, este fast só irá diminuir as tags e compactá-las para diminuir o overhead das mensagens, sendo mais rápido seu tráfego.
O Fix é o presente e o futuro. Acredite, senão for Fix é muito pior !!!
Dê uma olhada neste site: http://www.quickfixengine.org/quickfix/doc/html/index.html
É a mesma API do QuickFix/J, só que nele você tem documentação.
Vá de bixo em “Getting Started”. Lá tem exemplos e tal. E baixe o marketDataSimulator da BM&F e comece a fazer a mágica acontecer.
Boa sorte amigo. Se precisar de um companheiro, estarei no bar ao lado !