期货CTP接口与K线模块的对接(4)

Leona ·
更新时间:2024-11-15
· 856 次阅读

读取K线的流程

在示范程序中:
1.本机自用的K线,在内存中,是用字典“tdBars”记录的,这个字典的键,形如“SR005_m5”(即“合约代码_K线周期”),这个字典的值,是一个集合,其中每个元素是一个K线结构体。
2.以SR005的5分钟周期的K线为例,它在内存中是tdBars[“SR005_m5”]。程序第一次读这个字典时,它还没有“SR005_m5”这个键,程序会自动读文本记录,用此记录给tdBars[“SR005_m5”]赋值。此后,字典tdBars有了键“SR005_m5”,程序再想知道SR005的5分钟K线,就不读文本记录了,而直接读内存中的tdBars[“SR005_m5”],这比读文本快得多。

而对于行情服务来说是这样的:
1.行情服务的K线,在内存中,是用项目字典“mdBars”记录的,这个字典的键,形如“SR005_m5”(即“合约代码_K线周期”),这个字典的值,是K线结构体集合。
2.以SR005的5分钟周期的K线为例,它在内存中是mdBars[“SR005_m5”]。程序第一次读这个字典时,它还没有“SR005_m5”这个键,程序会自动读文本记录,用此记录给mdBars[“SR005_m5”]赋值。此后,字典mdBars有了键“SR005_m5”,程序再想知道SR005的5分钟K线,就不读文本记录了,而直接读内存中的mdBars[“SR005_m5”],这比读文本快得多。

而历史回测是这样的:
1.历史回测所用K线,在内存中,是用字典“testBars”记录的,这个字典的键,形如“SR005_m5_20200102-20200114”(即“合约代码_K线周期_开始日期-结束日期”),也可以没有日期部分而形如“SR005_m5”(即“合约代码_K线周期”),这个字典的值,是K线结构体集合。
2.以SR005从2020年1月2日到2020年1月14日的5分钟周期的K线为例,它在内存中是testBars[“SR005_m5_20200102-20200114”]。程序第一次读这个字典时,它还没有“SR005_m5_20200102-20200114”这个键,程序会自动读文本记录,用此记录给testBars[“SR005_m5_20200102-20200114”]赋值。此后,字典testBars有了键“SR005_m5_20200102-20200114”,程序再想知道SR005从2020年1月2日到2020年1月14日的5分钟周期的K线,就不读文本记录了,而直接读内存中的testBars[“SR005_m5_20200102-20200114”],这比读文本快得多。

由此可见,读K线文本记录是一次性的,读过一次就不再读,以后直接读内存。若要在程序运行过程中修改K线,那不仅要改文本记录,还要改内存中相应的字典,才能保证程序读到的始终是最新的K线数据。
在这里插入图片描述

关于tick

tick与K线走的是同样的流程,主要有以下区别:

1.记录格式不同
在示范程序中,记录K线的格式是:
日期,时间,开盘价,最高价,最低价,收盘价,成交量,持仓量
而记录tick的格式是:
日期,时间,卖一价,卖一量,买一价,买一量,最新价,成交量,持仓量

2.判断是否开启新K线时,tick不用考虑,每个tick都是新的

3.绘图模式不同
K线是用我们熟悉的“蜡烛图”形式绘制的,而tick是用连线绘制的。


作者:grayhat2005



ctp 模块

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章