跳转到内容

模型组合与 API

模型组合用于把客户资产放入一个或多个预先创建的组合模型。它常见于顾问账户,但它不是 FA 分配方法本身。

TWS API 可以读取已有模型的账户、持仓、盈亏数据,也可以把订单指定到某个模型。API 不能创建模型组合,模型创建和再平衡需要在 TWS 或账户管理流程中完成。

接口或字段用途
reqAccountUpdatesMulti(reqId, account, modelCode, ledgerAndNLV)按账户和模型订阅账户更新。
reqPositionsMulti(reqId, account, modelCode)按账户和模型订阅持仓。
reqPnL(reqId, account, modelCode)按账户和模型订阅总体盈亏。
reqPnLSingle(reqId, account, modelCode, conId)按账户、模型和合约订阅单标的盈亏。
Order.modelCode把订单发送到指定模型。
概念主要用途放在哪里
FA 组多账户分配下单order.faGroup
分配方法决定订单怎么拆order.faMethod
模型组合模型维度统计或模型订单modelCode / order.modelCode

不要把 modelCode 当成 faGroup 使用。它们服务的接口不同,错误混用会导致查不到数据或订单不符合预期。

# 空字符串表示不限定模型。
app.reqPositionsMulti(
3001,
account,
""
)
# 如果账户已经在 TWS 中创建了模型组合,可以传入模型代码。
app.reqPositionsMulti(
3002,
account,
"Technology"
)
order = Order()
order.action = "BUY"
order.orderType = "LMT"
order.totalQuantity = 100
order.lmtPrice = 10.00
# 模型必须已经在 TWS 中存在。
order.modelCode = "Technology"

模型组合订单和 FA 组订单可以出现在相近业务里,但不要在不了解账户结构时同时设置多个分配维度。先用 openOrder() 确认 TWS 接收到的字段,再观察实际分配。

普通模拟账户可以验证空 modelCode 的账户和持仓接口,但不能验证 FA 模型组合特性。遇到没有模型数据、没有 FA XML 或 321 权限错误时,应按账户权限问题处理,而不是修改 Socket 连接代码。