如图,用1s的对齐k线代替分钟线实验,只判断k线是否变化,不判断tick是否变化,结果如下:
可以看到,对于1s的k线,在第1s的时候,is_changing函数才生效,一个解释是,前两个tick,天勤是一起打包发过来的。所以在第0s判断的时候 ,服务器会返回false。对于分钟k来说,更是如此。
===========================================================
2月18日更新:
就是因为k线比tick先到达的缘故。在第一根tick到达之后再判断k线的datetime是否更新是无效的。
lihan 编辑问题 2020年2月18日
在print()时间的代码中,前面一个时间是tick的时间,后一个时间是对齐K线的时间,可以看到,对齐K线的时间发生改变的时候is_changing()就触发了,这是正确的。
K线和tick更新数据的下发时间并不一定是同时的,服务器收到交易所下发的行情截面后,用两套系统分别合成tick和K线,它们相互不影响,所以它们的下发顺序是没有关系的
west 发表新评论 2020年2月17日
你是什么时候启动的策略?
8点36分08秒。我还过滤了所有datetime是9:00:00以前的tick,会是这个的缘故吗?如果k和tick的推送没有关系,然后k比tick先发出也会造成帖子里的现象。
新交易日开盘前一小时交易所会下发一条数据,其中包含下一交易日的涨跌停价等数据字段,我们服务器以这条数据作为切换交易日的标志,也就在此时生成新交易日的日线、第一根小时线、分钟线、秒线等。因此无法准确知道开盘,只能得到一个估计时间
问题是 0s的时候,这个函数并没有触发。如果我以1s的k做交易,那么每天我会损失开盘0s那根k线。回测的时候,这个函数0s是能够触发的。