跳转到内容

接收白标用户信息

reqUserInfo() 的结果通过 userInfo() 回调返回。

def userInfo(self, reqId, whiteBrandingId):
...

这个回调只包含两个字段:请求编号和白标 ID。

字段中文含义说明
reqId请求编号对应 reqUserInfo(reqId) 的请求编号
whiteBrandingId白标 ID用户关联的白标标识,普通账户可能为空字符串

如果 whiteBrandingId 是空字符串,不要直接当作接口错误。更合理的判断是:

if whiteBrandingId:
status = "HAS_WHITE_BRANDING_ID"
else:
status = "EMPTY_WHITE_BRANDING_ID"

真实白标 ID 可能属于业务标识,不建议直接出现在公开日志或用户可复制示例中。可以输出布尔值和长度:

def userInfo(self, reqId, whiteBrandingId):
safe_row = {
"reqId": reqId,
"whiteBrandingId_empty": whiteBrandingId == "",
"whiteBrandingId_length": len(whiteBrandingId or ""),
}

如果系统确实需要保存 whiteBrandingId,应把它当作业务配置数据处理,不要混入账户资产、订单和持仓日志。

CONNECTED=True
REQUEST_SENT=True
USER_INFO_CALLBACK_RECEIVED=True
USER_INFO_ROW_COUNT=1
ROWS=[{'reqId': 9401, 'whiteBrandingId_empty': True, 'whiteBrandingId_length': 0}]
WHITE_BRANDING_ID_EMPTY=True
WHITE_BRANDING_ID_LENGTH=0
INFO_CODES=2104,2106,2158
NON_INFO_ERROR_COUNT=0
IS_CONNECTED_AFTER_DISCONNECT=False

这个环境返回了 1 条 userInfo() 回调,白标 ID 为空字符串,说明请求链路正常。

不一定。普通账户没有关联白标实体时,也可能返回空字符串。应结合业务背景判断。

通常按一次请求返回一次结果。它不是持续订阅接口。

没有收到 userInfo() 回调怎么办?

Section titled “没有收到 userInfo() 回调怎么办?”

如果 nextValidId() 已收到、请求已发出、没有非信息类错误,可以把它按“用户没有可返回的白标信息”处理。不要把它和行情权限、账户资产权限混在一起排查。

不建议。whiteBrandingId 只说明白标关联,不等于账户类型、交易权限或资产权限。

IBKR Campus: TWS API Documentation