模拟回测的问题

Author: running666, Created: 2018-05-15 23:38:39, Updated:

写了一个简单的程序,按理说程序应该是每隔一小时获取一次K线数据,然后在日志中显示出来;比如我在0点执行回测,应该依次是1点、2点、3点显示日志,可为什么我的回测结果中的日志时间不是整点呢?是哪里设置不对吗? img img img


More

小小梦 是这样的, 您设置了 轮询 Sleep 间隔 一定时间 程序执行一圈循环, 但是 除此之外, GetRecords 这些 函数调用都是 有时间开销的,包括 其他 函数调用,虽然 可能时间过程很小,但是 实际运行中 是不可忽略的,运行一定时间后 输出日志的时间 就会 推移了。

小小梦 不一定 是这个 问题, 这个要结合 策略 代码 分析下。

running666 我的理解是这样, 由于区间内1分钟k线数据缺失比较严重,因此底层k线选为1分钟的话不能成功模拟生成tick数据,所以不会生成回测日志; 区间内大于1分钟周期的k线缺失率没有那么严重,因此可以很好的模拟生成tick数据,所以会有回测日志产生。 不知道这样的理解对不对

running666 测试代码是这一段 和一开始发的是一样的 def main(): while True: kList = exchange.GetRecords(PERIOD_H1) Log(kList[-1]) Sleep(3600000)

小小梦 这个 要看下 您的测试代码了。

running666 好的 谢谢 还有一个问题 还是上面的策略代码 我回测时间选择2017-11-01 00:00:00 - 2017-11-16 00:00:00 我进行了两次实验 一次的底层k线选择1分钟 另一次的底层k线选择15分钟 为什么1分钟的情况下日志没有任何输出 而15分钟的情况下日志数据从11月1日到11月16日每隔1小时的数据都有呢? https://dn-filebox.qbox.me/3f2017ddb9b336d278c065e3021b8c3e4b1ee191.png https://dn-filebox.qbox.me/b59599c9e3b43890fa6da5dad449d41c1d890ec1.png https://dn-filebox.qbox.me/6f0b8d0018ba6d54debc7941f2f3605de73d5043.png https://dn-filebox.qbox.me/7e1bfa94df0e980f1a9d5835fcaec30966d77b86.png

小小梦 这个没法保证, 因为 您 去请求数据的时候是有延迟的 , 这个必定有误差时间, 不太可能做到 完全100% 在那个时刻。

running666 明白了 谢谢。那有没有办法可以让我的程序都在整点执行呢,比如在1点、2点、3点的整点获取k线数据