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

需求:在CTA策略下获取全部持仓,包括手动开仓、策略开仓的所有品种持仓信息。

脚本策略下可以用【all_position = engine.get_all_positions(use_df = False)】获取取部持仓。

但是在CTA策略下还不知道用什么方法,看论坛上说可以用main_engine.get_all_positions(),但是在实际操作时发现main_engine下找不到get_all_positions()这个函数。

description

只有在OmsEngine下可以找到get_all_positions()函数,不过调用时还是获取不到持仓。具体怎么使用OmsEngine.get_all_positions(self)或者其它的办法才能获取全部持仓信息呢?

希望有老师可以帮忙解答一下,感谢!!

Member
avatar
加入于:
帖子: 1742
声望: 132

这个函数是动态绑定到main_engine上的,你可以直接运行调用

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

MTF wrote:

这个函数是动态绑定到main_engine上的,你可以直接运行调用


就是在官方CTA模板下没看到main_engine这个函数,需要怎么导入呢?

description

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

虽然不知道在CTA策略下怎样正确的导入main_engine模块,以便使用main_engine.get_all_positions(),但是在CTA策略下获取账户全部品种持仓信息的功能,通过一个笨办法解决了。

【解决方案】
第一步:在脚本策略下用engine.get_all_positions(use_df = False)获取全部持仓信息,把需要的信息存入json文件;
第二步:在CTA策略下读取上一步存入的json文件就可以了。

虽然这个方法能用,但是相对复杂,欢迎大神给出CTA策略下正确导入main_engine模块,并通过main_engine.get-----获取持仓、账户余额的解决方案。

Member
avatar
加入于:
帖子: 5133
声望: 308

参考一下template里面get_pricetick函数的写法吧

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

xiaohe wrote:

参考一下template里面get_pricetick函数的写法吧

感谢回复!

我试了一下,在init函数下面通过cta_engine导入main_engine模块,然后就可以正常使用了。

init函数下添加的代码
self.main_engine: MainEngine = cta_engine.main_engine

***例子***
获取全部持仓
position = self.main_engine.get_all_positions()

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

沪公网安备 31011502017034号

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