0

I have a database with stock values in a table, for example:

id - unique id for this entry
stockId - ticker symbol of the stock 
value - price of the stock
timestamp - timestamp of that price

I would like to create separate arrays for a timeframe of 24 hour, 7 days and 1 month from my database entries, each array containing datapoints for a stock chart. For some stockIds, I have just a few data points per hour, for others it could be hundreds or thousands.

My question: What is a good algorithm to "aggregate" the possibly many datapoints into a few - for example, for the 24 hours chart I would like to have at a maximum 10 datapoints per hour. How do I handle exceptionally high / low values?

What is the common approach in regards to stock charts?

Thank you for reading!

4

1 回答 1

1

一些选项:(假设每小时 10 个点,即大约每 6 分钟一个)

  • 对于每 6 分钟的时间段,选择最接近时间段中心的数据点

  • 对于每 6 分钟的时间段,取该时间段内的点的平均值

  • 对于一个小时的时间段,找出每 4 分钟时间段的最大值和最小值,并在各自的集合中选择 5 个最大值和 5 个最小值(4 分钟是随机选择的)。

    我最初想选择 5 个最小点和 5 个最大点,这样每个最大点至少相隔 8 分钟,最小点也是如此。

    这里的 8 分钟是为了让我们没有把所有的分数都叠加在一起。为什么是 8 分钟?在均匀分布中,60/5 = 12 minutes, 所以稍微远离它给我们 8 分钟。

    但是,就实施而言,4 分钟的方法会简单得多,并且应该给出类似的结果。

你必须看看哪一个能给你最理想的结果。最后一个可能会很好地表明整个时期的变化,而第二个可能有一个更稳定的图表。第一个可能有点不稳定。

于 2013-10-09T13:42:46.703 回答