Vibe-Trading 如何用 Tushare stk_auction 在 9:25 拿到 A 股集合竞价数据:竞价量比筛选与打板预筛实战
【免费下载链接】Vibe-Trading"Vibe-Trading: Your Personal Trading Agent"项目地址: https://gitcode.com/GitHub_Trending/vi/Vibe-Trading
stk_auction只在每天 9:25 至 9:29 的几分钟窗口内可取,错过就要等下一个交易日。下面用不到十行调用,把带量比、换手率和高开幅度的全市场竞价快照装进 DataFrame,直接接进打板选股与盘前资金扫描的流水线。
一页看懂:这个 Tushare 竞价接口值不值得用
| 项目 | 说明 |
|---|---|
| 接口名 | stk_auction(Tushare 接口 ID 369) |
| 数据窗口 | 每日9:25–9:29,当日集合竞价快照 |
| 单次上限 | 8000行 |
| 权限门槛 | 单独开权限;已开通股票分钟权限的用户自动获得 |
| 一句话用途 | 一次取回全市场当日竞价成交量、均价、金额、量比、换手率 |
集合竞价机制:为什么竞价量比能当选股信号
A 股 9:30 开盘前有一段 10 分钟的集合竞价:9:15–9:20 可申报可撤单,9:20–9:25 只能申报不能撤单,9:25 交易所按"最大成交量"原则撮合出开盘价。
这 10 分钟是一天里多空博弈最集中的阶段,打板资金与盘前抢筹的意图会一次性暴露出来。竞价快照就是观察"竞价强度"的第一手数据,而且只在 9:25–9:29 窗口内可取。竞价成交均价price是当天走势的定调基准,放量高开往往意味着主线在开盘前就已选定。
仓库里 market-microstructure 技能也把 A 股 call auction 列为本土微结构特征,用于成交成本估计与知情交易识别。数据层面,下面四个接口互相咬合:
| 接口 | 时效 | 数据内容 | 用途 |
|---|---|---|---|
stk_auction | 当日 9:25–9:29 | vol、price、amount、量比、换手率 | 盘中决策 |
stk_auction_o | 盘后更新 | 开盘 9:30 竞价 OHLCV + vwap | 盘后复盘 |
stk_auction_c | 盘后更新 | 收盘 15:00 竞价 OHLCV + vwap | 盘后复盘 |
limit_list_d | 盘后 | 首封时间、炸板次数、连板数、封单金额 | 打板晋级预筛 |
各接口字段定义见仓库内 股票开盘集合竞价数据 与 涨跌停和炸板数据。
输入参数:stk_auction 的四种组合方式
| 名称 | 类型 | 必选 | 含义 |
|---|---|---|---|
ts_code | str | N | 股票代码,如600071.SH |
trade_date | str | N | 交易日期,YYYYMMDD格式 |
start_date | str | N | 开始日期 |
end_date | str | N | 结束日期 |
四个参数均可省略,也可以自由组合,行为对照如下:
- 全不传:返回当前交易日全市场数据,上限 8000 行;
- 单传
trade_date:取指定单日全市场,例如trade_date='20250218'; start_date+end_date:取区间数据,仍受单次 8000 行限制,需按日循环;- 加
ts_code:收窄到单只标的,适合对自选池逐个扫描。
输出字段:九列数据怎么换算
| 名称 | 类型 | 含义 |
|---|---|---|
ts_code | str | 股票代码 |
trade_date | str | 数据日期 |
vol | int | 成交量(股) |
price | int | 成交均价(元) |
amount | float | 成交金额(元) |
pre_close | float | 昨收价(元) |
turnover_rate | float | 换手率(%) |
volume_ratio | float | 量比 |
float_share | float | 流通股本(万股) |
三个换算关系可以直接写进策略:amount ≈ vol × price,例如8700 × 23.24 = 202188;高开幅度 =(price − pre_close) / pre_close;volume_ratio是当日竞价均量相对过去若干日同期均量的比值,判断抢筹意愿就看它。样例里还混有北交所.BJ标的(如836957.BJ),三个市场共用同一个 DataFrame。
注意:159558.SZ、123039.SZ等基金类代码的turnover_rate与volume_ratio返回 NaN,原因是这类标的没有传统换手率概念。统计前先按代码前缀过滤,或用fillna(0)补齐。
① 三步跑通:Tushare 竞价数据获取实战
装依赖、配 Token
pip install tushare export TUSHARE_TOKEN=your_token仓库内 Token 由环境变量 schema 统一管理:字段定义在 env_schema.py,预检在 preflight.py;示例脚本 stock_data_example.py 用get_env_config().data.tushare_token or ts.get_token()完成初始化。
最小可运行示例
import os import tushare as ts pro = ts.pro_api(os.getenv('TUSHARE_TOKEN') or ts.get_token()) df = pro.stk_auction(trade_date='20250218', fields='ts_code,trade_date,vol,price,amount,' 'pre_close,turnover_rate,volume_ratio') print(df.head())返回是 DataFrame,文档样例中的几行真实数据:
ts_code trade_date vol price amount turnover_rate volume_ratio 600071.SH 20250218 8700 23.240 202188.00 0.003090 0.150628 300053.SZ 20250218 53300 13.750 732875.00 0.008388 0.230996 159558.SZ 20250218 18700 1.211 22645.70 NaN NaN② 如何按日批量拉取竞价数据
全市场单日约 6500 行,一次拉得下;历史回补则要按交易日循环。dateu.get_next自动跳过周末和节假日,sleep控制请求频率以免触发限流:
import time import pandas as pd def fetch_auction_between(start, end, ts_code='', pause=0.3): """按日循环抓取区间内的集合竞价成交数据""" from tushare.util import dateu fields = ('ts_code,trade_date,vol,price,amount,pre_close,' 'turnover_rate,volume_ratio,float_share') frames, day = [], start while day <= end: frames.append(pro.stk_auction(trade_date=day, ts_code=ts_code, fields=fields)) day = dateu.get_next(day) # 跳过周末与节假日 time.sleep(pause) # 控频,避免限流 return pd.concat(frames, ignore_index=True) hist = fetch_auction_between('20250201', '20250228', ts_code='600071.SH') today = pro.stk_auction(trade_date='20250218', fields='ts_code,vol,price,amount,turnover_rate,volume_ratio') hot = today[today['amount'] > 1_000_000] # 按竞价金额过滤 print(hot.sort_values('volume_ratio', ascending=False).head(10))1_000_000(100 万元)只是演示阈值:以 20250218 样例看,600879.SH的 1800320 元、300616.SZ的 2050600 元都能入选。需要精确控制交易日序列时,可结合仓库 交易日历(trade_cal)先生成日期再循环。
③ 组合用法:竞价量比筛选与打板数据获取的三个方向
- 竞价量比筛选:取
volume_ratio大于 1.5、且高开幅度(price − pre_close) / pre_close落在 0–3% 的标的,回答"哪些票在竞价被抢筹"。 - 竞价资金强度排序:按
amount对全市场排序,识别当日资金主攻方向;turnover_rate偏高而高开不足的票,标记为疑似竞价出货。 - 打板晋级预筛:从
limit_list_d取昨日涨停集合,在 9:25–9:29 窗口内扫描其量比与高开幅度,预判连板晋级,这是打板数据获取的标准流水线。
避坑清单:竞价字段缺失与权限报错怎么处理
- 窗口错过:当日数据只在 9:25–9:29 开放 → 定时任务锚定 9:25 之后、9:30 之前触发;漏掉的日期用日期循环补取。
- 行数停在 8000:多日区间一次拉取会触顶 → 按日循环再
concat,不要一次取整个区间。 - NaN 出现:
159558.SZ等基金类代码缺换手率与量比 → 按代码前缀过滤或fillna(0);布尔掩码过滤时 NaN 行会被直接丢掉。 - 权限类报错:本接口是单独开权限 → 股票分钟权限用户免申请,否则先到 Tushare 平台申请再跑。
- 单位不一致:
vol是股、float_share是万股 → 手工计算换手前先统一单位。 - 金额极小:
123039.SZ样例仅成交 2395.54 元 → 给amount设下限,过滤低流动性标的。
下一步
先跑通单日快照确认数据结构,再叠加volume_ratio > 1.5与高开幅度区间两个过滤,得到第一版竞价选股因子。
【免费下载链接】Vibe-Trading"Vibe-Trading: Your Personal Trading Agent"项目地址: https://gitcode.com/GitHub_Trending/vi/Vibe-Trading
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考