写CTA策略经常要用到self.pos,但我在CtaTemplate里除了在init函数下见到有self.pos = 0,就没有再找到self.pos,所以:
(1)我想知道这个值到底是如何在运行过程中得到更新的呢?
(2)既然self.pos的值只会在收到Trade回报后才会更新,那么在其他函数下的self.pos岂不是都是不能保证是最新值?
烦请大神解答一下,非常感谢。
写CTA策略经常要用到self.pos,但我在CtaTemplate里除了在init函数下见到有self.pos = 0,就没有再找到self.pos,所以:
(1)我想知道这个值到底是如何在运行过程中得到更新的呢?
(2)既然self.pos的值只会在收到Trade回报后才会更新,那么在其他函数下的self.pos岂不是都是不能保证是最新值?
烦请大神解答一下,非常感谢。
用Python的交易员 wrote:
- 准确来说,是要满足两个条件才是准确的:外部没有活动委托、在on_trade下收到最新的成交回报,但对于分钟级别的CTA策略来说,这在99.9%情况下就是on_bar中获取self.pos时的状态
- 在CtaEngine的process_trade_event中可以看到,位于vnpy/app/cta_strategy/engine.py中
收到,多谢!!
其实持仓信息动态更新到CTA那边,然后做一个对比可以确保得到持仓信息是否有问题咯。
self.pos是策略持仓不是底层持仓
对的,只有这个策略自己下的委托,成交后带来的持仓,才会体现在self.pos里