在看vnpy系统自带的策略代码时,遇到 2 个问题不太明白,特来求助一下。
- 技术指标的计算是基于ArrayManager()函数来的,那么同样都是求 atr,为什么不同的策略中,一个直接是 am.atr(),而另一个还要在前面加上 self. 呢?
在看vnpy系统自带的策略代码时,遇到 2 个问题不太明白,特来求助一下。
还有一个问题是,代码中都是将(bar)更新一下,然后传到主逻辑的时间周期内,那么为什么有的带着 self. , 而有的不带self. 呢?
而且有的代码中带着一句 am=self.am。 书中说 am=self.am ,是节省不必要的缓存,提高计算速度。 那么是不是可以在每个策略都写上一句am=self.am,这样运算速度不就都提高了吗
am = self.am的写法,是将am变量在on_bar函数内局部化,提高访问速度,这个算是Python代码速度优化的标准方案之一,代价就是多一行代码,用不用取决于策略作者了。