3.86K 浏览
0

最近实盘时遇到了分钟k在上午开盘时跳过9:00:00这条k线的问题。

是否是由于早上重启服务器之后diff中没有缓存夜盘数据导致api.is_changing()函数失效?

===============================================

更新今天早上的截图,前一个是当前tick的时间戳,后一个是当前k的datetime,注意中间少了开盘时的9:00:00

api.wait_update()放在开头,用于盘后保存数据,接下来就是调用

if api.is_changing(klines.iloc[-1], “datetime”) 判断k线是否更新了

这个判断应该是第一个tick到达的时候就执行为True

lihan 更改状态以发布 2020年2月13日
0

是怎么跳过的,可以截图发出来看一下吗,另外你的代码中更新方式可以贴出来一下吗,有可能wait_update()没有得到及时调用?

is_changing()函数只根据最新下发的diff数据来判断,如果有新K线生成,这个新的diff中如果有is_changing()中判断的字段,那么会返回True。

lihan 发表新评论 2020年2月13日

已更新问题

图中那个时间是如何输出的呢?是否有在判断tick有更新之后才输出的K线?另外,是用的哪一个合约呢?

额…是判断了tick更新之后判断的….这样写实盘也不行吗?rb2005和2010,向2005对齐。 每次先判断tick是否更新,再判断k是否更新,然后把两者的时间戳打印出来

判断的是哪一个的tick,很有可能是刚开盘那时tick并没有更新,因此if下的print语句没有触发

好吧。我改成每分钟59秒算作分钟close,规避一下这个临界问题。

您正在查看1个答案中的1个,单击此处查看所有答案。