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

在CtaEngine里有很多这样的语句:
contract = self.main_engine.get_contract(stop_order.vt_symbol)

可是我在main_engine里面没有找到get_contract这个函数呀,

请问这个函数从哪里来的?谢谢。

Member
avatar
加入于:
帖子: 173
声望: 26

在oms引擎里,oms引擎是辅助主引擎的

Member
avatar
加入于:
帖子: 142
声望: 4

方里明 wrote:

在oms引擎里,oms引擎是辅助主引擎的

多谢,的确在oms中有这个函数,
可是oms是如何和cta引擎发生关系的呢?

我看到cta引擎所在的文件都没有import oms啊。
那么它为什么可以使用osm引擎的函数?

Administrator
avatar
加入于:
帖子: 4492
声望: 311

oms引擎在初始化的时候,通过注入的方式在main_engine上添加了一系列查询函数的功能,具体看OmsEngine的init函数

Member
avatar
加入于:
帖子: 21
声望: 2

description
OmsEngine初始化时,MainEngine主引擎和EventEngine作为参数传入进来了,在init中调用了self.add_function(),在add_function中将OmsEngine中的函数复制给了主引擎。
整体流程是:1、交易接口中返回的行情Tick、订单回报、合约查询等信息,会通过事件驱动引擎EventEngine保存到队列中;2、事件引擎会固定频率处理队列中的事件,这些事件的处理函数是事先已经注册好了的,所以在处理的时候,只需要调用注册函数去处理对应的事件即可;3、注册函数处理时,会将相应的信息保存到OmsEngine的字典中;4、主引擎通过OmsEngine复制的函数来获取字典中保存的信息。

我的微信是849322520,欢迎微信交流

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

piano wrote:

description
OmsEngine初始化时,MainEngine主引擎和EventEngine作为参数传入进来了,在init中调用了self.add_function(),在add_function中将OmsEngine中的函数复制给了主引擎。
整体流程是:1、交易接口中返回的行情Tick、订单回报、合约查询等信息,会通过事件驱动引擎EventEngine保存到队列中;2、事件引擎会固定频率处理队列中的事件,这些事件的处理函数是事先已经注册好了的,所以在处理的时候,只需要调用注册函数去处理对应的事件即可;3、注册函数处理时,会将相应的信息保存到OmsEngine的字典中;4、主引擎通过OmsEngine复制的函数来获取字典中保存的信息。

我的微信是849322520,欢迎微信交流
3.0中,ManagerEngine.download_bar_data()中有contract = self.main_engine.get_contract(vt_symbol),查了下,只有omsEngine有get_contract函数,所以ManagerEngine定义所在的engine.py是不是少了from vnpy.trader.engine import OmsEngine呢?
而且我调试的时候确实contract = self.main_engine.get_contract(vt_symbol)返回为空。

Member
avatar
加入于:
帖子: 3469
声望: 228

MainEngine这个类init_engines的时候就有调用self.add_engine(OmsEngine)

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

沪公网安备 31011502017034号

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