二档行情交易所
二档行情交易所列表用于回答一个基础问题:这次连接的 TWS API 能识别哪些交易所、哪些证券类型支持市场深度数据。它不是订阅盘口本身,只是查询可用的深度行情来源。
官方参考:Market Depth
| 步骤 | 接口 / 回调 | 说明 |
|---|---|---|
| 1 | reqMktDepthExchanges() | 请求支持市场深度数据的交易所列表 |
| 2 | mktDepthExchanges() | 接收交易所描述列表 |
| 3 | reqMktDepth() | 选择具体合约后再订阅二档行情 |
| 4 | updateMktDepth() / updateMktDepthL2() | 接收真实盘口更新 |
| 5 | cancelMktDepth() | 取消深度行情订阅 |
| 字段 | 中文解释 | 使用方式 |
|---|---|---|
exchange | 交易所代码,例如 NASDAQ、ARCA、IDEALPRO。 | 用来展示或筛选深度行情来源。 |
secType | 证券类型,例如 STK、FUT、CASH、OPT。 | 和合约的 secType 对照。 |
listingExch | 上市交易所,部分记录为空。 | 保存原值即可,空值不代表错误。 |
serviceDataType | 深度数据服务类型,例如 Deep、Deep2、DeepX。 | 不要翻译入库,保留官方原值。 |
aggGroup | 聚合组编号;未设置时可能是 2147483647。 | SMART 深度和聚合排查时有用。 |
调用 reqMktDepthExchanges() 可以返回支持市场深度数据的交易所列表。下面是部分返回记录:
CONNECTED=TrueEXCHANGE_ROWS=20EXCHANGE=exchange=DTB;secType=OPT;serviceDataType=Deep;aggGroup=2147483647EXCHANGE=exchange=COMEX;secType=FOP;serviceDataType=Deep;aggGroup=2147483647EXCHANGE=exchange=LSEETF;secType=STK;serviceDataType=Deep;aggGroup=2147483647EXCHANGE=exchange=SGX;secType=FUT;serviceDataType=Deep;aggGroup=2147483647EXCHANGE=exchange=IDEALPRO;secType=CASH;serviceDataType=Deep;aggGroup=4EXCHANGE=exchange=ARCA;secType=STK;serviceDataType=Deep;aggGroup=2147483647能拿到这个列表,只说明 TWS API 认识这些深度行情来源;不等于账户已经购买对应交易所的深度行情权限。
继续对 AAPL 请求深度行情时,返回了权限边界:
DEPTH_ROWS=0DEPTH_L2_ROWS=0CANCEL_SENT=TrueERROR=reqId=97401;code=2152;msg=交易所 - 顶端: IBEOS; OVERNIGHT; 需要其它市场数据许可 - 深度: NASDAQ; BATS; ARCA; BEX; NYSE; IEX; ...2152 的重点是“需要其它市场数据许可”。也就是说,交易所出现在深度行情来源列表里,只代表 API 知道它;是否能收到该合约的盘口,仍要看账户是否有对应深度行情权限。
和一档行情的区别
Section titled “和一档行情的区别”| 项目 | 一档行情 | 二档行情 |
|---|---|---|
| 主要接口 | reqMktData() | reqMktDepth() |
| 常见回调 | tickPrice()、tickSize() | updateMktDepth()、updateMktDepthL2() |
| 数据内容 | 最新价、买一、卖一、成交量等 | 多档买卖盘、做市商或交易所队列 |
| 权限要求 | 市场数据权限 | 通常需要额外的深度行情权限 |
| 查询交易所能力 | 通常不需要 | 可先用 reqMktDepthExchanges() |
先查交易所列表,再查合约详情,最后订阅二档行情。不要看到 NASDAQ 在列表里就认为 AAPL 深度行情一定可用,真正能否收到盘口还取决于账户市场数据许可。