92 浏览
0

我现在订阅行情,最新一根k线的datetime变动就触发策略。但是当开盘发生跳空时,获取到最新一根k线的open是上一根k线的close,而不是跳空后的价格。现在我想获取跳空后的价格,应该怎么处理?

例如:8月20日MA601合约,13:30的k线在软件上显示的open是2399,但是我订阅行情获取的open是2397。现在我想确保我获取的open是2399,我应该如何处理?

emanresu 未选择答案 1天 前
0

订阅的是什么周期的K线,订阅行情获取的open是2397是啥意思

我看了一分钟的K线,11.29的收盘价是2397,13.30开盘价是2399,应该是没问题的

ringo 编辑评论 5小时 前

我就是订阅15min的k线,但是当13.30时,我打印klines.iloc[-1].open,打印的是2397而不是2399。
这是我当时打印的日志:
TqsdkEngine: 新k线产生, k line datetime:2025-08-20 13:30:00+08:00, now: 2025-08-20 13:30:01.065438, open: 2397.0

有一种情况是在13.30的时候,如果交易所的行情还没有过来,这个时候的K线生成了但是没有新的价格所以开盘价会用上一根的收盘价来代替,到后面新的行情来了就会更新纠正。所以当时的open打印出来是2397,现在去看这个K线的open应该更新为2399了

那如果出现这种情况,我有没有办法确保我当时获取的不是上一根的收盘价,而是实际的开盘价。因为我的策略可能会根据开盘价进行处理

可以获取quote看看最新行情的时间和上一次是否一样,如果一样的话就先不获取,等更新后在获取这个K的开盘价

可以这么做,当新kline生成之后去取close和新kline的成交量,只有当成交量不等于上一根kline的volume,才使用该根kline的close

如果一样则wait_update循环等待这根kline数据刷新,直到第一次不一样时才使用close

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