跳转至

← 返回接口目录

板块成分股行情

输入一个板块代码,查询其成分股行情。板块代码可从板块行情的返回结果中取得。

接口

client.helpers.board_member_quotes(
    board_code: str,
    *,
    refresh: bool = False,
) -> BoardMemberQuoteTable

作用

传入一个板块代码,读取该板块的原始成分股,与当天 0x044d 有效证券名单核对后,只为有效成分股查询实时行情。

输入参数

参数 类型 必填 默认值 说明
board_code str 六位板块代码,例如 "880515";也接受带市场前缀的完整代码,例如 "sh880515"
refresh bool False 是否强制重新准备当天的板块资料和证券名单。

处理步骤与底层请求

  1. 0x06b9 准备板块资料。
  2. 根据板块代码解析原始成分股。
  3. 0x044d 当前证券名单核对有效性。
  4. 对有效成员按每批最多 80 个代码调用 0x054c

返回值

返回 BoardMemberQuoteTable

字段 类型 说明
board_code / board_name str 请求板块的代码和名称。
raw_members tuple[dict, ...] 文件解析并按市场和代码去重后的原始成员。
display_members tuple[dict, ...] 与缓存证券名单匹配的有效成员。
excluded_members tuple[dict, ...] 名单中不存在的成员及排除原因。
rows tuple[BoardQuoteRow, ...] 有效成员的行情行,顺序与 display_members 一致。
count int 属性:len(rows)
prepared_date date 本次资料准备使用的日期。

raw_membersdisplay_membersexcluded_members 的每项至少包含 marketcode;排除项额外包含 reason,当前值为 absent_from_current_security_list

行情行字段

rows 中每项都是 BoardQuoteRow

字段 类型 说明
board_code str 所属板块的六位代码。
board_name str 所属板块名称。
full_code str 当前行情行的完整代码,含市场前缀。
code str 属性:当前行情行的六位代码,来自 full_code
name str 属性:等于 board_name。成分股行情中仍为板块名,非股票名称。
exchange str 当前行情行的市场前缀。
market_id int 当前行情行的市场编号。
last_price / pre_close_price float / None 最新价 / 昨收价。
open_price / high_price / low_price float / None 今开 / 最高 / 最低。
change float / None 最新价减昨收价。
change_pct float / None 涨跌幅百分数,例如 4.71 表示 4.71%;昨收为零时为 None
amount float / None 成交额。
volume_hand int / None 成交量,单位为手。
quote QuoteSnapshot / None 原始行情快照。

某代码没有返回行情时,仍保留对应行,行情字段和 quoteNonecount 是行数,不等于成功取得行情的代码数。

示例

from eltdx import TdxClient

with TdxClient(timeout=3) as client:
    table = client.helpers.board_member_quotes("880515")
    print(table.board_name, table.count)
    print("原始成员:", len(table.raw_members))
    print("有效成员:", len(table.display_members))
    print("排除成员:", table.excluded_members)
    for row in table.rows:
        print(row.full_code, row.last_price, row.change_pct)

输入错误

  • board_code 为空或不是字符串:抛出 ValueError("board_code is required")
  • 找不到对应板块代码:抛出 ValueError("unknown board code: ...")
  • 板块资料不完整或类别不支持:抛出 ValueErrorRuntimeError,调用方应记录错误并检查本地资料目录。

缓存与刷新

refresh=False 时,同一天后续调用复用资料缓存;refresh=True 时强制重新准备资料。每次调用都会请求 0x054c 行情。

资料准备尝试下载 infoharbor_block.dattdxhy.cfg 并读取 0x044d 证券名单。缓存目录由 ELTDX_BOARD_DATA_DIR 指定,默认是当前工作目录下的 downloads;日期记录在 .eltdx_board_cache.json 中。日期优先取握手中的服务端日期,取不到时使用本机日期。

板块定义还会读取本地 tdxzs.cfgtdxzs3.cfg;缺少定义时会尝试从 infoharbor_block.dat 解析。地域成员依赖本地 base.dbf。这些文件并非都由本接口自动下载。

当前实现中,下载失败可能沿用已有文件,证券名单获取失败可能回退到本地名单。因此 prepared_date 表示资料准备使用的日期,并非所有源文件均已成功更新的证明。

返回示例

返回结构示例 · BoardMemberQuoteTable

示例数据,仅说明字段结构;行情行省略部分字段和原始 quote。接口返回 Python 对象,下方 JSON 为展示形式,日期转换为字符串,count 属性单独加入。

{
  "board_code": "880515",
  "board_name": "示例板块",
  "raw_members": [
    {
      "market": 1,
      "code": "600000"
    }
  ],
  "display_members": [
    {
      "market": 1,
      "code": "600000"
    }
  ],
  "excluded_members": [],
  "rows": [
    {
      "board_code": "880515",
      "board_name": "示例板块",
      "full_code": "sh600000",
      "last_price": 10.5,
      "pre_close_price": 10.0,
      "change": 0.5,
      "change_pct": 5.0
    }
  ],
  "prepared_date": "2026-09-13",
  "count": 1
}