使用
1. 下载并构建 bundle
设置 tushare token(注册):
export TUSHARE_TOKEN="your_token_here"
# Windows PowerShell
$env:TUSHARE_TOKEN = "your_token_here"
全量下载 + 构建(首次运行)
tushare-downloader --token $TUSHARE_TOKEN \
--start-date 20170101 --end-date 20260720 --phase build
增量更新(日常使用)
tushare-downloader --token $TUSHARE_TOKEN --incremental
增量模式先下载新 CSV(tushare 天然增量),再增量构建 HDF5。
CLI 高级选项
# 自定义路径(不写 ~/.rqalpha/)
tushare-downloader --token $TUSHARE_TOKEN --incremental \
--csv-dir ./tushare_data --bundle-path ./bundle
# 只下载不构建
tushare-downloader --token $TUSHARE_TOKEN --phase download
# 只构建(假设 CSV 已存在)
tushare-downloader --token $TUSHARE_TOKEN --phase build
# 完整参数
tushare-downloader --help
默认输出位置
可通过 CLI flag 或构造参数覆盖:
资源 |
默认路径 |
覆盖方式 |
|---|---|---|
HDF5 bundle |
|
|
CSV 缓存 |
|
|
2. 在 RQAlpha config 中启用 mod
# your_config.yml
mod:
tushare-data:
enabled: true
priority: 10
或代码中:
import rqalpha_mod_tushare_data
mod = rqalpha_mod_tushare_data.load_mod()
# RQAlpha 会自动调用 mod.start_up(env, mod_config)
3. 直接使用 patch(不通过 RQAlpha)
rqalpha-mod-tushare-data 暴露了 apply_rqdatac_patch,可以直接在自定义脚本中
接管 rqdatac 命名空间。~ 会被自动展开为用户主目录:
from rqalpha_mod_tushare_data.patches import apply_rqdatac_patch
apply_rqdatac_patch("~/.rqalpha/bundle")
import rqdatac
df = rqdatac.get_price("000001.XSHE", "2024-01-01", "2024-01-31")
print(df)
4. 直读 BaseDataSource
BaseDataSource 是 RQAlpha 内部回测引擎读数据的那层。不通过 mod.start_up,
可以直接实例化它(仅需要一个带 data_bundle_path 等字段的 config 对象):
import os
from rqalpha.data.base_data_source import BaseDataSource
class _Config:
"""Minimal config stub for BaseDataSource.
BaseDataSource only reads `data_bundle_path` / `future_info` / `start_date` /
`benchmark` — see `rqalpha.interface.AbstractDataSource` for the full contract.
"""
pass
config = _Config()
# BaseDataSource 不会自动展开 ~,需要显式调用 expanduser
config.data_bundle_path = os.path.expanduser("~/.rqalpha/bundle")
config.future_info = {}
config.start_date = "2024-01-01"
config.benchmark = "000300.XSHG"
ds = BaseDataSource(config)
inst = ds.get_instruments("000001.XSHE")
print(inst.order_book_id, inst.type) # 000001.XSHE CS
完整示例参考 test/test_base_data_source.py(覆盖 get_instruments /
get_bar / history_bars / get_dividend / 指数工具等所有公开方法)。
测试
20 个独立测试脚本,共享 test/_helpers.py 的 PASS/FAIL/SKIP 工具:
# Windows PowerShell
$env:PYTHON_JIT = "0"
# 全部 20 个测试
Get-ChildItem test\test_*.py | ForEach-Object {
& .venv\Scripts\python.exe $_.FullName
if ($LASTEXITCODE) { Write-Host "FAIL: $_"; break }
}
测试覆盖:
包结构 +
load_mod+AbstractMod子类生命周期签名(
start_up/tear_down)pandas 2.x 兼容 shim(3 个 monkey-patch)
共享状态 + h5 工具
PATCH_MAP 完整性(40 项 rqdatac 函数)
各数据域补丁(instruments / calendar / price / financial / industry / factor / stubs)
apply_rqdatac_patch端到端 + 边界BaseDataSource 直读
RQAlpha mod 全链路集成
下载器 mod 包结构 + CLI argparse
setup.py结构验证(含 cmdclass sdist 重命名钩子)默认路径检测
故障排查
401 / 403 错误
Tushare token 错误或积分不足。检查 ~/.rqalpha/tushare_data/ 里 CSV 是否生成,部分
API(如 fina_indicator_vip)需要 5000 积分以上。
RQAlpha 找不到 mod
确认 rqalpha-mod-tushare-data 安装到与 rqalpha 相同的 Python 环境:
python -c "import rqalpha, rqalpha_mod_tushare_data; print(rqalpha.__file__); print(rqalpha_mod_tushare_data.__file__)"
两个路径应该在同一 site-packages 下。