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

发现一个问题,main_engine里的contracts列表是按照vt_symbol来索引的,像'i2105_DCE'这样。
但是当发送委托的时候,order.vt_symbol后面会多一个/CTP,像这样:
i2105_DCE/CTP
由于格式不对,导致后面对contracts列表的更新都是没有正确执行的。
这个问题应该怎么修正?

Member
avatar
加入于:
帖子: 4684
声望: 285

能看下截图吗?OrderData里没存vt_symbol,存的是symbol呀

Member
加入于:
帖子: 116
声望: 2

Traceback (most recent call last):
File "C:\vnstudio\lib\threading.py", line 917, in _bootstrap_inner
self.run()
File "C:\vnstudio\lib\threading.py", line 865, in run
self._target(*self._args, **self._kwargs)
File "C:\vnstudio\lib\site-packages\vnpy\event\engine.py", line 60, in _run
self._process(event)
File "C:\vnstudio\lib\site-packages\vnpy\event\engine.py", line 73, in _process
[handler(event) for handler in self._handlers[event.type]]
File "C:\vnstudio\lib\site-packages\vnpy\event\engine.py", line 73, in <listcomp>
[handler(event) for handler in self._handlers[event.type]]
File "C:\vnstudio\lib\site-packages\vnpy\app\cta_strategy\engine_test.py", line 167, in process_order_event
self.offset_converter.update_order(order)
File "C:\vnstudio\lib\site-packages\vnpy\trader\converter.py", line 42, in update_order
if not self.is_convert_required(order.vt_symbol):
File "C:\vnstudio\lib\site-packages\vnpy\trader\converter.py", line 83, in is_convert_required
contract = self.main_engine.get_contract(vt_symbol)
File "C:\vnstudio\lib\site-packages\vnpy\trader\engine.py", line 450, in get_contract
print(f'contracts:{self.contracts[vt_symbol]}')
KeyError: 'i2105_DCE/CTP'

我在get_contract里面加了一行
print(f'contracts:{self.contracts[vt_symbol]}')
就会报上面的错误。
或者在converter的update_order后加上
print(order.vt_symbol)
在发送委托的时候会输出
i2105_DCE/CTP

Member
avatar
加入于:
帖子: 4684
声望: 285

我照着你的代码做了,连接后加上sleep就可以输出了,而且没有接口信息在后面,建议检查一下别的修改的地方

description

description

description

Member
加入于:
帖子: 116
声望: 2

这是因为你没有下单。如果只是输出get_contract里的vt_symbol的话是正常的格式,但如果在下单的时候执行的话就会变成带/ctp的格式。
我发现order.data定义的就是这个格式,所以如果在converter的update_order后加上
print(order.vt_symbol)
在发送委托的时候就会输出
i2105_DCE/CTP
这会造成更新委托状态出现问题

Member
加入于:
帖子: 116
声望: 2

我发现新版的vnpy已经改了orderdata的结构,我之前用的老版本。
我再用新版本测试一下

Member
avatar
加入于:
帖子: 4684
声望: 285

我下了单也没有vt_symbol接口名称,看了你在别的帖子的留言,是你自己根据社区帖子对vt_symbol进行了修改吧

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

沪公网安备 31011502017034号

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