更新显示组
updateDisplayGroup(reqId, contractInfo) 可以把已订阅的 TWS UI 显示组切换到指定合约。它常用于“程序选中合约后,让 TWS 图表或报价窗口也切过去”。
# 265598 是 AAPL 的 conId,SMART 是路由/交易所。app.updateDisplayGroup(98602, "265598@SMART")调用前必须先用同一个 reqId 订阅显示组事件,否则 TWS 不知道要更新哪个显示组。
| 参数 | 类型 | 说明 |
|---|---|---|
reqId | 整数 | 订阅请求编号,来自 subscribeToGroupEvents(reqId, groupId)。 |
contractInfo | 字符串 | 合约信息,常见格式为 conId@exchange。 |
contractInfo 格式
Section titled “contractInfo 格式”| 格式 | 示例 | 说明 |
|---|---|---|
conId@exchange | 265598@SMART | 最常见。股票、ETF 等可使用合约 ID 加路由。 |
conId@exchange | [其它合约 conId]@SMART | 切换到其它合约时,先用合约详情接口查到对应 conId。 |
这里不能直接写 AAPL。TWS 需要的是能唯一定位合约的 conId,通常先通过 reqContractDetails() 查询得到。
示例流程输出
Section titled “示例流程输出”GROUPS_RAW=4|1|2|3|5|6|7FIRST_GROUP=4SUBSCRIBE_CALLBACK_SEEN=TrueUPDATE_REQUESTED=TrueDISPLAY_GROUP_UPDATE=reqId=98602;contractInfo=265598@SMARTNON_INFO_ERROR_COUNT=0这表示程序先查询显示组,再订阅第一个显示组,最后把它切到 AAPL。
- 它改变的是 TWS UI 显示,不会提交订单。
- 它不是行情订阅;需要价格数据仍然要调用行情接口。
contractInfo需要真实conId,不要把股票代码当成合约 ID。- 如果用户正在手工查看其他标的,程序更新显示组会改变他看到的 TWS 界面。