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

vnpy1.9.2-LTS

在模拟交易时,在初始化策略,即CtaEngine.initStrategy(...)的时候,有一步是self.subscribeMarketData(strategy) ,其中有一步是contract = self.mainEngine.getContract(strategy.vtSymbol),然后我又去mainEngine.getContract(....)中找,发现里面是直接return (self.contractDict[vtSymbol]),
那么问题来了,我在之前的操作中并没有发现哪一步向DataEngine.contractDict传入过合约信息,那为什么可以直接取?
在QQ群里问了后,有人说找connect("CTP")的时候已经订阅,于是我去CtpGateway.py那三个类中找,在CtpTdApi.onRspQryInstrument中找到了,那么应该是连接CTP在确认结算信息的回调函数中自动触发了self.reqQryInstrument({}, self.reqID)!!!!问题来了,可是这里查询传入的是空字典啊,有啥用啊
谢谢群主或者其他大神指教

Administrator
avatar
加入于:
帖子: 4502
声望: 321

这里是向CTP服务器发起的查询请求,传入的空字典是参数(空字典代表查询所有合约),CTP服务器收到请求后,会通过onRspQryInstrument异步返回查询结果

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

谢谢群主,原来空字典是查询所有合约的意思

Member
加入于:
帖子: 29
声望: 0

用Python的交易员 wrote:

这里是向CTP服务器发起的查询请求,传入的空字典是参数(空字典代表查询所有合约),CTP服务器收到请求后,会通过onRspQryInstrument异步返回查询结果

那么假如是本地跑回测的话,还可以调用getContract函数吗?

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

合约是连接到CTP然后从回调数据中挑选临时生成一个文件保存到当前工作目录的,如果文件没被删除,应该那个文件还保存着

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

沪公网安备 31011502017034号

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