有趣的股票报价数据场景
Posted
技术标签:
【中文标题】有趣的股票报价数据场景【英文标题】:Interesting Stock Tick Data Scenario 【发布时间】:2012-06-26 15:54:16 【问题描述】:好吧,今天这个问题一直困扰着我。
问题:我目前通过多播以极高的速率接收股票报价数据。我已经解析了这些数据,并以以下形式接收它。
-StockID:Int-64 -TimeStamp:从纪元开始的微秒 -价格:国际 -数量:整数
每秒解析数百个这样的数据包。我试图通过将这些数据打包到由 stockID (key == stockID)(value == array of [timestamp, price, quantity] 元素) 散列的字典/哈希表中来减少存储端的计算。
我还希望每个字典代表 5 分钟间隔内的时间戳。当传入数据的时间戳超过 5 分钟时间间隔时,我希望这些新数据进入代表下一个时间间隔的新字典。此外,一个特殊的键将在键 -1 处散列,告诉该字典每天属于哪个特定的 5 分钟间隔(因此,如果您在上午 12:32 收到一些东西,它应该散列到键 -1 处值为 7 的字典中,因为这表示该特定日期从上午 12:30 到上午 12:35 的时间间隔)。一旦时间过去,过期的dict就可以发送到dataWrapper。
现在,您可能正在想出一些想法。但这里有一个很大的限制。 进来的时间戳不一定严格增加;但是,如果在一个间隔结束后等待大约 10 秒,那么可以安全地假设每个传入的数据都属于当前间隔。
我做所有这些复杂事情的原因是为了减少我的应用程序存储端的计算。通过上面的设置,我的存储端线程可以简单地遍历字典中的所有键、值对并将它们存储在存储系统上的相同位置,而无需重新打开文件、重新分配组或更改目录。
祝你好运!顺便说一句,我将不胜感激任何答案。 :)
如果你能用 python 给我发送一些东西(这就是我正在做的项目),但我可以完全理解 Java、C++、Ruby 或 php。
总结
我正在尝试将股票数据放入代表每个字典 5 分钟间隔的字典中。数据附带的时间戳决定了它应该放入哪个特定的字典。这可能相对容易,只是时间戳在输入时不会严格增加,因此一旦 5 分钟过去,字典就不能立即发送到数据包装器时间戳,因为不能保证在 10 秒内不再接收任何数据,在此之后可以将其发送到包装器。
我只想要任何可以帮助我安排此任务的想法、算法或部分实现。我们如何在时间戳(用于数据)和实际时间(10 秒缓冲区)内切换当前使用的字典。
澄清编辑
5 分钟窗口应该是数据驱动的(基于时间戳),但是 10 秒超时似乎是时钟时间。
【问题讨论】:
你的问题到底是什么?能简明扼要地表达吗? 是的,我会将其添加为编辑。 您的具体问题是什么?我假设您不希望任何人免费为您完成工作。 具体问题是如何处理将数据放入表示 5 分钟间隔的字典的调度。 滑动窗口,这种情况下的术语。窗口中的每个插槽都代表您的时间间隔,窗口大小应该是您想要保留的插槽数,随着窗口的滑动,第一个会下降并被存档。 【参考方案1】:也许我错过了什么......
您似乎希望将数据保存在 5 分钟的存储桶中,但您无法确定存储桶翻转后最长 10 秒内是否拥有所有数据。
这意味着对于每个仪器,您需要保留当前存储桶和前一个存储桶。当它超过 5 分钟边界 10 秒时,您可以发布/写出旧存储桶。
【讨论】:
对不起,我的意思是 10 秒。只是改变了它,实现也有 5 分钟桶本身就是实际的字典,但为了便于解释,这应该没关系。以上是关于有趣的股票报价数据场景的主要内容,如果未能解决你的问题,请参考以下文章