跳转到内容

组与配置合并

早期 TWS API 文档会同时出现 Group 和 Profile。Group 更偏向按账户属性分配,例如净清算价值、可用权益、等数量;Profile 更偏向明确比例、百分比或股数配置。

TWS/IB Gateway 983+ 引入了“Use Account Groups with Allocation Methods”设置。开启后,Group 和 Profile 的行为会合并,API 客户端应把主要逻辑放在 Group 上。

场景行为
requestFA(Group)返回统一后的组/配置列表。
replaceFA(Group, xml)替换统一后的组配置。
requestFA(Profile)旧系统兼容项,可能返回不支持或错误,取决于 TWS 设置。
placeOrder() 指定旧 Profile 名称可能被当作 faGroup 使用。
faMethod 为空TWS 可使用组默认分配方法。
账户和持仓类接口传 Group 名在部分接口中也可接受旧 Profile 名称。
FA_GROUPS = 1
FA_ALIASES = 3
# 读取账户组。
app.requestFA(FA_GROUPS)
# 读取账户别名。
app.requestFA(FA_ALIASES)

除非维护旧系统,否则不要围绕 Profile 设计新功能。这样可以减少 TWS 版本差异带来的行为变化。

读取旧 Profile 配置
-> 核对每个账户、比例和方法
-> 在 TWS 中建立 Account Group
-> 用 Group 名称更新订单代码
-> 在模拟环境检查分配结果

迁移时不能只改字符串名称。Profile 和 Group 在分配语义、默认方法、账户顺序上都可能不同,必须通过小数量模拟订单确认。

普通模拟账户请求 faData=2 时同样会被拦截:

ERROR=reqId=-1;code=321;msg=FA data operations ignored for non FA customers.

这类账户无法判断 Profile 是否合并,只能确认账户没有 FA 数据访问权。