docs/TUSHARE_STOCK_LIST_GUIDE.md
从 Tushare Pro 获取 A股、港股、美股列表信息,保存为 CSV 文件到本地。
在项目根目录的 .env 文件中添加 Tushare Token:
TUSHARE_TOKEN=你的tushare_token
获取 Token:访问 Tushare Pro 注册并获取
python3 scripts/fetch_tushare_stock_list.py
如需针对 A 股名称状态做修正,可以加上 --a-rk,脚本会保持 stock_basic 作为基础来源,再用 rt_k 对带 XD、XR、DR、N、C 前缀的名称进行回填,并覆盖输出到 data/stock_list_a.csv:
python3 scripts/fetch_tushare_stock_list.py --a-rk
数据将保存到 data/ 目录:
data/
├── stock_list_a.csv # A股列表(--a-rk 时为修正后名称)
├── stock_list_hk.csv # 港股列表
├── stock_list_us.csv # 美股列表
└── README_stock_list.md # 数据说明文档
✅ 自动分页:美股数据自动分页读取(每页5000条) ✅ 智能限流:每次请求之间随机休息5-10秒 ✅ 错误处理:单个市场失败不影响其他市场 ✅ 进度提示:实时显示读取进度 ✅ 自动文档:生成详细的数据说明文档
| 市场 | 接口 | 积分要求 | 数据量 |
|---|---|---|---|
| A股 | stock_basic | 2000积分 | ~5000只 |
| 港股 | hk_basic | 2000积分 | ~2000只 |
| 美股 | us_basic | 120试用/5000正式 | ~10000只 |
执行 --a-rk 时,这个文件会写入修正后的 A 股名称。
ts_code,symbol,name,area,industry,market,exchange,list_date,...
000001.SZ,000001,平安银行,深圳,银行,主板,SZSE,19910403,...
600519.SH,600519,贵州茅台,贵州,白酒,主板,SSE,20010827,...
ts_code,name,fullname,market,list_date,trade_unit,curr_type,...
00700.HK,腾讯控股,腾讯控股有限公司,主板,20040616,100,HKD,...
00005.HK,汇丰控股,汇丰控股有限公司,主板,19750401,100,HKD,...
ts_code,name,enname,classify,list_date,...
AAPL,苹果,Apple Inc.,EQT,19801212,...
TSLA,特斯拉,Tesla Inc.,EQT,20100629,...
BABA,阿里巴巴,Alibaba Group,ADR,20140919,...
import pandas as pd
# 读取 A股
a_stocks = pd.read_csv('data/stock_list_a.csv')
print(f"A股数量: {len(a_stocks)}")
# 筛选主板股票
main_board = a_stocks[a_stocks['market'] == '主板']
print(f"主板数量: {len(main_board)}")
# 查找特定股票
stock = a_stocks[a_stocks['ts_code'] == '600519.SH']
print(stock[['name', 'industry', 'list_date']])
推荐直接使用一键刷新脚本,它会默认在抓取 A 股时使用 --a-rk,然后生成并同步自动补全索引:
pip install -r requirements.txt
python3 scripts/refresh_stock_index.py
生成自动补全索引依赖 pypinyin 写入中文股票的完整拼音和拼音首字母字段;缺少该依赖时脚本会直接失败,避免生成无法支持拼音搜索的降级索引。
如果你只想单独更新 CSV,可以先抓取数据:
python3 scripts/fetch_tushare_stock_list.py --a-rk
如果已经有新的 CSV,只想重新生成索引:
python3 scripts/generate_index_from_csv.py --test # 先测试
python3 scripts/generate_index_from_csv.py # 确认后生成
新版客户端默认会从项目 GitHub main 分支读取最新的 apps/dsa-web/public/stocks.index.json,并缓存到本地 data/cache/stocks.index.json。前端仍访问本地 /stocks.index.json,不需要直接跨域请求 GitHub。
远程索引地址、检查频率和网络超时时间为系统内置值,不提供用户配置项;用户只需要决定是否启用:
STOCK_INDEX_REMOTE_UPDATE_ENABLED=true
默认开启时,系统最多每 48 小时检查一次更新。若运行环境无法访问 GitHub raw、请求超时、返回内容不是合法股票索引,应用会保留已有缓存;如果没有远程缓存,则继续使用随应用打包的内置索引。远程更新失败不会阻断 WebUI 启动、股票自动补全或分析流程;连续失败达到系统内置阈值后,会在本进程内暂停重试直到下一轮 48 小时窗口。
main 上的索引更新。后续可通过 GitHub Actions workflow 自动化刷新与提交 PRA: 请在 .env 文件中配置 TUSHARE_TOKEN=你的token
A:
A:
A: 对维护者本地 CSV 与仓库索引,建议每三天更新一次并提交到仓库;遇到摘帽/更名等高影响事件可临时刷新。未来可通过 GitHub Actions workflow 自动化刷新与提交 PR。对普通本地客户端,系统默认最多每 48 小时从 GitHub main 检查一次最新索引。
A: 不会。远程索引更新是 best-effort:失败时会继续使用已有远程缓存或随应用打包的内置索引;如果索引完全不可用,Web 自动补全会进入现有 fallback,股票代码仍可手动输入。