之前一直不太清楚task.daily和handle.data两个函数的区别,也发现有其他水友发帖表达了相似的困惑。今天详细研究了一下终于弄清楚了,和大家分享一下。一般来说日策略应该用日周期回测而分钟策略应该用分钟周期回测。而如果使用分钟周期回测用handle_data写成的日策略,将导致结果错误。因为在handle_data里面下单指令是根据回测周期而定的,也就是说用日周期回测就按日周期执行下单指令而用分钟周期回测就按分钟周期执行下单指令。所以如果弄混了日策略和分钟策略的回测周期,将导致回测结果错误。使用task.daily编写日策略则可以避免这个问题。如下是用task.daily改写的帮助文档里的通道突破策略。可以发现使用分钟周期回测能够得到和原策略(用handle_data写的)日周期回测一样的结果。所以建议水友使用task.daily编写日策略,避免回测周期不匹配导致的回测错误。

3条回复 添加回复
lcet

如果要对task.daily函数编写的策略按天回测,则将task.daily函数里的time_rule删掉即可。

2016-06-03 16:25:54
jd_638817995

time_rule=market_close(minute=0)设成这个以后策略就不交易啊,如果不写time_rule的话,分钟回测的结果跟日回测结果居然不一样,为什么???压根就没实现handle_data啊!为啥结果会不一样呢?

2016-06-06 11:19:20
jd_638817995

克隆你的策略也没有交易信号

2016-06-06 11:36:01
1
提交
Copyright © 2004-2017 京东JD.com 版权所有 | 投资有风险,购买需谨慎