跳转至

← 返回接口目录

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..1800max_pagesNone 表示不设页数上限。

today()all_today()today_batch()all_today_batch()code 都可传单个代码或代码列表;传列表时返回以规范化完整代码为键的字典,超出并发数的代码自动排队。

可选批量数据返回

today_batch() 返回当前页的 TradeBatchall_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 原始记录,包含 tradeauction_snapshotopening_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 tradeauction_snapshotopening_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 方向,buysellneutral 或状态名
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_tradesafter_hours_trades 中。

自 2026 年 7 月 6 日起,盘后固定价格交易由科创板、创业板扩展至全部 A 股及沪深 ETF,成交价格为当日收盘价;没有发生盘后成交时,after_hours_trades 为空。

成交明细中的 status=8 主要用于保留竞价时间和价格。其数量原始字段可能为零,不能替代 0x056a;完整秒级过程、虚拟匹配量和未匹配量请使用集合竞价过程快照

需要完整集合竞价过程时使用集合竞价过程快照;只取 09:25 正式撮合时使用当日 09:25 正式撮合

翻页规则

项目 说明
起始页 start=0
下一页 start += 当前页实际返回数量
单页结果可能还有数据 page.has_moreTrue
拉取当日完整明细 client.trades.all_today(code)

today() 保留服务器当前页的原始顺序。all_today() 会把服务器返回的分页按时间顺序重新合并:start=0 是较新的页面,后续 start 页面更早,因此完整结果按页倒序展开,但保留每页内部顺序。TradeTick.absolute_index 仍表示服务器原始分页位置,不是合并后列表的下标。

真实返回样本

真实返回 JSON · TradePage(收盘与盘后节选)

采样标的sz000001
交易日期2026-08-17
返回类型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"
    }
  ]
}