数据库表与查询

15 张表的字段说明与常用 ClickHouse 查询 —— 复权计算、板块 / 指数成分、逐笔资金流。

tdp sync / tdp import 会把数据写入你自己的本地 ClickHouse,库名由 DSN 决定。一份订阅落地后共 15 张表raw_ 前缀),本页说明每张表的字段与常用查询。客户端用法见 tdp 客户端手册

只交付原始表,复权自行计算

数据集仅含原始(不复权)K 线 + 复权因子表,不含视图。前 / 后复权按复权计算一节用因子现算。

通用约定

下文 SQL 中的库名统一用 tdp,按你的实际库名替换。

行情 K 线

日线(A 股 / 港股)与 1min / 5min 分时,列结构一致:原始非聚合 OHLC + 成交额 / 量。日线表 raw_kline_daily 混放股票 / 指数 / ETF / 板块,用 raw_symbol_class 区分。

内容 排序键
raw_kline_daily A 股日线(股票 / 指数 / ETF / 板块) (symbol, date)
raw_kline_1min A 股 1 分钟 K 线(原始非聚合) (symbol, datetime)
raw_kline_5min A 股 5 分钟 K 线(原始非聚合) (symbol, datetime)
raw_hk_kline_daily 港股日线 (symbol, date)

日线(raw_kline_daily / raw_hk_kline_daily)字段:

字段 类型 说明
symbol String 标的代码
open high low close Float64 开 / 高 / 低 / 收(元,不复权)
amount Float64 成交额(元)
volume Int64 成交量(股)
date Date 交易日

分时(raw_kline_1min / raw_kline_5min)字段与日线相同,仅把 date 换为 datetimeDateTime,K 线起始时刻)。

逐笔成交(tick)

raw_ticks —— 全市场 3 秒级逐笔成交,含主动买卖方向。排序键 (symbol, datetime)

字段 类型 说明
symbol String 标的代码
datetime DateTime 成交时刻
price Float64 成交价(元)
volume Int64 成交量(股)
direction String 主动方向:B 主动买 / S 主动卖 / X 中性(集合竞价等)

指数的 tick 是快照不是逐笔

指数 symbol 在 raw_ticks 中的行是交易所 Level-1 的 3 秒快照行情(非逐笔成交),volume 为全市场聚合量。个股逐笔不受影响。

复权与股本变迁

复权因子表稀疏存储:只在因子变化的那天落一条,并保留首日一条(hfq_factor = 1.0)作锚点。因此还原逐日因子要用 ASOF JOIN 取「日期 ≤ 当前的最近一条」。

内容 排序键
raw_adjust_factor A 股后复权因子(稀疏) (symbol, date)
raw_hk_factor 港股后复权因子(稀疏) (symbol, date)
raw_gbbq A 股股本变迁原始事件(分红 / 配股 / 送转等) (symbol, date)

raw_adjust_factor / raw_hk_factor 字段:

字段 类型 说明
symbol String 标的代码
date Date 因子生效日
hfq_factor Float64 后复权因子

raw_gbbq(股本变迁,供需要还原除权除息事件的高级用户;普通复权用因子表即可):

字段 类型 说明
category Int64 事件类别,见下表
symbol String 标的代码
date Date 事件日
c1 c2 c3 c4 Float64 四个数值字段,含义随 category 变化

category 编号与 c1..c4 含义(最常用为 1 除权除息):

category 事件 c1 / c2 / c3 / c4
1 除权除息 分红 / 配股价 / 送转股 / 配股
2 送配股上市 前流通盘 / 前总股本 / 后流通盘 / 后总股本
3 非流通股上市 前流通盘 / 前总股本 / 后流通盘 / 后总股本
5 股本变化 前流通盘 / 前总股本 / 后流通盘 / 后总股本
6 增发新股 — / 增发价 / 增发数量 / —
7 股份回购 前流通盘 / 前总股本 / 后流通盘 / 后总股本
9 转配股上市 前流通盘 / 前总股本 / 后流通盘 / 后总股本
11 扩缩股 — / — / 比例 / —
13 / 14 送认购 / 认沽权证 行权价 / — / 份数 / —

参考维表

代码↔名称、品种分类、指数成分、板块成分等维度表(快照,随订阅刷新)。

内容 排序键
raw_symbol_name 全品种代码 → 名称 + class symbol
raw_stocks_info A 股基础信息(上市 / 退市日) symbol
raw_symbol_class 品种分类 symbol
raw_csindex 中证指数成分 index_name
raw_tdx_blocks_info 板块 / 概念 / 行业信息 block_code
raw_tdx_blocks_member 板块成分关系 (block_code, stock_symbol)
raw_hk_symbol 港股标的信息 symbol

raw_symbol_namesymbol / name(中文名)/ class(品种分类)。

raw_stocks_infosymbol / name / list_dateDate 上市日)/ delist_dateDate,在市为 NULL)。

raw_symbol_classsymbol / classstock / index / etf / block / unknown)。

raw_csindexindex_name(指数英文名,CSI300 / CSI500 / CSI1000 / CSI2000)/ stock_name(成分股中文名)/ stock_symbol(统一 symbol)。仅当前成分。

raw_tdx_blocks_info

字段 类型 说明
block_type String concept 概念 / style 风格 / region 地区 / tdx_research 通达信行业·研究板块
block_name String 板块名称(如「白酒」)
block_symbol String 板块标识代码(板块自身 K 线以此落在 raw_kline_dailyclass='block'
block_code String 内部板块编码(与成分表 join 用)
parent_code String 父板块编码(构成层级)
block_level Int64 层级(行业分类 1 / 2 / 3 级)

raw_tdx_blocks_memberblock_code / stock_symbol(成分股代码)。

raw_hk_symbolsymbol / name / boardmain 主板 / gem 创业板 / equity / etf / lni / reit)。

查询示例

不复权日线

SELECT date, open, high, low, close, volume
FROM tdp.raw_kline_daily
WHERE symbol = 'sh600519'
ORDER BY date;

按 class 取某类全部标的(如全部 ETF):

SELECT k.*
FROM tdp.raw_kline_daily AS k
JOIN tdp.raw_symbol_class AS c ON k.symbol = c.symbol
WHERE c.class = 'etf' AND k.date = '2024-12-31';

复权计算(前复权 / 后复权)

后复权(hfq)= 原始价 × hfq_factor。因子稀疏,用 ASOF LEFT JOIN 取最近一条:

SELECT
    k.date,
    round(k.open  * f.hfq_factor, 2) AS open,
    round(k.high  * f.hfq_factor, 2) AS high,
    round(k.low   * f.hfq_factor, 2) AS low,
    round(k.close * f.hfq_factor, 2) AS close
FROM tdp.raw_kline_daily AS k
ASOF LEFT JOIN tdp.raw_adjust_factor AS f
    ON k.symbol = f.symbol AND k.date >= f.date
WHERE k.symbol = 'sh600519'
ORDER BY k.date;

前复权(qfq)= 后复权 ÷ 最新因子,使最近一日价格等于不复权价:

WITH latest AS (
    SELECT symbol, argMax(hfq_factor, date) AS latest_hfq
    FROM tdp.raw_adjust_factor
    GROUP BY symbol
)
SELECT
    k.date,
    round(k.close * f.hfq_factor / l.latest_hfq, 2) AS close_qfq
FROM tdp.raw_kline_daily AS k
ASOF LEFT JOIN tdp.raw_adjust_factor AS f
    ON k.symbol = f.symbol AND k.date >= f.date
LEFT JOIN latest AS l ON k.symbol = l.symbol
WHERE k.symbol = 'sh600519'
ORDER BY k.date;

精度与港股

股票价格 round(…, 2),ETF / 港股 round(…, 3)。港股复权把上面两段的 raw_kline_daily 换成 raw_hk_kline_dailyraw_adjust_factor 换成 raw_hk_factor 即可。

指数成分

SELECT stock_symbol, stock_name
FROM tdp.raw_csindex
WHERE index_name = 'CSI300';

板块 / 概念成分

某概念板块的成分股及名称:

SELECT m.stock_symbol, n.name
FROM tdp.raw_tdx_blocks_member AS m
JOIN tdp.raw_tdx_blocks_info  AS i ON m.block_code = i.block_code
LEFT JOIN tdp.raw_symbol_name AS n ON m.stock_symbol = n.symbol
WHERE i.block_type = 'concept' AND i.block_name = '白酒';

逐笔资金流(主买 / 主卖)

按主动方向聚合某股某日的成交额与成交量:

SELECT
    direction,
    round(sum(price * volume)) AS amount,
    sum(volume)                AS volume
FROM tdp.raw_ticks
WHERE symbol = 'sh600519'
  AND toDate(datetime) = '2024-01-02'
GROUP BY direction;

净主动买额(B − S):

SELECT
    sumIf(price * volume, direction = 'B')
  - sumIf(price * volume, direction = 'S') AS net_active_buy
FROM tdp.raw_ticks
WHERE symbol = 'sh600519' AND toDate(datetime) = '2024-01-02';

代码 → 名称

SELECT symbol, name, class
FROM tdp.raw_symbol_name
WHERE symbol = 'sh600519';