7.31K 浏览
0
print("启动...",__version__)
api = TqApi(TqAccount("快期模拟", "xxxx", "xxxx"))
k=api.get_kline_serial(symbols[i], 60)
r= symbol + "#" + k.iloc[-1]["id"].astype(str) + "#" + str(
    datetime.datetime.fromtimestamp(k.iloc[-1]["datetime"] / 1e9)) + "#" + k.iloc[-1][
         "open"].astype(str) + "#" + k.iloc[-1]["high"].astype(str) + "#" + k.iloc[-1][
         "low"].astype(str) + "#" + k.iloc[-1]["close"].astype(str) + "#" + k.iloc[-1][
         "volume"].astype(str) + "#" + k.iloc[-1]["open_oi"].astype(str) + "#" + k.iloc[-1][
         "close_oi"].astype(str)
print(r)

启动… 1.2.1

CFFEX.IF1912#36865.0#2019-12-05 13:25:00#3867.2#3867.2#3867.2#3867.2#0.0#77476.0#77476.0

以上是打印结果

版本:1.2.1, 为什么实时K线数据中 open,high,low,close 的数据是完全一样的. 我换了simnow账户还是一样

要怎么解决? 谢谢

west 已回答的问题 2019年12月5日
0

K线刚生成瞬间,这时候还没有新行情,这根K线各个数据相等是正常现象。如果你要取新K线刚生成时的K线高开低收,可以获取其倒数第二根K线数据(即刚结束的那一根;但当新数据随着新K线同时推送到客户端时,就没有获取到新数据)。另外,你没使用wait_update()更新行情数据,如果有新数据了仍不能更新到内存中。建议使用前先翻看文档,tqsdk使用K线的参考示例:https://doc.shinnytech.com/tqsdk/latest/demo/tutorial/t30.html

west 编辑评论 2019年12月5日

谢谢. 我有使用
while api.wait_update()
if api.is_changing(k.iloc[-1], “datetime”):
上面没有发出来

请问: 倒数第2根是否就是最新可用的? 有多大的时间延迟呢? 只差一个tick的时间距离吗?

倒数第二根算是历史数据,倒数第一根才是最新的并在不断更新的K线;如果倒数第一根是刚生成时,在这个时刻,可能并没有行情更新,最后一根K线各个价格是上一根的收盘价,此时也可以把倒数第二根算作最后一根(因为你一定想取这个时候K线的高开低收的话)。行情更新的多少这个不能确定

谢谢, 谢谢

0

当最新的一根K线生成时,它的初始数据均为上跟k线的close(收盘价)

Greg Liu 发表新评论 2019年12月5日

谢谢, 那是否有办法解决这个问题?