回测kline序列中,第一个数据是正确的,之后的数据全都不准确,换个合约也还是一样。用这样的数据来计算出的策略肯定回测数据有很大的问题,望尽快修正这个bug
!!!!但是在web图表中渲染出的k线是准确的
klines = api.get_kline_serial("SHFE.ni2106", 60, 100) print(klines.iloc[-1])
第一个数据:
datetime 1617346740000000000.0
id 89250.0
open 123480.0
high 123520.0
low 123410.0
close 123470.0
volume 2431.0
open_oi 144798.0
close_oi 144090.0
symbol SHFE.ni2106
duration 60
Name: 99, dtype: object
之后的数据中open、hight、low、close的数据都一样,open_oi和close_oi的值也一样
datetime 1617670800000000000.0
id 89251.0
open 123460.0
high 123460.0
low 123460.0
close 123460.0
volume 0.0
open_oi 144090.0
close_oi 144090.0
symbol SHFE.ni2106
duration 60
diff NaN
diff.board None
diff.color None
dea NaN
dea.board None
dea.color None
Name: 99, dtype: object
datetime 1617670860000000000.0
id 89252.0
open 125060.0
high 125060.0
low 125060.0
close 125060.0
volume 0.0
open_oi 146974.0
close_oi 146974.0
symbol SHFE.ni2106
duration 60
diff NaN
diff.board None
diff.color None
dea NaN
dea.board None
dea.color None
Name: 99, dtype: object
web图表中渲染出的k线
这个是由于在回测时kline只会在开始和结束时各刷新一次,如果你取的是最后一根kline,那么他永远是刚刚刷新时的数据,而在kline刚刚刷新时他的高开低收均是上一根的收盘价,详细回测规则参见
https://doc.shinnytech.com/tqsdk/latest/usage/backtest.html#id7