成交量数据
成交量数据在 TWS API 中可能来自不同字段。普通一档行情里的成交量、买盘数量、卖盘数量通常通过 tickSize() 返回;实时成交量字符串则需要 generic tick 233。
本页讲普通数量类字段,RTVolume 单独在下一页说明。
官方参考:Available Tick Types
def tickSize(self, reqId, tickType, size): print("数量字段", reqId, tickType, size)tickType 用来区分这是买盘数量、卖盘数量、成交量还是其它数量字段。不要把所有 tickSize() 都当作总成交量。
普通成交量不需要 generic tick:
app.reqMktData(97801, aapl_stock(), "", False, False, [])如果你需要更细的实时成交量字符串,再请求 233:
app.reqMktData(97802, aapl_stock(), "233", False, False, [])常见数量 Tick
Section titled “常见数量 Tick”| tick type | 中文含义 | 回调 |
|---|---|---|
0 | 买盘数量 | tickSize() |
3 | 卖盘数量 | tickSize() |
5 | 最近成交数量 | tickSize() |
8 | 当日成交量 | tickSize() |
美股成交量字段有时以手数或批量单位表达,展示前要结合 TWS 设置和官方说明确认单位,不要把所有市场都按同一个乘数处理。
普通成交量与 RTVolume
Section titled “普通成交量与 RTVolume”| 项目 | 普通成交量 | RTVolume |
|---|---|---|
| 请求参数 | genericTickList="" | genericTickList="233" |
| 常见回调 | tickSize() | tickString() |
| 数据形态 | 数量字段 | 字符串,可能包含多个分隔字段 |
| 适合用途 | 基础行情展示 | 更细的实时成交量解析 |
参考边界样例
Section titled “参考边界样例”AAPL 基础一档行情请求到达 TWS,但没有收到数量字段:
SIZE_ROWS=0ERROR=reqId=97801;name=base;code=10089;msg=请求的市场数据对于API来说需要额外订阅ERROR=reqId=97801;name=base;code=300;msg=无法使用tickerId找到EId::97801这属于市场数据权限问题。代码结构正确不代表一定能收到成交量字段。
程序里应把数量字段按 tickType 分开存储。例如:
size_ticks = {}
def tickSize(self, reqId, tickType, size): size_ticks[(reqId, tickType)] = size后续展示时再把 tick type 映射成中文名称,避免把买量、卖量、总成交量混在一起。