请求组事件订阅
subscribeToGroupEvents(reqId, groupId) 用来订阅一个 TWS UI 显示组。订阅成功后,合约变化会从 displayGroupUpdated() 回调返回。
def subscribe_first_group(app, groups: str) -> int | None: # groups 来自 displayGroupList(),例如 "4|1|2|3|5|6|7"。 group_id = parse_first_group(groups) if group_id is None: return None
# 98602 是订阅请求编号,group_id 才是真正的显示组 ID。 app.subscribeToGroupEvents(98602, group_id) return group_id| 参数 | 类型 | 说明 |
|---|---|---|
reqId | 整数 | 订阅请求编号。后续 displayGroupUpdated() 会返回同一个 reqId。 |
groupId | 整数 | 显示组 ID,必须来自 displayGroupList() 的返回。 |
reqId 和 groupId 很容易混淆:reqId 是你给这次订阅起的编号,groupId 是 TWS 给显示组分配的编号。
| 现象 | 常见原因 | 处理方式 |
|---|---|---|
groups 为空 | TWS 没有可用显示组 | 让用户打开图表、报价或联动窗口后重新查询。 |
| 订阅后没有回调 | 该组没有关联合约,或 UI 没发生变化 | 调用 updateDisplayGroup() 或让用户手动切换标的。 |
groupId 无效 | 没有从 displayGroupList() 返回值中取 ID | 不要写死组号,先查询再订阅。 |
订阅成功不一定有独立的“成功”消息,通常以是否收到 displayGroupUpdated() 作为确认。