从许多数据库条目中聚合股票图表数据点的算法

标签 algorithm charts stock datapoint

我有一个在表中包含股票值的数据库,例如:

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/

相关文章:

c# - MySql.数据.MySqlClient.MySqlException : 'Unknown column ' Cantidad' in 'field list' '

php - 更改 WooCommerce 中的添加到购物车库存错误通知

javascript - 是否有更有效的算法来展平数组?

algorithm - 将整数列表分为两组

javascript - 如何在 Shield UI JavaScript 折线图中添加自定义标签

ios - SciChart IOs 光标和工具提示修饰符

c - 查询以放入简单的 C++ 程序以使用来自雅虎的 send()、recv() 检索股票/期权信息

algorithm - 给定一个数字,找到与原始数字具有完全相同数字集的下一个更大的数字

c - 将 4 个 uint16_t 封装在一个 uint64_t 中的快速模 12 算法

javascript - D3.js 饼图转换