7709-当日成交明细¶
作用¶
分页查询主站当前保存的成交明细。这里的“当日”指主站当前保存的数据;盘中会持续更新,凌晨、周末或节假日可能返回最近交易日数据。返回记录中可能包含普通成交、集合竞价过程快照和 09:25 正式撮合,解析器通过 event_kind 区分语义。需要只取其中一种记录时,请使用对应的筛选接口文档。
| 项目 | 内容 |
|---|---|
| 主要调用 | client.trades.today(code, ...) → TradePage |
| 完整分页 | client.trades.all_today(code, ...) → TradePage |
| 批量字段 · 单页 | client.trades.today_batch(code, ...) → TradeBatch |
| 批量字段 · 完整分页 | client.trades.all_today_batch(code, ...) → TradeBatch |
| 底层接口 | 0x0fc5 |
这 4 个入口分成两组:today() / all_today() 返回原来的 TradePage(逐条 TradeTick 对象),today_batch() / all_today_batch() 返回 TradeBatch(按列保存数据,避免下载时逐条创建对象)。4 个入口的 code 都支持单个股票或代码列表;传列表时返回 {完整代码: 对应结果}。
示例¶
from eltdx import TdxClient
with TdxClient(timeout=3) as client:
page = client.trades.today("sz000001", start=0, count=1800)
all_ticks = client.trades.all_today("sz000001")
pages = client.trades.all_today(["sz000001", "sh600000"])
batch = client.trades.today_batch("sz000001", count=1800)
all_batch = client.trades.all_today_batch(
["sz000001", "sh600000"]
)
print(page.ticks[:3])
print(page.actual_trades[:3])
print(page.after_hours_trades[:3])
print(len(all_ticks.ticks))
print(batch.column("volume"))
print(all_batch["sz000001"].count)
client.trades.today(code) 不传日期,固定走当日成交明细 0x0fc5。请求和响应都不带交易日期。
参数¶
| 参数 | 含义 |
|---|---|
code |
单个证券代码或代码列表;支持完整代码或六位代码 |
start |
起始位置,从 0 开始 |
count |
本页条数,便捷方法默认 1800,服务端单页上限也是 1800 |
include_raw |
是否保留原始 payload,默认 False |
batch_size |
代码列表输入时的同时查询数,默认自动跟随连接池大小;代码列表没有总数量上限,超出并发数的代码排队等待。 |
page_size |
all_today() 自动翻页时的每页条数,默认 1800,范围 1..1800 |
max_pages |
all_today() 最大页数,默认 100;传 None 表示不设上限 |
all_today(code, page_size=1800, max_pages=100, include_raw=False) 会自动从 start=0 开始翻页,直到主站返回空页;page_size 必须在 1..1800,max_pages 传 None 表示不设页数上限。
today()、all_today()、today_batch() 和 all_today_batch() 的 code 都可传单个代码或代码列表;传列表时返回以规范化完整代码为键的字典,超出并发数的代码自动排队。
可选批量数据返回¶
today_batch() 返回当前页的 TradeBatch,all_today_batch() 自动翻页到空页后返回完整的 TradeBatch。它们与 today() / all_today() 查询的是同一份成交明细,区别只在返回数据的组织方式;原来的 TradePage 调用保持不变。
data = client.trades.all_today_batch("sz000001")
selected = data.select(
i for i, (event, volume) in enumerate(
zip(data.column("event_kind"), data.column("volume"))
)
if event != "auction_snapshot" and volume > 1000
)
print(selected.to_columns(["time_label", "price", "volume"]))
print(selected.tick(0).price if selected.count else None)
TradeBatch 适合按列筛选和汇总;只有需要对象属性时,才用 tick(index),或用 to_page() 一次性转回原来的 TradePage。
解析字段¶
TradePage 字段 |
含义 |
|---|---|
exchange / market_id / code / full_code |
市场和代码 |
start / request_count |
请求起点 / 请求条数 |
ticks |
原始记录,包含 trade、auction_snapshot、opening_match |
actual_trades |
排除 status=8 后的真实成交,保留 09:25、15:00 和盘后固定价格成交 |
after_hours_trades |
15:05-15:30、status=5 的盘后固定价格成交 |
auction_snapshots |
从本页筛出的 status=8 集合竞价快照 |
opening_matches |
从本页筛出的 09:25 正式撮合记录 |
trading_date |
原始 0x0fc5 响应不带日期,因此保持为空 |
price_base_raw_f32 |
历史价格基数;当日接口通常为 None |
count |
混合记录条数 |
has_more |
单页结果非空时为 True,表示仍可能有下一页;空页才确认结束 |
raw_payload |
原始 payload |
TradeTick 字段 |
含义 |
|---|---|
index |
本页内序号 |
absolute_index |
全局序号,start + index |
time_minutes |
当日分钟数 |
time_label / trade_datetime |
成交时间 |
price / price_milli |
成交价 / 毫厘价 |
volume |
原始数量字段;真实成交时是成交量,status=8 时不赋予竞价数量语义 |
order_count |
原始笔数字段;status=8 时不赋予竞价未匹配量语义 |
event_kind |
trade、auction_snapshot 或 opening_match |
is_auction_snapshot / is_opening_match / is_trade |
事件类型判断属性 |
is_actual_trade |
是否为真实成交;仅 status=8 返回 False |
is_after_hours_fixed_price |
是否为 15:05-15:30、status=5 的盘后固定价格成交 |
auction_matched_volume |
成交明细不推断竞价数量,固定为 None |
auction_unmatched_signed_volume / auction_unmatched_volume |
成交明细不推断竞价未匹配量,固定为 None |
side |
方向,buy、sell、neutral 或状态名 |
status_raw |
方向 / 状态原始值 |
price_delta_raw |
成交价差分原始值 |
price_acc_raw |
成交价差分累计值 |
unknown_tail_raw |
当日成交明细尾部原始字段 |
reserved_zero |
协议保留字段;没有时为 None |
record_hex |
单条原始十六进制 |
trade_amount_yuan |
按原始数量计算的金额;只应对真实成交作为成交额使用 |
status_raw == 8 的记录不是实际成交,因此不会进入 actual_trades;时间为 09:25 且不是 status=8 的记录是正式开盘撮合,15:00 的非 status=8 记录是正式收盘撮合,两者都会保留。15:05-15:30 的 status=5 是盘后固定价格真实成交,同时出现在 actual_trades 和 after_hours_trades 中。
自 2026 年 7 月 6 日起,盘后固定价格交易由科创板、创业板扩展至全部 A 股及沪深 ETF,成交价格为当日收盘价;没有发生盘后成交时,after_hours_trades 为空。
成交明细中的 status=8 主要用于保留竞价时间和价格。其数量原始字段可能为零,不能替代 0x056a;完整秒级过程、虚拟匹配量和未匹配量请使用集合竞价过程快照。
需要完整集合竞价过程时使用集合竞价过程快照;只取 09:25 正式撮合时使用当日 09:25 正式撮合。
翻页规则¶
| 项目 | 说明 |
|---|---|
| 起始页 | start=0 |
| 下一页 | start += 当前页实际返回数量 |
| 单页结果可能还有数据 | page.has_more 为 True |
| 拉取当日完整明细 | 用 client.trades.all_today(code) |
today() 保留服务器当前页的原始顺序。all_today() 会把服务器返回的分页按时间顺序重新合并:start=0 是较新的页面,后续 start 页面更早,因此完整结果按页倒序展开,但保留每页内部顺序。TradeTick.absolute_index 仍表示服务器原始分页位置,不是合并后列表的下标。
真实返回样本¶
真实返回 JSON · TradePage(收盘与盘后节选)
真实采样;请求 start=0、count=2,展示 15:00 正式成交和 15:05 status=5 盘后成交。
{
"exchange": "sz",
"code": "000001",
"start": 0,
"request_count": 2,
"ticks": [
{
"time_label": "15:00",
"price": 11.1,
"volume": 9264,
"order_count": 338,
"status_raw": 2,
"side": "neutral",
"event_kind": "trade"
},
{
"time_label": "15:05",
"price": 11.1,
"volume": 3,
"order_count": 1,
"status_raw": 5,
"side": "status_5",
"event_kind": "trade"
}
]
}