本文原创,如果转载请注明来源
该问题最终分成三篇文章予以最终解决,相关文章链接如下:
从tick数据中提取周期K线数据 —- 1)尝试与问题
从tick数据中提取周期k线数据 — 2)继续改进
从tick数据中提取周期k线数据 — 3)终极解决
从目前的程序运行结果来看,仍然有问题,即出现一个11:31的数据条目,而实际上对应通达信当中,只有11:30和13:01,对比发现,实际上通达信当中的11:30的数据是目前程序所得结果中11:30和11:31两条数据整合出来的。
当然上述实例是针对1min数据来说的,对于其他周期的情况类似。
最终解决方法如下:
需要注意:
replacement_rules = {
datetime.strptime(’09:25:00′, ‘%H:%M:%S’).time(): datetime.strptime(’09:30:01′, ‘%H:%M:%S’).time(),
datetime.strptime(’09:30:00′, ‘%H:%M:%S’).time(): datetime.strptime(’09:30:02′, ‘%H:%M:%S’).time(),
datetime.strptime(’11:30:00′, ‘%H:%M:%S’).time(): datetime.strptime(’11:29:58′, ‘%H:%M:%S’).time(),
datetime.strptime(’15:00:00′, ‘%H:%M:%S’).time(): datetime.strptime(’14:59:58′, ‘%H:%M:%S’).time()
}
这几行代码的意思是:将其中的这几个时间进行替换,分别前挪后移一点点,从而躲开正好的时间分界点。
目前看效果跟通达信软件的效果基本一致。而且不惧任何时间周期。