我有一个在表中包含股票值的数据库,例如:
id - unique id for this entry
stockId - ticker symbol of the stock
value - price of the stock
timestamp - timestamp of that price
我想根据我的数据库条目为 24 小时、7 天和 1 个月的时间范围创建单独的数组,每个数组包含股票图表的数据点。 对于某些 stockId,我每小时只有几个数据点,而对于其他的,可能有数百或数千个。
我的问题: 什么是将可能的许多数据点“聚合”为几个的好算法 - 例如,对于 24 小时图表,我希望每小时最多有 10 个数据点。我如何处理异常高/低的值?
股票图表的常用方法是什么?
感谢阅读!
最佳答案
一些选项:(假设每小时 10 个点,即大约每 6 分钟一个点)
对于每 6 分钟的时间段,选择最接近该时间段中心的数据点
对于每 6 分钟的时间段,取该时间段内点的平均值
对于一个小时的时间段,找出每 4 分钟时间段的最大值和最小值,并在这些相应的集合中选择 5 个最大值和 5 个最小值(4 分钟是随机选择的)。
我最初想选择 5 个最小值点和 5 个最大值点,使得每个最大值点至少相隔 8 分钟,最小值点也类似。
这里的 8 分钟是为了让我们不会把所有的分数都叠加起来。为什么是8分钟?在均匀分布的情况下,
60/5 = 12 分钟
,所以稍微偏离一下,我们就有 8 分钟。但是,就实现而言,4 分钟的方法会简单得多,并且应该会产生类似的结果。
您必须看看哪一个能给您带来最理想的结果。最后一个可能会很好地指示整个时期的变化,而第二个可能有一个更稳定的图表。第一个可能更不稳定。
关于从许多数据库条目中聚合股票图表数据点的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19272416/