掘金社区
技术支持,你好!
海龟交易法(期货) https://www.myquant.cn/docs/python_strategyies/110 的代码第40行
使用history_n获取过去20日历史数据时,参数count为什么要赋值21呢?
注:count=context.n+1,其中context.n为20
评论: 3
-
因为回测时,用history_n取历史数据会把当天的数据取到(比如当前时间为2月19日的9点,history返回数据会包括2月19日的数据,现实情况下是取不到2月19日的数据)这样就引入了未来函数。所以要多取一天,用的时候去掉今天的数据。后面for i in range(1,len(data))就是从1开始索引的,不是从0开始。
-
@四两 即使去掉今天的数据,也不应该从1开始索引,因为今天的数据位于索引的最后位置。
另外,关于这个策略还有两个问题:- 代码第43、44行取得昨日收盘价时,使用了shift(-1)。简单测试了一下这样做就错位了,使用iloc[i-1]取得昨日值不香吗?
- 代码第84行,从context.data取值时参数count为101,大于前面subscribe中指定值为2的count,这是不是敲错了啊?
谢谢!
-
@skipper 反映的问题确实存在,会尽快修改