VeighNa量化社区
你的开源社区量化交易平台
Member
avatar
加入于:
帖子: 41
声望: 0

写CTA策略经常要用到self.pos,但我在CtaTemplate里除了在init函数下见到有self.pos = 0,就没有再找到self.pos,所以:
(1)我想知道这个值到底是如何在运行过程中得到更新的呢?
(2)既然self.pos的值只会在收到Trade回报后才会更新,那么在其他函数下的self.pos岂不是都是不能保证是最新值?
烦请大神解答一下,非常感谢。

Administrator
avatar
加入于:
帖子: 4550
声望: 325
  1. 准确来说,是要满足两个条件才是准确的:外部没有活动委托、在on_trade下收到最新的成交回报,但对于分钟级别的CTA策略来说,这在99.9%情况下就是on_bar中获取self.pos时的状态
  2. 在CtaEngine的process_trade_event中可以看到,位于vnpy/app/cta_strategy/engine.py中
Member
avatar
加入于:
帖子: 41
声望: 0

用Python的交易员 wrote:

  1. 准确来说,是要满足两个条件才是准确的:外部没有活动委托、在on_trade下收到最新的成交回报,但对于分钟级别的CTA策略来说,这在99.9%情况下就是on_bar中获取self.pos时的状态
  2. 在CtaEngine的process_trade_event中可以看到,位于vnpy/app/cta_strategy/engine.py中
    收到,多谢!!
Member
avatar
加入于:
帖子: 6
声望: 1

其实持仓信息动态更新到CTA那边,然后做一个对比可以确保得到持仓信息是否有问题咯。

Member
avatar
加入于:
帖子: 5078
声望: 306

self.pos是策略持仓不是底层持仓

Member
avatar
加入于:
帖子: 9
声望: 0

xiaohe wrote:

self.pos是策略持仓不是底层持仓

也就是说,如果是我手动下的单,是不会体现到策略上的这个self.pos中的,理解的意思对么?

Administrator
avatar
加入于:
帖子: 4550
声望: 325

对的,只有这个策略自己下的委托,成交后带来的持仓,才会体现在self.pos里

© 2015-2022 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】