5.05K 浏览
0
QUOTES_SYMBOL_RB = 'KQ.i@SHFE.rb'
QUOTES_SYMBOL_I = 'KQ.i@DCE.i'
QUOTES_SYMBOL_J = 'KQ.i@DCE.j'

DUR_SEC = 30

while api.wait_update():
    if api.is_changing(klines.iloc[-1], "datetime"):
        print(klines.iloc[-2])

这个时候 klines.iloc[-2]才是最新的bar,而klines.iloc[-1]是最新的tick数据,这个文档还有示例都没有提示。
这个时候如果使用klines这个dataframe就会有点问题,只能使用klines[:-2]

west 已回答的问题 2020年4月2日

只能使用klines[:-1]

0

在iloc[-1]这根K线结束的时候这条数据被推到了iloc[-2],这时从这个时间点作为起始时间的新K线被生成 并作为新的iloc[-1]

west 发表新评论 2020年4月2日

嗯嗯,我理解,感谢解答,这块示例程序或者文档能备注一下就好了

嗯呢,好的,我们这边之后优化一下文档

0

K线是包含从它的起始时间到 起始时间+周期 这个结束时间点之间的tick数据,我们的K线的datetime是它的起始时间,klines.iloc[-1]是当前未结束的最后一根K线,iloc[-2]是已经结束了的

west 已回答的问题 2020年4月2日
0

get_kline_serial 的机制决定的,网站有详细的文档,当时讲的模棱两可。

经过测试,大概可以这么理解,比如,你要取5分钟的K线,

在第4.99999分钟的时候,更新kline,kline.iloc[-1]就是你想要的数据。

立马,在第5.00001分钟的时候,立马又更新了一次kline数据,这时kilne.iloc[-1]是下一个周线最开始的数据了,因为刚刚开始,只有kline.open.iloc[-1]是有效。这个时候,要取上一个周线的kline,自然得用kline.iloc[-2]

JIMMY HUNAG 已回答的问题 2020年4月2日