【发布时间】:2011-06-01 17:28:09
【问题描述】:
这更像是一个架构问题,而不是一个特定的代码问题,因为我在如何继续这个项目时遇到了一个主要障碍。
例如,我正在构建一个财务扫描软件,用于根据特定标准筛选选股。例如,如果在 8000 只股票中,其今天的收盘价高于 SMA 100,而 10 天前的收盘价低于 SMA 100,则将此股票代码返回给我。
但是,请注意,在上述示例中,SMA(简单移动平均线)是使用最近 100 天的数据计算得出的,但我们可以将 100 天更改为另一个值,例如 105 或 56 - 可以做任何事。
在我的数据库中,我有一个名为 EODData 的表定义,其中包含几列,下面是定义;
EODData
sSymbol nvarchar(6)
mOpen money
mClose money
mHigh money
mLow money
Date datetime
该表将保存美国证券交易所 3 年的日终数据,因此大约有 6,264,000 行,对于 MS SQL 2008 R2 没有问题。
现在,我目前正在使用实体框架从我的数据库中检索数据,但是运行或创建我的过滤器的最佳方法是什么,因为每次扫描时必须为每个符号或基础股票代码计算 SMA执行,因为 100 天变量可以更改。
我应该将实体对象转换为数据集以进行内存过滤等吗???
我没有经常使用 DataSets 或 DataTables,所以我正在寻找指针。
请注意,SMA 只是过滤器之一,我还有另一种算法可以计算 EMA(指数移动平均线,这是一个更复杂的公式)和 MACD(移动平均线收敛散度)。
有什么意见吗?
【问题讨论】:
-
“内存过滤等”是什么意思,为什么需要数据集?除非必要,否则我不建议转换它们。 EF 确实支持许多过滤和聚合功能。
-
嗨,从我读过的关于 Dataset 的内容来看,它允许在执行例如 DataBind 之前进行内存排序。当然,我想只使用实体对象,但我无法找到一种方法来使用 SMA 和其他必须由我的算法即时计算的值,我使用 TA-Lib 作为我的算法顺便说一句。跨度>
-
那么,您的意思是基于 UI 交互在 UI/绑定级别上进行过滤/排序?在这种情况下,每个 UI 平台都提供了绑定源组件来帮助解决此问题。例如,WinForms 中的
BindingSource和 ASP.NET 中的ObjectDataSource(和其他)。通常,您会发现控件甚至会为您执行此操作 - 例如,大多数数据网格都支持排序。
标签: c# entity-framework-4 datatable strongly-typed-dataset