Estou tentando projetar meu primeiro sistema de negociação e estou lutando com o projeto de um objeto de Ordem correto com todos os conceitos FIX envolvidos. Perguntando se alguma pessoa experiente pode acender algumas idéias. Eu criei uma classe Order simples. Mas como um NewOrderSingle (FIX) é gerado, eu preciso de um ClOrdId. Então, quando eu cancelar este pedido, preciso de um novo ClOrdId (Para cada cancelar e substituir a mensagem FIX gerada) e definir o OrigClOrdId correto. Então eu preciso acompanhar esses origClOrdIds. Além disso, acho que preciso manter um Id interno único no meu sistema para identificar esse pedido, diferente do ClOrdId. O que poderia continuar mudando. Eu não vejo nenhum objeto agradável de maneira orientada de projetar este objeto de ordem, mantendo o conceito de vários Ids relevantes para minhas mensagens FIX separadas. Como as pessoas projetam isso no mundo real? Todas as sugestões Obrigado. Eu estive envolvido com o design de vários sistemas que fazem exatamente o que você está descrevendo. Na verdade, é mais complicado do que projetar uma hierarquia de classes. Algumas coisas a ter em mente: com base na classe de ativos do site de negociação e na classe de ativos, a identificação exclusiva da ordem pode ser uma combinação de tags. Por exemplo, ao negociar no NYSE Classic, o ID exclusivo é, na verdade, um ID composto composto por Tag 115 (OnBehalfOfCompID) Tag 11. Para outros locais, pode ser Tag 109 Tag 11 ou Tag 76 Tag 11. Além disso, você pode precisar Para adicionar mais dados à sua ID exclusiva para explicar o fato de que os IDs enviados para locais distintos poderiam ser os mesmos. Por exemplo, alguns locais exigem um Inteiro como seu valor ClOrdID. Nesses casos, sua representação interna da identificação única deve ser algum tipo de sal, os dados ID, ou seja, DARKCROSS-1, onde o local (ficcional) é DARKCROSS e 1 é o valor da etiqueta 11. Se vários locais tiverem uma estratégia similar para resolver o ID exclusivo da ordem, você poderia extrair essa lógica em uma fábrica de ID - composição sobre herança. Então, sua abstração pode começar com um AbstractOrder. Mas você pode achar que precisa ter o NyseOrder. NasdaqOrder. e assim por diante. (Observe que algumas implementações que eu vi têm uma classe GenericFixOrder ou algumas dessas. Na prática, não há tal coisa - cada local tem seu próprio comportamento específico que é ligeiramente diferente dos outros.) Outro tópico é Good Til Cancel e Good Til Date orders , O que geralmente deve ter IDs únicos para todos os tempos (ou seja, o ID deve conter uma data) e sobreviver ao seu aplicativo para vários reinícios. Então, sua fábrica de ID deve levar essas ordens em conta. Em relação ao relacionamento das IDs, é realmente bastante direto. Você possui um Mapa de IDs de pedidos únicos para encomendar objetos. A classe que representa uma Cancelar Substituir ou Cancelar faz referência à ordem principal (através de um campo de Identificação de Pedido Principal, resolvido o mesmo que o campo ID exclusivo como descrito acima). Não é necessário ter uma referência direta ao original (raiz) Nova Ordem, de fato, quando o CancelReplace for aceito, poderá achar que é benéfico removê-lo do Mapa que contém suas ordens. Quando o Cancelar é aceito, você quase definitivamente pode removê-lo e o Pedido no Mapa - a ordem está completa. Observe que o acima é um esboço geral - remover ordens da memória, etc. pode ser considerado uma otimização prematura. Se os seus volumes de negociação forem pequenos, você poderá manter todas as suas mensagens comerciais na memória durante todo o dia. Estou no processo de criar um aplicativo comercial que usará uma API de mercados para fazer pedidos no mercado. Esta não é uma aplicação complexa de negociação algorítmica de alto desempenho do tipo encontrado em bancos de investimento. Esta é apenas uma pequena aplicação pessoal que trocará talvez duas ou três vezes por dia, dependendo das condições de mercado. A aplicação consistirá (aproximadamente) nos seguintes pacotes de módulos: Estratégias - Os algoritmos de negociação reais Analytics - As aulas para analisar os preços de compra de preços ao vivo No mercado para produzir sinais de buysell Serviços - As classes usadas para manter uma conexão com o mercado, recuperar informações de mercado e colocar pedidos de buysell. Até agora, tudo o que é necessário para o aplicativo parece estar disponível na internet: Apache CXF para gerar as classes Java usadas para acessar os serviços da web de mercado. Apache Maths para a realização da análise de preços da Wikipedia para os vários padrões de design, ou seja, Factory, SubjectObserver, State, etc. Onde estou realmente preso no entanto é com os algoritmos. Decidi usar o padrão do Estado para particionar, em agrupamentos lógicos, as várias partes da lógica que deveriam ser executadas quando determinadas condições de mercado forem atendidas. O problema é que eu estou começando a ver que é muito provável que cada classe de estado contenha uma explosão de afirmações if else: Eu não posso ajudar, mas sinto que estou perdendo algo aqui e que deve existir alguma estrutura ou padrão de design que eu não sei sobre qual Permite que o desenvolvedor encapsule todas as entradas e saídas de um determinado contexto de negócios em um número finito de entrada de negócios de ações finais em que os padrões de regras de negócios podem ser criados. Isto é, Em vez de ter que codificar os algoritmos, espero que seja possível fazer o aplicativo em um processador de regras de algum tipo. Infelizmente eu não sei por onde começar. Espero ter explicado claramente o meu dilema, se você gostaria de esclarecer qualquer coisa, por favor me avise. Obrigado, perguntei 8 de outubro 09 às 22: 48W e l c o m e Bem-vindo ao Início do Sistema de Comércio Open Java O Open Java Trading System (OJTS) é uma infra-estrutura comum para desenvolver sistemas de negociação de ações. Consiste em quatro partes: a coleta de dados brutos pela internet, o reconhecimento da negociação marca um módulo de visualização e módulos para se conectar às interfaces programáticas das plataformas de negociação, como os bancos. O objetivo dos projetos é fornecer uma infra-estrutura comum independente independente de plataformas Java (plataforma independente) para desenvolvedores de sistemas de negociação. Alguns dos aspectos que devem ser abordados são fornecer um esquema comum de banco de dados compatível com SQL92 para armazenar dados financeiros, interfaces Java comuns para como trocar dados entre diferentes módulos, visualização de dados financeiros brutos e sinais comerciais e vários outros aspectos comuns necessários para criar Um sistema de negociação final. Por causa do meu trabalho e da minha família, não consigo mais tempo para melhorar o OJTS. Estou continuando a atualizar a seção de links abaixo que irá guiá-lo para projetos mais ativos de código aberto java nessa área, no entanto. Na verdade, como consequência do meu interesse na dinâmica dos mercados de ações, comecei uma jornada nos detalhes mais profundos da economia nacional para entender as taxas de câmbio. Este tópico finalmente me leva a um estudo mais profundo do dinheiro em si como a unidade métrica que usamos em economia para medir valor, sucesso ou utilidade. Este tópico revelou-se extremamente interessante, mas ao mesmo tempo era muito difícil encontrar informações sobre o funcionamento do nosso sistema monetário. Vá ao redor e pergunte às pessoas de onde vem o dinheiro, quem o cria e o que determina seu valor. Você notará que até mesmo as pessoas que possuem mestrado ou doutorado. Na economia não conhecerá esses detalhes. Oh, sim, eles responderão em termos técnicos crípticos, mas não poderão desenhar um diagrama simples que descreva o processo. H. G. Wells disse ter dito: escrever de moeda é geralmente reconhecido como uma prática censurável, e quase quase indecente. Os editores imploram ao escritor quase lágrimas de não escrever sobre o dinheiro, não porque seja um assunto desinteressante, mas porque sempre foi profundamente perturbador. Sugiro a qualquer pessoa que viva em uma sociedade democrática para ler sobre este assunto. Isso afeta nossas vidas todos os dias até certo ponto que não pode ser exagerado. Na minha opinião, todos os cidadãos de um país democrático nesse mundo devem saber de onde vem o nosso dinheiro. Provavelmente você veio a este site para procurar ferramentas que o ajudem a aumentar sua riqueza monetária. Para entender o dinheiro da unidade métrica (não importa se Dollar ou Euro) será um ingrediente importante em seu toolkit para ganhar dinheiro. Se você tem pouco tempo e só pode dar ao luxo de ler um único livro sobre esse assunto, então sugiro que você leia Riqueza, Riqueza Virtual e Dívida por Frederick Soddy. Eu consegui comprar uma cópia usada via Amazon para 23,48, mas existe também uma versão online. Você precisará do plugin DjVu para lê-lo. Este livro foi publicado originalmente em 1929, mas ainda descreve os fatos reais muito bem. Mesmo que eu não concorde com todas as conclusões de Frederick Soddy, seu trabalho é provável e provoca que você faça as perguntas corretas. Publicações, Bugfixes e Documentação atualizada Anunciou a suspensão do desenvolvimento ativo e adicionou referências a informações sobre nossos sistemas monetários (DollarEuro). Adicionado uma seção de links para outros projetos interessantes do sistema de comércio java. Estou investigando sobre como tornar a OJTS mais compatível com outros esforços do sistema comercial java. Projeto de Documentação do Sistema de Investimento e Negociação a ser encontrado no ITSdoc. org. Existe um novo wiki disponível no ITSdoc. org com foco na distribuição de conhecimento no domínio dos sistemas de investimento e comercialização. A idéia por trás do ITSdoc. org é ter uma plataforma de colaboração semelhante à wikipedia, ajudando a comunidade a compartilhar conhecimento. OpenJavaTradingSystem v0.13 lançado. Ontem eu publiquei a Versão 0.13 da biblioteca do OpenJavaTradingSystem. Entre os novos recursos estão: Recuperação de dados para ações, fundos e moedas da OnVista. Implementação de movimentação de moeda e conversões. As carteiras são implementadas e você pode trabalhar com Portfolios da mesma maneira que com itens de papel de segurança simples. Adicionado uma estrutura geral para a aplicação de algoritmos para as séries temporárias do mercado de ações. Alternou do shell interativo SISCScheme para ABCLCommonLisp mais seu editor chamado J. Adicionado um mecanismo geral de cache de dados para armazenar dados que já foram recuperados na web no sistema de arquivos. Além de mais algumas melhorias menores Se você estiver interessado nesta nova versão, você deve começar na seção quickstartscreenshot. O manual ainda não está atualizado, mas pode dar-lhe, no entanto, algumas informações de fundo valiosas se você quiser usar a biblioteca em seu projeto. A documentação deve ser atualizada em breve. Atualmente, não há muito desenvolvimento feito, porque estou atualizando meu conhecimento sobre redes bayesianas. Veja, por exemplo, a lista de livros no meu site. Dois projetos muito interessantes a esse respeito são WEKA e BNJ. Em breve continuarei o desenvolvimento e vou começar a integrar a primeira inteligência no sistema. Hoje eu coloquei o primeiro lançamento na seção de arquivos da área de download do sourceforge. Além disso, atualizei o manual para documentar o uso interativo do projeto através da camada SISC Scheme. Para o impaciente aqui é uma seção de quickstartscreenshot para você ir. D o c u m e n t a t i o n Documentos que descrevem os elementos internos do projeto. Java Data Objects e documentação da interface gtgtHTML gtgtPDF Documentação de uso gtgtHTML gtgtPDF Projeto de documentação do sistema de investimento e comércio gtgtITSdoc. org T echnology Blocos de construção de terceiros utilizados neste projeto HSQL Database Engine (licença: hsqldblic. txt) O HSQLDB é o mecanismo de banco de dados fornecido com o Projeto para que você possa imediatamente começar a usar o OJTS sem instalar um banco de dados de terceiros. Mas se você planeja usar outro banco de dados compatível com SQL92, então esta é uma opção de configuração. Castor (licença: A Licença Exolab) A Castor é uma estrutura de ligação de dados Open Source para o Javatm. É o caminho mais curto entre objetos Java, documentos XML e tabelas relacionais. A Castor fornece vínculo Java-to-XML, a persistência Java-to-SQL e muito mais. Castor Doclet (licença: GNU LGPL v2.1) Doclet Java para gerar mapeamento e arquivos DDL para Castor JDO e Castor XML. TestMaker (licença: Licença Open-Source TestMaker) No projeto TestMaker apenas a implementação dos protocolos, como HTTP ou HTTPS, são utilizados para coletar dados da web. JCookie (licença: GNU LGPL v2.1) A biblioteca jCookie é necessária para que as bibliotecas do TestMaker funcionem. Htmlparser (licença: GNU LGPL v2.1) A biblioteca htmlparser é usada para extrair os dados dos recursos da Web. ABCLCommonLisp (licença: GNU GPL v2) ABCL (Armed Bear Common Lisp) é usado para implementar o coração algorítmico do projeto na linguagem de programação comum ANSI Common Lisp. JFreeChart (licença: GNU LGPL v2.1) JFreeChart é usado para a visualização de dados financeiros como gráficos. JSci (licença: GNU LGPL v2.1) JSci - A science API para Java. Joda Time (licença: Licença OpenSource cultivada em casa) O Joda Time substitui as classes JDK Data e Time originais. L i n k s Links para outros projetos O grupo JavaTraders Google pode ser a melhor entrada para você descobrir outros sistemas e ferramentas de negociação baseados em Java. Termos e Condições de uso O código do projeto está licenciado nos termos da LGPL e toda a documentação que você encontra neste projeto está licenciada nos termos da FDL.
Комментариев нет:
Отправить комментарий