3

我即将进入设计商品交易应用程序的第一阶段。该应用程序的一个主要功能是获取和评估定价信息。这个市场的定价不是固定的。它通常是市场基准 +/- 溢价。例如:(A和B是市场基准)

  • 价格 = A + 1 美元
  • 价格 = A + .5(AB)

交易的最终价格是使用在约定时间内应用的定价公式计算的。例如; 最终价格可能是装载商品前一周和后一周的平均 A + 1 美元。

目前,交易者正在 Excel 中捕获此详细信息,这使他们能够灵活地设置所需的公式,但此信息从未进入我们的会计系统,并且电子表格未连接到市场基准的实时预测,使得价格预测成为手动和缓慢的任务。

我正在寻找关于我可以使用哪些工具/技术在应用程序中输入、存储和评估公式的输入。

我们将使用 SQL Server 或 Oracle 作为数据库,客户端平台尚未固定,但您可以假设 WinForms/WPF、ASP.NET 或 Java webapp。

我知道这是一个相当广泛的问题,但我们还远远不够,无法更具体地说明将使用哪些技术。

谢谢

4

7 回答 7

2

我敢打赌,您的用户喜欢将公式输入 Excel 的灵活性,所以我建议采用这样的方法:-

  1. 写一些东西,让他们使用他们实际将与关键字一起用于不同基本价格的运算符类型将公式输入到您的应用程序中。这可以作为字符串存储起来。
  2. 使用白名单方法验证这一点(可能相当棘手,也许您需要查找一些基于堆栈的解析算法)。您可能允许:+ - / * ( ) {numeric constants} {keywords for base prices}。
  3. 将这些公式翻译成您的数据库可以在 SELECT 列表中理解的内容。如果他们输入的公式与您在 SQL 中可以做的相似,这可能不会太难。关键字变成了列名,其他所有内容都可以不用管。

然后,您将能够通过插入特殊公式并在您的历史数据和/或预测上运行它来选择数据、在时间段内平均等。

第 2 步有一些技巧,但它会使其他一切变得简单(高效)。

于 2008-10-22T02:39:25.050 回答
1

您是否考虑过与 Excel 集成?这样,您就不必试图从他们的魔掌中撬开 Excel(商业用户喜欢Excel),他们可以使用他们多年来学到的所有技巧。您只需使用 VBA 在您的应用程序和 Excel 之间来回传输数据(或者现在他们告诉人们与 Excel 集成),您就可以开始使用了。

于 2008-10-22T11:15:26.383 回答
1

我有一个与汉克的命题相关的简单得可笑的解决方案。创建一个数据库并按照您的 Excel 表对其进行建模。导出 Excel 数据并将其导入数据库。在客户端计算机上创建 ODBC 连接器以指向数据库。在 Excel 中,您可以连接到数据源。这样,您的客户将不会遇到 UI 更改的问题。

于 2008-10-22T12:17:46.070 回答
0

有趣的场景。警告:此回复基于我对解决问题的一些想法,可能无法反映最佳实践。

我会尝试看看您是否可以将潜在的公式规则归结为更简单的结构。然后,这将允许您将规则组合在一起以创建复杂的公式。然后,您需要能够将规则存储在数据库中,这可以使用 DSL 或一些 XML 规则文件来完成。

听起来您当前的情况,excel中的公式,运行良好,但有一些小问题。您是否考虑过使用一些高级宏或 excel 自动化?您可能可以实现您的大部分目标,而您的客户不必离开 Excel。

祝你好运。

于 2008-10-22T01:55:07.997 回答
0

如果数据来自受信任的来源(大 if),您可以将数据库表达式存储在列中,然后动态创建 SELECT 语句来执行它。

于 2008-10-22T03:11:02.227 回答
0

您可以使用GiNaC等符号数学包来解释您输入到表格中的公式。

于 2008-10-22T03:15:49.377 回答
0

感谢您的回复。

用户自己想摆脱 Excel。他们正在与试图输入和更新数据的多个用户作斗争。我可能会调查 VSTO 为将小型 Excel 工作表嵌入到应用程序中提供了哪些选项。

我倾向于使用嵌入式“语言”来存储和评估公式。

使用简单的解析器将输入的公式转换为 SQL 可能是一个合理的想法,因为方程中的变量是时间序列向量而不是标量数据点,并且 SQL 方法应该更容易在所需时间段内计算结果。

谢谢

于 2008-10-23T02:25:05.470 回答