在CtaEngine里有很多这样的语句:
contract = self.main_engine.get_contract(stop_order.vt_symbol)
可是我在main_engine里面没有找到get_contract这个函数呀,
请问这个函数从哪里来的?谢谢。
在CtaEngine里有很多这样的语句:
contract = self.main_engine.get_contract(stop_order.vt_symbol)
可是我在main_engine里面没有找到get_contract这个函数呀,
请问这个函数从哪里来的?谢谢。
在oms引擎里,oms引擎是辅助主引擎的
方里明 wrote:
在oms引擎里,oms引擎是辅助主引擎的
多谢,的确在oms中有这个函数,
可是oms是如何和cta引擎发生关系的呢?
我看到cta引擎所在的文件都没有import oms啊。
那么它为什么可以使用osm引擎的函数?
oms引擎在初始化的时候,通过注入的方式在main_engine上添加了一系列查询函数的功能,具体看OmsEngine的init函数
OmsEngine初始化时,MainEngine主引擎和EventEngine作为参数传入进来了,在init中调用了self.add_function(),在add_function中将OmsEngine中的函数复制给了主引擎。
整体流程是:1、交易接口中返回的行情Tick、订单回报、合约查询等信息,会通过事件驱动引擎EventEngine保存到队列中;2、事件引擎会固定频率处理队列中的事件,这些事件的处理函数是事先已经注册好了的,所以在处理的时候,只需要调用注册函数去处理对应的事件即可;3、注册函数处理时,会将相应的信息保存到OmsEngine的字典中;4、主引擎通过OmsEngine复制的函数来获取字典中保存的信息。
我的微信是849322520,欢迎微信交流
piano wrote:
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)返回为空。
MainEngine这个类init_engines的时候就有调用self.add_engine(OmsEngine)