我现在在用易盛的模拟盘,易盛的人跟我说需要做一个测试才能连入实盘。
具体是把ClientID的值改为我现在的模拟账号。
我在C:\vnstudio\Lib\site-packages\vnpy\api\tap\vntap\include\iTapTradeAPIDataType.h里找到了这个ClientID:
但问题是这个ClientID是定义在struct里面的,我并不知道怎么改变它的值。
请问它的值可以在哪个文件里更改呢?
我现在在用易盛的模拟盘,易盛的人跟我说需要做一个测试才能连入实盘。
具体是把ClientID的值改为我现在的模拟账号。
我在C:\vnstudio\Lib\site-packages\vnpy\api\tap\vntap\include\iTapTradeAPIDataType.h里找到了这个ClientID:
但问题是这个ClientID是定义在struct里面的,我并不知道怎么改变它的值。
请问它的值可以在哪个文件里更改呢?
直接在VN Trader图形界面上,连接易盛接口的时候对话框填上你的用户号就行,不用修改任何代码
不是,用户账号修改的是AccountNo的字段:
我现在需要修改的是ClientID,这个字段是用户自由填写的,并不会对交易造成影响。需要修改的原因是CME填报tag的要求。
这个在哪里可以改呢?
哦哦,那么在vnpy/gateway/tap/tap_gateway里,找到TapAPINewOrder对象的创建调用代码,然后把这个字段的赋值加上去就行
嗯,我加上了一段 order_req.ClientID = "#APICS106#":
但是这样改过以后就没法下单了:
状态变成了提交中。
是不是还有什么其他位置也需要相应更改代码?
在cmd中用python -m vnstation来启动VN Station,做了下单操作后,看下cmd中是否有报错输出
下单本身没有报错,但是在下单之前进入vn station的时候报错:
我觉得这个应该跟不能下单关系不大,因为我即使把order_req.ClientID = "#APICS106#"删掉了也会报这个错。
我觉得应该是self.api.InsertOrder(order_req)这个函数的问题,我看了看这个函数应该是继承ITapTradeAPINotify这个类的。但是我不知道这个类是在哪个文件里定义的。应该在vntap那个文件夹下,但是这个文件夹里都是c++代码啊。
我在send_order这个函数里加了一个print(self.api.InsertOrder(order_req)):
cmd里输出了(-12046, 0, ''):
按照我的理解最后一个应该是order_id,这个不应该是空的,所以我觉得是Insertorder这个函数出问题了。
于是我在iTapTradeAPI.h下面找到了这个函数:
问题是我不太懂c++,这里是不是要做什么修改呢?
这个确实应该是委托在API层就失败了,没能发出去,但是易盛API内部的逻辑我们也无法看到,只能联系易盛官方的服务团队了
我试了试改动iTapTradeAPIDataType.h
没有任何变化。
然后我直接把tap/vnap/include这个文件夹删了,也没有报错,也没有任何变化。
这是为什么?
.h这些内容,是编译pyd接口时所用的C++源代码,编译后就用不着了,所以删不删没影响
如果我想修改C++源代码重新编译应该怎么办?