暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

如何用沪深北三大交易所快照行情合成股票/基金的分钟 K ?

918
快照行情数据提供了某一特定时间点上市场状态的“切片”或“快照”,包含了该时间点内的最高价、最低价、成交量等关键信息,是投资者快速了解市场动态的重要工具。通过将快照行情数据合成1分钟 K 线,投资者可以更准确地捕捉市场短期内的价格波动趋势。
以上交所、深交所、北交所三大交易所为例,不同交易所的股票和基金等资产的交易规则有所差异,因此不同交易所基于快照行情合成不同资产1分钟 K 线的计算方法也不尽相同。DolphinDB 针对沪深北交易所的股票和基金快照行情数据做了统一处理,开发了一套基于历史和实时快照行情数据合成沪深北交易所股票和基金1分钟 K 线的方案。点击阅读原文获取完整源码,大家也可以在本方案的基础上自行修改源码,高效完成定制化项目开发。

快照行情合成 K 线的规则

基于历史/实时快照行情数据合成 K 线的过程中,有以下几种情况值得注意:

最高价和最低价的处理




因为快照行情是非等时间间隔的数据切片,所以会出现如下情况:
  • 当日最高价(HighPrice)在当前计算窗口内发生变化,但是当前计算窗口内的所有最新价(LastPrice)并不包含发生在当前计算窗口内的当日最高价。

最高价计算规则说明
  • 当日最低价(LowPrice)在当前计算窗口内发生变化,但是当前计算窗口内的所有最新价(LastPrice)并不包含发生在当前计算窗口内的当日最低价。

最低价计算规则说明

成交量、成交额和成交笔数的处理


快照行情中的成交量、成交金额和成交笔数都是日累计求和值,所以按照窗口为1分钟、步长为1分钟的滚动窗口计算前,需要先求出两笔相邻快照的增量。

快照行情中的日累计成交量、日累计成交额和成日累计交笔数

开盘以后没有成交


部分成交不活跃的股票和基金,09:15:00 开始交易后一直没有成交,但是快照行情会正常推送。

开盘没有成交的股票或基金的快照行情

盘中计算窗口内没有成交


部分成交不活跃的股票和基金,会出现盘中某些计算窗口内完全没有成交,但是快照行情会正常推送。

盘中计算窗口内没有成交的快照行情

以上情况的处理规则均已包含在 DolphinDB 提供的解决方案中。


基于实时快照行情数据合成 K 线

在 DolphinDB 中基于实时快照行情数据合成 K 线的流程图如下图所示:

实时行情数据可以通过 DolphinDB 行情插件、消息中间件插件或各种语言的 API 接入数据库。

基于实时快照行情数据合成 K 线的过程中共涉及3个流处理引擎与3张流数据表

  • 流数据表1原始快照行情表,用于接收实时快照行情,并将增量数据及时推送给流处理引擎1。
  • 流处理引擎1是 DolphinDB 的响应式状态引擎 ReactiveStateEngine,主要功能是针对输入数据做滑动窗口处理,即对每一条输入引擎的数据按照指定的计算逻辑处理,实时完成原始行情的加工

  • 流数据表2用于接收引擎1处理的结果数据,即对原始快照行情加工后的数据,并发布至流处理引擎2。

  • 流处理引擎2是 DolphinDB 的日级时间序列聚合引擎 DailyTimeSeriesEngine,主要功能是基于加工过的快照行情数据做步长和窗口为1分钟的滚动窗口计算

  • 流处理引擎3同样使用了DolphinDB 的响应式状态引擎 ReactiveStateEngine用于填充处理缺失的行情。正常情况下,流处理引擎2的输出是每个股票或基金每分钟都有一条数据,但是特殊情况下,例如非常不活跃的股票或基金可能会在某一分钟内不存在行情快照数据,此时流处理引擎2统一用0进行填充。为了符合 K 线的计算规则,比如计算窗口缺失快照行情的 K 线,OpenPrice, HighPrice, LowPrice, ClosePrice 用前一根 K 线的 ClosePrice 填充,流处理引擎3就是在处理这类异常情况。

  • 流数据表3用于接收流处理引擎3最终的输出,即1分钟的 K 线数据。它可以被外部应用订阅,如 Python, C++, Java, C# 等。

注意:

  • 在注册流处理引擎时,由于从流处理引擎2到流处理引擎3用到了引擎级联的功能,所以需要先定义流处理引擎3,然后定义流处理引擎2的时候,才可以指定其输出为流处理引擎3的输入。

  • 流数据表中的数据需要存入分区表才能满足永久保存的需求,将流数据表中实时增加的数据存入分区表的详细代码可参考阅读原文

同时,DolphinDB 提供了便捷的可视化数据面板配置,基于本方案教程合成的 K 线数据配置数据面板效果如下:

实时计算性能测试


可以看到,DolphinDB 在大流量的实时流计算性能上表现优异,可以达到微秒级别。基于2.20GHz 主频的 CPU 实时计算沪深全市场股票和基金的1分钟 K 线,平均单票单次响应计算的时延为 500 微秒

基于历史快照行情合成 K 线

与基于实时快照行情数据合成 K 线类似,在创建数据库和分区表、导入 csv 测试数据后,同样需要对原始行情快照数据进行处理、针对处理后的快照行情进行1分钟窗口和1分钟步长的聚合计算、以及填充缺失的快照行情计算窗口。同时,用户只需对代码进行封装后运行,即可通过并行计算高效合成分钟 K 线。

批量并行计算性能测试


测试证明,DolphinDB 在海量数据的批计算性能上同样表现优异。基于16个 CPU 核心完成1天沪深全市场24,285,866 行原始快照行情的降频 K 线计算只需4.7秒,输出1分钟 K 线数据量为 1,555,440 行。

在此方案基础上,用户亦可使用一套代码实现流批一体 K 线合成,以满足产研一体化需求。用户只需根据教程中基于实时快照行情数据合成 K 线的部分,全速回放全量历史数据,然后将回放所得的 K 线计算结果存入分区表中,即可实现基于历史快照行情合成 K 线。实盘实时计算,则按前文所述,接入实时行情数据即可。

点击阅读原文,可获取测试数据及完整脚本。实践过程中若遇到资源不足,或计算结果与所属计算规则不符等情况,请及时添加小助手(dolphindb1)反馈~

Explore More



扫描二维码,添加 DolphinDB 小助手

点击阅读原文,获取 K 线计算完整方案

文章转载自DolphinDB智臾科技,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论