Vibe-Trading Tushare stk_auction 开盘竞价成交接口实战:从 9:25 全市场快照到竞价抢筹选股
【免费下载链接】Vibe-Trading"Vibe-Trading: Your Personal Trading Agent"项目地址: https://gitcode.com/GitHub_Trending/vi/Vibe-Trading
Vibe-Trading 仓库内置的 Tushare 数据源技能里,stk_auction接口(打板专题)提供当日个股与 ETF 的集合竞价成交截面,单次最大 8000 行,覆盖量比、换手率、竞价金额等字段,可支撑盘前竞价抢筹扫描与打板晋级预判的完整研究链路。
9:25 开盘价出炉,你只有 4 分钟窗口
早盘集合竞价 9:15 开始申报,9:25 交易所按最大成交量原则撮合出开盘价。做竞价抢筹或打板研究的人,通常就在 9:25–9:29 这 4 分钟里拉全市场竞价快照:谁在竞价阶段放量、高开多少、成交金额多大,直接决定盘中第一笔下单的方向。
这正是 Vibe-Trading 仓库 Tushare 技能中"打板专题数据"分类下的stk_auction接口要解决的:每日 9:25–9:29 之间获取当日集合竞价成交数据(仓库接口文档:开盘竞价成交(当日).md))。注意它和盘后更新的历史竞价接口stk_auction_o(返回 OHLCV + vwap,用于因子回测)不是同一个数据源——stk_auction只服务盘中决策,错过就要等下一个交易日。
三步跑通第一次调用
装依赖、配 Token、发一次请求,三步就能拿到数据。仓库内 Tushare 技能总览 的"快速上手"一节有完整说明,Token 在项目里统一走环境变量TUSHARE_TOKEN(schema 定义于 agent/src/config/env_schema.py,标准初始化写法可参考 stock_data_example.py)。
pip install tushare -i https://pypi.tuna.tsinghua.edu.cn/simple export TUSHARE_TOKEN=your_tokenimport os import tushare as ts # 优先读环境变量,本地已记录过 token 时自动回退 token = os.getenv('TUSHARE_TOKEN') or ts.get_token() pro = ts.pro_api(token) # 不传任何参数 = 拉当日全市场;显式指定 fields 减小返回体 df = pro.stk_auction(fields='ts_code,trade_date,vol,price,amount,turnover_rate,volume_ratio') print(df)返回是 pandas DataFrame,一天约 6500 行,股票和 ETF 混在同一个截面里:
ts_code trade_date vol price amount turnover_rate volume_ratio 0 600071.SH 20250218 8700 23.240 202188.00 0.003090 0.150628 1 300053.SZ 20250218 53300 13.750 732875.00 0.008388 0.230996 2 159558.SZ 20250218 18700 1.211 22645.70 NaN NaN 3 600879.SH 20250218 195900 9.190 1800320.00 0.005938 0.373839 6 300616.SZ 20250218 142700 14.370 2050600.00 0.091494 1.184760 7 836957.BJ 20250218 300 12.310 3693.00 0.000702 0.012952代码后缀区分市场:.SH沪市、.SZ深市、.BJ北交所,ETF(如159558.SZ)也在其中。
四个入参自由组合,九类字段各管一段
四个入参全部可选,可以任意组合:不传参拉当日全市场;传trade_date拉指定日;start_date+end_date按区间回补(受单次 8000 行上限约束);传ts_code对自选池逐个扫描。
| 入参 | 类型 | 必选 | 作用 |
|---|---|---|---|
ts_code | str | N | 股票代码(如600071.SH) |
trade_date | str | N | 交易日期,YYYYMMDD |
start_date | str | N | 开始日期 |
end_date | str | N | 结束日期 |
输出字段与它的坑:
| 字段 | 类型 | 说明 |
|---|---|---|
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:成交金额是量与均价的乘积,两者对不上时优先怀疑数据异常,不必另行验证。- 量比是抢筹核心指标:
volume_ratio衡量当日竞价成交量相对近期同期均量的放大倍数,数值大于 1 说明竞价阶段资金明显进场;配合(price - pre_close) / pre_close算出的竞价高开幅度,就是盘前第一套筛选逻辑。 - ETF 缺两个字段:基金类标的的
turnover_rate、volume_ratio返回 NaN。全市场快照做聚合统计前,建议直接按代码段过滤掉159/51/56开头的代码,或者用fillna(0)兜底,否则均值类指标会被拉偏。 - 单位不统一:
vol是股、price是元、float_share是万股。做市值或换手类聚合计算前先统一单位,否则差 1 万倍的错误很难排查。 - 金额下限过滤:样例里
123039.SZ竞价金额只有 2395 元,这类流动性极差的标的会污染排序,建议设一个最低amount阈值(比如 500 万)再进候选池。
从单日快照到按日回补
单次调用跑通之后,需求自然变成两个:盘前每天自动抓当日快照,盘后按日回补历史。全市场单日约 6500 行,一次能拉完;跨日回补就必须按日循环。
import time import pandas as pd import tushare as ts FIELDS = "ts_code,trade_date,vol,price,amount,pre_close,turnover_rate,volume_ratio,float_share" def fetch_auction_days(pro, days: list[str], fields: str = FIELDS, pause: float = 0.3) -> pd.DataFrame: """days 为 YYYYMMDD 交易日列表;按日循环 + 限速避免触发限流""" frames = [] for day in days: df = pro.stk_auction(trade_date=day, fields=fields) print(f"{day}: {len(df)} rows") frames.append(df) time.sleep(pause) return pd.concat(frames, ignore_index=True) def trading_days(start: str, end: str) -> list[str]: """用 trade_cal 生成交易日序列,自动跳过周末与节假日""" cal = pro.trade_cal(exchange='SSE', start_date=start, end_date=end, is_open='1') return sorted(cal['cal_date'].tolist()) hist = fetch_auction_days(pro, trading_days('20250201', '20250228'))想更细,可以在循环里对ts_code逐个拉取,同一套函数直接复用于自选池扫描。
交易日历用 Tushare 技能里的 trade_cal 文档 即可,仓库预检逻辑在 agent/src/preflight.py 处理 Token 连通性检查。往打板策略方向走,stk_auction和 涨跌停和炸板数据(limit_list_d,提供封单金额fd_amount、炸板次数open_times)、涨停股票连板天梯(limit_step)天然配套:竞价截面出候选池,昨日涨停统计做晋级筛选;而 股票开盘集合竞价数据(stk_auction_o)与 股票收盘集合竞价数据(stk_auction_c)负责盘后历史回测,三者构成竞价数据的完整闭环。
落地方向与避坑清单
基于字段组合,四个可以直接动手的方向:
- 竞价量比选股:
volume_ratio > 1.5且竞价高开幅度可控(price对pre_close的涨幅落在目标区间),抓资金抢筹信号。 - 资金强度排序:按
amount降序看全市场竞价成交分布,识别当日主攻方向;turnover_rate高开低走的标的警惕竞价出货。 - 打板候选预筛:对昨日涨停股(
limit_list_d)在 9:25–9:29 窗口内扫描竞价量比与高开幅度,配合limit_step连板数做晋级预判。 - 微结构因子入库:把竞价
amount占全日成交比例、竞价均价price与开盘后价位的缺口加工成因子,接入回测框架。
避坑清单:
- ⚠️ 当日数据只在 9:25–9:29 可取,盘前定时任务应锚定 9:25 之后触发,错过即等下一交易日。
- 单次最大 8000 行:单日全市场一次拉完没问题,历史回补务必按日拆分,避免静默丢行。
- 权限独立:本接口是单独开权限的数据,已开通股票分钟权限的账号自动获得,无权限调用会直接返回权限类错误。
- ETF 的
turnover_rate、volume_ratio是 NaN,聚合前先过滤或补齐。 - 单位:
vol为股、price为元、float_share为万股,聚合计算前先统一。 - 低流动性标的(竞价金额几千元级别)建议用
amount下限过滤后再进排序。
下一步很明确:先跑通单日全市场快照,确认返回 6500 行左右的量级,再叠加量比阈值、竞价金额下限和高开幅度过滤;然后按日回补一个月的竞价数据,落成一张可回测的竞价因子表。
【免费下载链接】Vibe-Trading"Vibe-Trading: Your Personal Trading Agent"项目地址: https://gitcode.com/GitHub_Trending/vi/Vibe-Trading
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考