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

使用SOPT接口的时候,调用下面的语句
status = engine.main_engine.get_gateway(interface).td_api.contract_inited
status为True以后,调用get_all_accounts()函数,试了10次,有8次返回结果是[],只有2次正常,可以返回正确的账户信息,结果非常不稳定,请问是什么原因?

description

Member
avatar
加入于:
帖子: 4812
声望: 291

可以发起连接以后sleep更久或者在onRspQryTradingAccount函数进行打印排查

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

sleep 3秒也不行,onRspQryTradingAccount函数在哪里,如何使用呢?放在什么位置?在engine.get_all_accounts()之前还是之后?

-- 这个问题在CTP接口中并不发生,只发生在SOPT接口中。

Member
avatar
加入于:
帖子: 4812
声望: 291

onRspQryTradingAccount函数是sopt_gateway接收并向上层账户信息的函数

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

我使用:engine.main_engine.get_gateway('SOPT').SoptTdApi.onRspQryTradingAccount()打印时,报错:
AttributeError: 'SoptGateway' object has no attribute 'SoptTdApi'

换成下面的方法调用,
from vnpy_sopt.gateway.sopt_gateway import SoptTdApi
SoptTdApi.onRspQryTradingAccount(SoptGateway)
也报错了:TypeError: SoptTdApi.onRspQryTradingAccount() missing 4 required positional arguments: 'data', 'error', 'reqid', and 'last'

请问应当如何调用onRspQryTradingAccount函数?

Member
avatar
加入于:
帖子: 4812
声望: 291

不要调用,直接在接口文件的这个函数下打印

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

print了一下,如图所示,请问account的值为什么是[]?导致了报错。

description

Member
avatar
加入于:
帖子: 1510
声望: 109

因为登录初始化尚未完成,多sleep等待一会即可

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

我sleep(2)试试,比较奇怪的是,为什么CTP接口没有报错,仅是SOPT报错呢?

Member
avatar
加入于:
帖子: 1510
声望: 109

CTP应该同样会报错的,除非你是等待初始化完成后才运行的策略脚本

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

沪公网安备 31011502017034号

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