跳转到内容

二档行情交易所

二档行情交易所列表用于回答一个基础问题:这次连接的 TWS API 能识别哪些交易所、哪些证券类型支持市场深度数据。它不是订阅盘口本身,只是查询可用的深度行情来源。

官方参考:Market Depth

步骤接口 / 回调说明
1reqMktDepthExchanges()请求支持市场深度数据的交易所列表
2mktDepthExchanges()接收交易所描述列表
3reqMktDepth()选择具体合约后再订阅二档行情
4updateMktDepth() / updateMktDepthL2()接收真实盘口更新
5cancelMktDepth()取消深度行情订阅
字段中文解释使用方式
exchange交易所代码,例如 NASDAQARCAIDEALPRO用来展示或筛选深度行情来源。
secType证券类型,例如 STKFUTCASHOPT和合约的 secType 对照。
listingExch上市交易所,部分记录为空。保存原值即可,空值不代表错误。
serviceDataType深度数据服务类型,例如 DeepDeep2DeepX不要翻译入库,保留官方原值。
aggGroup聚合组编号;未设置时可能是 2147483647SMART 深度和聚合排查时有用。

调用 reqMktDepthExchanges() 可以返回支持市场深度数据的交易所列表。下面是部分返回记录:

CONNECTED=True
EXCHANGE_ROWS=20
EXCHANGE=exchange=DTB;secType=OPT;serviceDataType=Deep;aggGroup=2147483647
EXCHANGE=exchange=COMEX;secType=FOP;serviceDataType=Deep;aggGroup=2147483647
EXCHANGE=exchange=LSEETF;secType=STK;serviceDataType=Deep;aggGroup=2147483647
EXCHANGE=exchange=SGX;secType=FUT;serviceDataType=Deep;aggGroup=2147483647
EXCHANGE=exchange=IDEALPRO;secType=CASH;serviceDataType=Deep;aggGroup=4
EXCHANGE=exchange=ARCA;secType=STK;serviceDataType=Deep;aggGroup=2147483647

能拿到这个列表,只说明 TWS API 认识这些深度行情来源;不等于账户已经购买对应交易所的深度行情权限。

继续对 AAPL 请求深度行情时,返回了权限边界:

DEPTH_ROWS=0
DEPTH_L2_ROWS=0
CANCEL_SENT=True
ERROR=reqId=97401;code=2152;msg=交易所 - 顶端: IBEOS; OVERNIGHT; 需要其它市场数据许可 - 深度: NASDAQ; BATS; ARCA; BEX; NYSE; IEX; ...

2152 的重点是“需要其它市场数据许可”。也就是说,交易所出现在深度行情来源列表里,只代表 API 知道它;是否能收到该合约的盘口,仍要看账户是否有对应深度行情权限。

项目一档行情二档行情
主要接口reqMktData()reqMktDepth()
常见回调tickPrice()tickSize()updateMktDepth()updateMktDepthL2()
数据内容最新价、买一、卖一、成交量等多档买卖盘、做市商或交易所队列
权限要求市场数据权限通常需要额外的深度行情权限
查询交易所能力通常不需要可先用 reqMktDepthExchanges()

先查交易所列表,再查合约详情,最后订阅二档行情。不要看到 NASDAQ 在列表里就认为 AAPL 深度行情一定可用,真正能否收到盘口还取决于账户市场数据许可。