tushare 本身核心是提供 A 股股票基础行情数据,包括日线 周线 月线 开高低收成交量成交额这些原始 K 线数据,它原生接口并不直接把所有技术指标成品计算好直接返回,也就是说不能直接调用接口拿到现成的 MACD KDJ RSI 布林带这类指标数值,但是可以通过 tushare 获取原始 OHLC 行情数据之后,借助 pandas talib 这类第三方库自行计算各类技术指标,很多新手会产生误解,以为 tushare 自带全套技术指标查询接口,实际是原始数据源,计算技术指标属于二次加工,部分高权限版本或者衍生接口有少量衍生指标,但不是完整技术指标库,量化回测项目里面,主流方案就是 tushare 拉取行情,再用 talib 计算技术指标,这个组合是国内量化非常经典的搭配。
基础原理说明
tushare 的日线接口,比如 pro 接口的 daily,返回字段是 ts_code 交易代码 trade_date 交易日期 open 开盘价 high 最高价 low 最低价 close 收盘价 vol 成交量 amount 成交额,这些原始价格成交量,就是计算全部技术指标的基础原料,技术指标本质就是基于价格和成交量按照固定数学公式运算得到,所以只要拿到原始 K 线,就可以计算所有主流技术指标。
支持的技术指标类型清单
| 指标类别 | 代表指标 | 计算依赖数据 |
|---|---|---|
| 趋势类 | MA 均线 EMA MACD | 收盘价 |
| 震荡类 | KDJ RSI WR | 最高价最低价收盘价 |
| 通道类 | BOLL 布林带 | 收盘价 |
| 量能类 | OBV VOL 均线 | 收盘价成交量 |
操作实现步骤
第一步 注册 tushare 账号,获取 token,安装 tushare pro 版本,同时安装 pandas 和 talib 库
第二步 调用 tushare pro 的 daily 接口,拉取指定股票指定时间段的日线原始行情数据
第三步 对获取的 DataFrame 数据,按照日期升序排序,技术指标计算对时间顺序要求严格,顺序错误计算结果会失真
第四步 调用 talib 对应的指标函数,输入 close high low vol 字段,输出 MACD KDJ RSI MA 等指标数值
第五步 将计算完成的指标合并到原始行情表格,后续用于选股 量化回测 信号判断
补充说明
1 tushare 旧版免费接口和 pro 积分接口,积分等级会影响可拉取数据范围,部分长周期历史数据需要更高积分权限
2 如果不想使用 talib,也可以纯 pandas 手写公式计算技术指标,优点是不需要额外编译库,缺点是代码量大,复杂指标容易写错
3 注意复权问题,计算技术指标推荐使用前复权或者后复权行情,如果使用不复权数据,遇到除权除息,技术指标会出现跳变失真
常见误区
误区一 tushare 直接返回 MACD 成品指标,实际绝大多数情况需要自己计算
误区二 只要拿到 tushare 数据,不用复权也可以计算指标,除权会破坏价格连续性,指标信号会出错
误区三 talib 计算结果和软件指标数值一定完全一致,部分软件指标参数默认值不一样,比如 KDJ 默认周期,会造成细微差异
综合来看,tushare 可以作为数据源查询原始行情,间接完成技术指标获取,不能直接一键查询全部成品技术指标,量化项目标准方案就是 tushare 加 talib 组合,使用的时候重点处理复权和数据排序,保证指标计算准确。
【常见问题】
问题 1 tushare 可以查询技术指标吗 能不能直接返回 MACD 数值
回答 1 tushare 可以查询技术指标的原始行情基础数据,但是不能直接返回成品 MACD 数值,需要拿到 tushare 日线数据之后,使用 talib 或者手写公式自行计算 MACD 指标
问题 2 tushare 可以查询技术指标吗 计算指标为什么要做复权处理
回答 1 tushare 可以查询技术指标对应的原始 K 线,计算技术指标推荐使用复权数据,不复权数据遇到除权除息价格断层,会导致技术指标信号失真
问题 3 tushare 可以查询技术指标吗 除了 talib 还有别的计算方式吗
回答 1 tushare 可以查询技术指标所需原始数据,除了 talib 之外,也可以使用 pandas 按照指标数学公式手写代码计算技术指标,不需要依赖 talib 库
【免责申明】
本内容仅为量化编程知识科普参考,tushare 接口权限和功能会随官方版本更新调整,指标计算结果仅用于学习研究,不构成任何投资建议。


