574 浏览
0

代码为:

klines = api.get_kline_serial([‘DCE.b2401’, ‘DCE.m2401’, ‘DCE.y2401’,  period = 5 * 60,  length = 30)

if api.is_changing(klines.iloc[-1], “datetime”):

打印klines中的数据

打印出来的结果:

在14:55的时候,结果正确:

datetime                   duration symbol    symbol1         symbol2 close close1 close2

2023-11-23 14:25:00 5.0 DCE.b2401 DCE.m2401 DCE.y2401 4471.0 3951.0 8226.0
2023-11-23 14:30:00 5.0 DCE.b2401 DCE.m2401 DCE.y2401 4474.0 3953.0 8228.0
2023-11-23 14:35:00 5.0 DCE.b2401 DCE.m2401 DCE.y2401 4471.0 3949.0 8230.0
2023-11-23 14:40:00 5.0 DCE.b2401 DCE.m2401 DCE.y2401 4468.0 3947.0 8228.0
2023-11-23 14:45:00 5.0 DCE.b2401 DCE.m2401 DCE.y2401 4474.0 3950.0 8228.0
2023-11-23 14:50:00 5.0 DCE.b2401 DCE.m2401 DCE.y2401 4483.0 3957.0 8238.0
2023-11-23 14:55:00 5.0 DCE.b2401 DCE.m2401 DCE.y2401 4482.0 3957.0 8238.0

在14:45的时候的数据为,这个最后两行是重复的,除14:55外,结果都是最后两行重复:

datetime                   duration symbol    symbol1         symbol2 close close1 close2

2023-11-23 13:30:00 15.0 DCE.b2401 DCE.m2401 DCE.y2401 4475.0 3953.0 8232.0
2023-11-23 13:45:00 15.0 DCE.b2401 DCE.m2401 DCE.y2401 4481.0 3961.0 8218.0
2023-11-23 14:00:00 15.0 DCE.b2401 DCE.m2401 DCE.y2401 4482.0 3960.0 8236.0
2023-11-23 14:15:00 15.0 DCE.b2401 DCE.m2401 DCE.y2401 4471.0 3951.0 8226.0
2023-11-23 14:30:00 15.0 DCE.b2401 DCE.m2401 DCE.y2401 4468.0 3947.0 8228.0
2023-11-23 14:45:00 15.0 DCE.b2401 DCE.m2401 DCE.y2401 4468.0 3947.0 8228.0

pacsicd 发表新评论 2023年11月25日

那要规避这个问题,就只能将最后一根K线忽略掉,对吧?我理解最后一行的数据是随着每个tick都会改变的,对吧?

0

我估计这个重复是,刚好生产K的时候打印的。因为我们的K是没有跳空的,新的一根的open=上一根的close,你看起来就跟重复了一样。新的一根刚生成的时候只有open,所以他高开低收一样,都是open。因此新的一根的close=新的一根的open=上一根的close

李思恒 已回答的问题 2023年11月24日