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

账户有资金,客户端是可以下单的,但是API可以登录拿到行情,能取消订单,但是下单就会报错
description

Member
avatar
加入于:
帖子: 4774
声望: 289

vnpy_tap版本是?

Member
avatar
加入于:
帖子: 1493
声望: 106

看你的底部【资金】和【持仓】中信息都是空的,建议查下是否登录成功了。

以及联系期货公司确认-12053这个错误号是什么意思

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

vnpy-tap 9.3.9
整体我的解决流程是这样:
1、12053错误是说的 子账户input error。实际上我的账户没有子账户,我保留了空值就出错了。后面我是把登录信息的子账户改成‘1’,然后这个错误就消失了,后来测试只要非空都能用。
2、可以正常下单之后,但每次下单都会弹出order_id有一个decode的错误,所以我把tap_gateway里面send_order的function,把order_id = byte_id.decode()改为order_id = byte_id.decode(errors='ignore'),现在就是下单也没有报错了。

具体错误:
packages\vnpy_tap\gateway\tap_gateway.py", line 724, in send_order
order_id = byte_id.decode()
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x96 in position 3: invalid start byte

我打印出来是这个东西decode有报错,b'#1#s\x02#UQcDibLqb0+Eg4FCmJg9UQ=='
但我刚刚又试了几次,并不是每一次都会报错,而且报错并不影响最终order_id的正确性。

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

order_id = byte_id.decode(errors='ignore')
update一下,这个是不能改的,改了之后会导致订单号解析错误。

b'#1#\xd7\x01#+1vO0Zo9JUiaSq0Zbfhegg=='
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd7 in position 3: invalid continuation byte
这个应该就是加了子账户之后,不能解析‘#’字符串的问题。

Member
avatar
加入于:
帖子: 1493
声望: 106

感谢反馈!

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

最终的解决:
1、子账号填写任何非空字符串。
2、对TAP_GATEWAY里面的send_order函数改了两处:
order_id = byte_id.decode() -> order_id = byte_id.decode(errors='ignore')
if self.client_id in order_id:
order_id = order_id.replace(f"#{self.client_id}#", "")的下一行增加:
order_id = order_id[order_id.find('#')+1:] #解决记录的订单号比实际订单号多了’#‘的问题

看看后续能不能update这个问题,不清楚是个别经纪商问题还是什么。

Member
avatar
加入于:
帖子: 4774
声望: 289

子账号不填写委托就会报-12053吗?
decode报错的问题,可以试着把order_id = byte_id.decode()这句放在这段

        if self.client_id in order_id:
            order_id = order_id.replace(f"#{self.client_id}#", "")

下面再试试看

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

子账号不填就会提示12053,官方文档就是clientType不对。

换到下面还是不行。
b'#1#\xd7\x01#+1vO0Zo9JUiaSq0Zbfhegg=='

这个的问题并不是b'#1#''是后面跟着的 '\'这个不合符规则。但由于实际下单后'#'后面的'+1vO0Zo9JUiaSq0Zbfhegg=='才是实际的下单号,所以就不用管前面的,就直接找到#后面进行decode就没错了。

Member
avatar
加入于:
帖子: 4774
声望: 289

可以参考这个PR再试试看https://github.com/vnpy/vnpy_tap/pull/16

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

沪公网安备 31011502017034号

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