Pergunta

Estou prestes a entrar o 1º fases de concepção de um comércio de commodities aplicação. Uma das principais funções desta aplicação é a captura e avaliação de informações sobre preços. Preços neste mercado não é fixo. Geralmente é uma referência no mercado +/- um prêmio. Por exemplo: (A e B são referenciais de mercado)

  • Preço = A + $ 1
  • preço = A + 0,5 (A-B)

O preço final da transação é calculado usando a fórmula de preços aplicado sobre um prazo acordado. Por exemplo; O preço final pode ser a média de A + $ 1 ao longo da semana anterior e na semana posterior ao carregamento da mercadoria.

Actualmente, os comerciantes estão capturando esse detalhe no Excel que lhes permite a flexibilidade para configurar as fórmulas necessárias, mas esta informação não torna-lo em nossos sistemas de contabilidade e as planilhas não estão conectados a previsões automáticas dos referenciais de mercado fazendo a previsão de preços uma tarefa manual e lento.

Eu estou olhando para a entrada, como o que ferramentas / técnicas posso usar para entrar, armazenar e avaliar fórmulas em uma aplicação.

Nós estaremos usando SQL Server ou Oracle como banco de dados e a plataforma cliente ainda não é fixo, mas você pode assumir WinForms / WPF, ASP.NET ou uma aplicação web Java.

Eu sei que esta é uma pergunta muito ampla, mas não estamos longe o suficiente para ser mais específico sobre o que tecnologias serão usadas.

Graças

Foi útil?

Solução

Eu aposto que seus usuários como a flexibilidade de inserir as fórmulas em Excel, então eu sugiro uma abordagem como esta: -

  1. Escreva algo que lhes permitam inserir fórmulas em seu aplicativo usando o tipo de operadores que eles realmente irão usar com palavras-chave para os diferentes preços base. Isto pode apenas ser armazenado como uma string.
  2. Validar isso usando uma abordagem de lista branca (pode ser bastante complicado, talvez você precisa olhar para cima alguns algoritmos de análise baseados em pilha). Você pode permitir que:. + - / * () {constantes numéricas} {palavras-chave para os preços de base}
  3. Traduzir estas fórmulas em algo que seu banco de dados pode compreender na lista SELECT. Se as fórmulas que entram são semelhantes ao que você pode fazer em SQL Isto pode não ser muito difícil. As palavras-chave são transformados em nomes de coluna e tudo o mais pode ser deixado sozinho.

Em seguida, você será capaz de selecionar de volta os dados, a média ao longo dos períodos de tempo, etc ligando o formual especial e executá-lo sobre seus dados e / ou previsões históricos.

Passo 2 tem alguns truques para isso, mas faria tudo mais fácil (e eficiente).

Outras dicas

Você considerou a integração com o Excel? Dessa forma, você não tem que tentar erguer Excel fora de suas garras (usuários de negócios ADORE Excel), e começam a usar todos os truques que aprenderam ao longo dos anos. Você só bombear a parte de trás de dados e para trás entre seu aplicativo e Excel usando VBA (ou no entanto eles dizer às pessoas para integrar com o Excel estes dias) e você está praticamente pronto para ir.

Eu tenho uma solução ridiculamente simples relacionada com a proposição "de Hank. Criar um banco de dados e modelá-lo depois de suas tabelas do Excel. Exportar os dados do Excel e importá-lo para o seu banco de dados. Criar conectores ODBC nas máquinas cliente para apontar para o banco de dados. No Excel, você pode se conectar às fontes de dados. Desta forma, seus clientes não terá problemas com mudanças de interface do usuário.

cenário interessante. AVISO:. Esta resposta é baseado em algumas idéias que tive para abordar o problema e podem não refletir as melhores práticas

Gostaria de tentar ver se você pode se resumem suas regras fórmula potenciais em construções mais simples. Este seria, então permitem que você compor suas regras em conjunto para criar fórmulas complexas. Você, então, precisa ser capaz de armazenar as regras no banco de dados que pode ser feito usando uma conexão DSL ou algum arquivo de regras XML.

Parece que seu cenário atual, a fórmula de em excel, está funcionando razoavelmente bem, mas tem alguns soluços. Você já pensou em usar algumas macros avançados ou automação excel? Você provavelmente poderia atingir a maioria de seus objetivos sem os seus clientes nunca ter de deixar excel.

Boa sorte.

Se os dados é de uma fonte confiável (grande se) você pode armazenar expressões de banco de dados em uma coluna e, em seguida, criar uma instrução SELECT na hora de executá-lo.

Você pode usar um pacote de matemática simbólica, como GiNaC a fim de interpretar as fórmulas que você entrar no mesas.

Obrigado pelas respostas.

Os próprios usuários querem ficar longe de Excel. Eles estão lutando com múltiplos usuários que tenta entrar e atualizar dados. Eu poderia investigar quais as opções VSTO dá para a incorporação de pequenas folhas de Excel em aplicações.

Eu estou inclinado a usar uma 'linguagem' incorporado para armazenar e avaliar as fórmulas.

Usando um analisador simples para transformar fórmulas entraram em SQL é provavelmente uma idéia razoável quanto as variáveis ??nas equações são vetores de séries temporais não pontos de dados escalares e a abordagem SQL deve torná-lo mais fácil de calcular os resultados ao longo dos períodos de tempo necessários.

Graças

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top