我即将进入设计商品交易应用程序的第一阶段。此应用程序的主要功能是捕获和评估定价信息。这个市场的定价不是固定的。它通常是一个市场基准+/-溢价。例如:(A和B是市场基准)
- 价格=A+1美元
- 价格=A+.5(A-B)
交易的最终价格是使用在约定时间内应用的定价公式计算的。例如最终价格可能是装载商品前一周和后一周的平均值A+1美元。
目前,交易员们正在Excel中捕捉这一细节,这使他们能够灵活地设置所需的公式,但这些信息从未进入我们的会计系统,而且电子表格与市场基准的实时预测无关,这使得价格预测成为一项手动且缓慢的任务。
我正在寻找关于我可以使用哪些工具/技术在应用程序中输入、存储和评估公式的输入
我们将使用SQL Server或Oracle作为数据库,客户端平台尚未修复,但您可以假设WinForms/WPF、ASP.NET或Java Web应用程序。
我知道这是一个相当广泛的问题,但我们还不够深入,无法更具体地说明将使用什么技术。
感谢
我敢打赌你的用户喜欢将公式输入Excel的灵活性,所以我建议这样一种方法:-
- 编写一些内容,允许他们使用运算符类型将公式输入到您的应用程序中,这些运算符实际上将与不同基本价格的关键字一起使用。这可以作为字符串存储起来
- 使用白名单方法验证这一点(可能相当棘手,可能需要查找一些基于堆栈的解析算法)。您可以允许:+-/*(){数字常量}{基本价格的关键字}
- 在SELECT列表中将这些公式转换为数据库可以理解的内容。如果他们输入的公式与SQL中的公式相似,那么这可能不会太难。关键字被转换成列名,其他的一切都可以被忽略
然后,您将能够通过插入特殊形式并在历史数据和/或预测上运行它来选择回数据、在时间段内进行平均等。
步骤2有一些技巧,但它会让其他一切都变得简单(高效)。
您是否考虑过与Excel集成?这样,您就不必试图将Excel从他们的魔掌中撬出来(业务用户ADOREExcel),他们就可以使用多年来学到的所有技巧。你只需使用VBA在你的应用程序和Excel之间来回传输数据(或者现在他们告诉人们要与Excel集成),你就可以很好地使用了。
我有一个与Hank的命题有关的简单得离谱的解决方案。创建一个数据库,并根据Excel表对其进行建模。导出Excel数据并将其导入数据库。在客户端计算机上创建ODBC连接器以指向数据库。在Excel中,您可以连接到数据源。这样,您的客户端就不会有UI更改的问题。
有趣的场景。警告:此回复基于我处理问题的一些想法,可能没有反映出最佳实践。
我想看看你是否可以把你潜在的公式规则归结为更简单的结构。这将允许您将规则组合在一起,以创建复杂的公式。然后,您需要能够将规则存储在数据库中,这可以使用DSL或某些XML规则文件来完成。
听起来你目前的情景,excel中的公式,运行得相当好,但有一些小问题。您是否考虑过使用一些高级宏或excel自动化?如果你的客户不必离开excel,你可能会实现大部分目标。
祝你好运。
如果数据来自可信来源(big If),您可以将数据库表达式存储在列中,然后动态创建SELECT语句来执行它。
您可以使用符号数学包(如GiNaC)来解释输入到表中的公式。
感谢您的回复。
用户自己也想摆脱Excel。他们正在与试图输入和更新数据的多个用户进行斗争。我可能会研究VSTO为将小型Excel表嵌入应用程序提供了哪些选项。
我倾向于使用嵌入的"语言"来存储和评估公式。
使用一个简单的解析器将输入的公式转换为SQL可能是一个合理的想法,因为方程中的变量是时间序列向量,而不是标量数据点,SQL方法应该更容易在所需的时间段内计算结果。
感谢