498 浏览
0

回测条件下,运行以下代码

quote_k=api.get_kline_serial(‘CZCE.OI909′, 60, data_length=7000)

if api.is_changing(quote_k.iloc[-1],’datetime’):

plist=[]

for w in range(0,len(quote_k)):
pe=(float(quote_k.iloc[w].high)+float(quote_k.iloc[w].low))/2
plist.append(pe)

上述代码为取倒数7000根1分钟k线,然后取k线最大值和最小值的平均值做计算。

2019-06-19 21:00:00时刻下,plist列表得到的倒数八行数据为   3473.5;3472.5;3472.0;3470.75;3470.25;3470.0;3468.5;3468.5

2019-06-19 21:01:00时刻下,plist列表得到的倒数九行数据为  3473.5;3472.5;3472.0;3470.75;3470.25;3470.0;3468.5;3467.5;3465.0

问题是:为什么21:00:00时刻下,1分钟k线最终数据是3468.5。但是在21:01:00时刻下,1分钟k线在21:00:00时刻是3467.5?

二者为什么不一致呢?

李思恒 已回答的问题 2024年7月26日

请问实盘是否也会有这种问题?如果取分钟k线,前一分钟K线与当前时刻K线在时间轴上数据不一致?

是因为回测模式下K线生产规则同实盘不一致吗?
回测模式下,比如2019-06-19 21:01:00时刻,对quote_k=api.get_kline_serial()
应取quote_k.iloc[-2]为2019-06-19 21:00:00时刻下的值?
quote_k.iloc[-1]虽然有数据,但是此数据并非2019-06-19 21:01:00时刻真实数据?

0

规则不同,实盘的情况下-1这一根推进的情况其实和tick一样,K在没有走完之前除了open都会一直变化,至于推进规则不同参考这个:
https://doc.shinnytech.com/tqsdk/latest/reference/tqsdk.backtest.html

李思恒 已回答的问题 2024年7月26日