Vibe-Trading × Tushare stk_auction:A股集合竞价数据与打板选股的从零到可用实战指南
2026/9/17 11:14:12 网站建设 项目流程

Vibe-Trading × Tushare stk_auction:A股集合竞价数据与打板选股的从零到可用实战指南

【免费下载链接】Vibe-Trading"Vibe-Trading: Your Personal Trading Agent"项目地址: https://gitcode.com/GitHub_Trending/vi/Vibe-Trading

9:25,开盘集合竞价的撮合结果出来,个股全天的开盘定位已经定下。做打板、做竞价抢筹的人,第一眼看的就是这份当日竞价成交快照。本文带你把 Vibe-Trading 仓库里的 Tushare 接口stk_auction从零跑通:怎么装依赖、配 Token、拉单日数据、写批量采集脚本,最后把字段变成打板筛选逻辑。

先拿到数据:当日竞价数据怎么拿,最小可运行路径

stk_auction的数据窗口是每天 9:25–9:29,这个时段能取到当日全市场个股和 ETF 的集合竞价成交。拿数据只有三步:

  1. 装依赖(推荐清华镜像源)并配置 Token;
  2. 初始化pro接口实例;
  3. 一行调用取当日快照。

Token 配置:

pip install tushare -i https://pypi.tuna.tsinghua.edu.cn/simple export TUSHARE_TOKEN=your_token

在 Vibe-Trading 里,TUSHARE_TOKEN通过环境变量 schema 统一管理,字段定义在 env_schema.py,预检逻辑在agent/src/preflight.py。官方示例脚本 stock_data_example.py 展示了标准初始化方式,初始化后一行调用即可:

import os import tushare as ts token = os.getenv('TUSHARE_TOKEN') or ts.get_token() pro = ts.pro_api(token) # 取 2025-02-18 当日集合竞价成交,显式指定字段可减小返回体 df = pro.stk_auction( trade_date='20250218', fields='ts_code,trade_date,vol,price,amount,turnover_rate,volume_ratio', ) print(df.head())

返回就是 pandas DataFrame。不传任何参数时,返回当日全市场竞价成交;传trade_date取指定日期。

数据字典:stk_auction 的输入参数与输出字段一次看懂

输入参数(4 个全可选,可自由组合)

名称类型必选描述
ts_codestrN股票代码(如600071.SH300053.SZ
trade_datestrN交易日期(YYYYMMDD 格式)
start_datestrN开始日期
end_datestrN结束日期

组合规则:不传参数取当日全市场(单次最多8000 行);传trade_date取指定日;传start_date+end_date按区间拉取(受8000 行上限约束,建议按日循环);传ts_code只扫单只标的。

输出字段(9 个)

名称类型描述
ts_codestr股票代码
trade_datestr数据日期
volint成交量(股)
priceint成交均价(元)
amountfloat成交金额(元)
pre_closefloat昨收价(元)
turnover_ratefloat换手率(%)
volume_ratiofloat量比
float_sharefloat流通股本(万股)

字段间换算关系,直接可用于策略计算:

  • amount ≈ vol × price,可用来校验数据自洽;
  • volume_ratio= 当日竞价成交量均量 / 过去若干日同期均量,是判断资金抢筹意愿的核心指标;
  • turnover_rate反映竞价阶段筹码换手强度,可辅助区分竞价抢筹 vs 竞价出货。

用 2025-02-18 的官方样例看三行,事实一目了然:

ts_codetrade_datevolpriceamountturnover_ratevolume_ratio
600071.SH20250218870023.240202188.000.0030900.150628
159558.SZ20250218187001.21122645.70NaNNaN
123039.SZ2025021820119.7772395.54NaNNaN

注意:ETF 标的(159/5 开头代码)不返回turnover_ratevolume_ratio,基金没有传统意义的换手率概念,样例里就是 NaN;处理时按代码段过滤或用fillna(0)兜底。样例里123039.SZ竞价金额仅 2395.54 元,属于流动性极差的标段,研究时建议设金额下限。

相邻接口:当日快照 vs 盘后历史,别混用

仓库"打板专题数据"与"特色数据"下共三套竞价接口,容易混淆:

接口时效数据内容权限
stk_auction当日 9:25–9:29 可获取当日个股/ETF 竞价成交(vol、price、amount、量比、换手率)单独开权限;已开通股票分钟权限的用户自动获得
stk_auction_o每天盘后更新开盘 9:30 集合竞价 OHLCV + vwap开通股票分钟权限后可用
stk_auction_c每天盘后更新收盘 15:00 集合竞价 OHLCV + vwap开通股票分钟权限后可用

分工很清晰:stk_auction用于盘中决策(盘前抢筹、竞价异动捕捉),stk_auction_o/stk_auction_c用于盘后复盘(历史因子回测)。两个历史接口单次最大返回10000 行,同样支持ts_code/trade_date/start_date/end_date四个入参,可与本文采集框架共用。

从字段到信号:把竞价数据变成打板选股的 4 个方向

字段到手,落地就四条流水线,每条都是"字段组合 + 一个判断阈值":

  1. 竞价量比放大 + 高开幅度可控volume_ratio显著放大(如> 1.5),同时用(price - pre_close) / pre_close计算高开幅度并设上限,量比放大而高开不过激的标的最像资金抢筹信号。
  2. 竞价金额排序看主攻方向:按amount排序观察全市场竞价成交额分布,可设5000 万作为"高关注度"过滤线;turnover_rate高开低走的标的要警惕竞价出货。
  3. 昨日涨停股竞价预筛:与打板专题的 涨跌停和炸板数据(limit_list_d,提供首封时间、炸板次数、连板数limit_times、封单金额fd_amount)联动——在 9:25–9:29 窗口内扫描昨日涨停股的竞价量比与高开幅度,配合连板天梯做晋级预判。
  4. 微结构因子入库:把"竞价成交金额占全日成交比例""竞价价格 vs 开盘后价格缺口"加工成因子,接入 Vibe-Trading 的因子回测与策略研究框架,与盘后历史的stk_auction_o/stk_auction_c拼出完整竞价生命周期。

工程细节:8000 行上限下的竞价量比批量采集

三个工程点,跑批量前必须知道:

  1. 单次上限 8000 行:全市场单日约6500 行,目前一次能拉完;数据量增长后按日期或代码分批循环,避免静默丢行。
  2. 权限与限流:该接口为单独开权限数据,已开通股票分钟权限的用户自动获得,无权限调用会返回权限类错误;循环请求建议每次间隔约0.3 秒,避免触发限流。
  3. 单位坑vol单位是price单位是float_share单位是万股,做金额类聚合前统一单位,否则差 3 个数量级。

可直接运行的按日循环采集函数:

import time import pandas as pd def fetch_auction_between(pro, start_date, end_date, 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_date while day <= end_date: frames.append(pro.stk_auction(trade_date=day, ts_code=ts_code, fields=fields)) print(f"{day}: {len(frames[-1])} rows") day = dateu.get_next(day) # 自动跳过周末与节假日 time.sleep(pause) # 控制请求频率,避免触发限流 return pd.concat(frames, ignore_index=True) hist = fetch_auction_between(pro, '20250201', '20250228', ts_code='600071.SH')

dateu.get_next依赖交易日历跳节假日;需要更精确控制时,可结合 交易日历(trade_cal)先生成交易日序列再循环。

避坑自查清单:取 stk_auction 数据前必过的 6 问

📌 跑之前把这 6 个问题过一遍:

  1. 错过 9:25–9:29 窗口怎么办?当日数据仅该时段可取,错过只能等下一交易日。盘前定时任务(cron 或 CI 定时器)应锚定9:25 之后、9:30 连续竞价开始前触发。
  2. 代码后缀怎么区分市场?.SH上交所、.SZ深交所、.BJ北交所;ETF 混在同一个 DataFrame 里(如159558.SZ),只研究个股时先按后缀过滤。
  3. 部分行为何出现 NaN?turnover_ratevolume_ratio对 ETF 不返回,属正常现象;统计前按代码段过滤或fillna(0)兜底,不要把 NaN 当成 0 参与量比排序。
  4. 无权限调用会怎样?返回权限类错误而非空数据。本接口是单独开权限的数据,已开通股票分钟权限的用户自动获得,否则需先在 Tushare 平台申请。
  5. 为什么单次最多 8000 行?接口硬性限量。全市场数据量接近上限时,按日或按代码分批循环,别让截断悄悄发生。
  6. 单位对了吗?vol股、price元、float_share万股。竞价金额聚合、竞价占全日成交比例这类计算,先把单位统一再动手。

写在最后

stk_auction是 A 股打板与竞价研究中唯一的"当日竞价实时截面"数据源:8000 行单次上限、4 个灵活入参、9 个输出字段,既撑得起盘前全市场快照,也能按代码扫自选池。下一步就两件事:先跑通单日数据(trade_date+fields各传一次),再依次叠加量比> 1.5、竞价金额> 5000 万、高开幅度阈值这三层过滤,你就有了一套可回测的竞价因子。接口总入口参考 Tushare 技能总览,其余入参细节以仓库内文档为准。

【免费下载链接】Vibe-Trading"Vibe-Trading: Your Personal Trading Agent"项目地址: https://gitcode.com/GitHub_Trending/vi/Vibe-Trading

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询