写了一个简单的程序,按理说程序应该是每隔一小时获取一次K线数据,然后在日志中显示出来;比如我在0点执行回测,应该依次是1点、2点、3点显示日志,可为什么我的回测结果中的日志时间不是整点呢?是哪里设置不对吗?
发明者量化-小小梦 是这样的, 您设置了 轮询 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线数据