中国市场适配 · 名录实测

investpy 取 A 股与港股:country 参数、代码形态与名录实测

该库的名录里确实有中国与香港,而且可以离线枚举出来。但「名录里有」和「能取到行情」是两件事,而且 Investing.com 的代码体系与上交所/深交所/港交所的代码并不一一对应。这一页把能确认的部分说清楚,把不能确认的部分标出来。

实测时间:2026-10-12中国 3339 条 / 香港 1129 条参数:country='china' / 'hong kong'行情端点:403

A 股与港股参数

country='china'本机实测 3339 条代码
country='hong kong'本机实测 1129 条代码
取值来源COUNTRY_FILTERS,全小写
行情端点本机 403,名录可拿行情拿不到
依据本机 get_stocks_list 实测与源码 utils/constant.py 整理的参数对照示意。「名录可枚举」与「行情可获取」是两件事,本页把二者分开陈述。
investpy · Measured

中国与香港:本机名录实测结果

下面每一行都是本机跑出来的真实读数,可以直接用同样的代码在你的环境复现。

项目调用本机实测结果说明
中国股票名录get_stocks_list(country='china')3339 条前几条为 601088、601988、600688、600028、600645
香港股票名录get_stocks_list(country='hong kong')1129 条代码形如 0001、0002、0003、0004、0005(含前导零)
中国基金名录get_funds_list(country='china')4413 条在全球基金名录中排第六
中国指数名录get_indices_list(country='china')819 条在全球指数名录中排第三
country 合法性get_stock_countries()91 个国家/地区,含 china 与 hong kong全部小写,多词用空格分隔
联网取行情get_stock_historical_data(stock='600519', country='china', …)失败:ERR#0015: error 403与本机其他市场的结果一致

可用的部分值得用起来:3339 与 1129 这两份代码清单本身就有价值——可以做代码校验、批量任务分片、离线资产字典。只是不要把它当成「能顺便取到行情」的承诺。

investpy · Parameters

country 参数与代码形态怎么对?

Investing.com 的标识体系与你熟悉的交易所代码不是同一套。下表把常见混淆点列清楚。

你以为的investpy / Investing.com 的实际做法注意点
用 'CN' 表示中国要用完整小写国名 'china'取值来自 COUNTRY_FILTERS,不是 ISO 国家码
用 'HK' 表示香港要用 'hong kong'(中间有空格)写成 'hongkong' 查不到,会抛 ERR#0129
港股代码 700名录里是 '0700',带前导零的四位字符串补零错误会导致「名录里有但匹配不上」
A 股代码是 6 位数字名录中的中国股票代码确实为 6 位字符串必须以字符串传参,传数字会丢前导零或触发类型校验
一个代码对应一个资产同一公司在不同市场各有独立条目与内部 ID入库时建议把「代码 + 国家」作为联合主键
交易所代码就是投资标的标识搜索结果里另有 tag(页面路径)与 id_(内部 ID)三者语义不同,不要互相替代
investpy · Gotchas

A 股特有的坑:这些不是 investpy 的错

即使端点可用,用海外数据源做 A 股研究也有几类固有差异。提前知道,能省掉大量对账时间。

差异点国内常见口径海外数据源常见口径对研究的实际影响
涨跌停主板 ±10%、ST ±5%、科创/创业板 ±20%数据源通常不提供标记无法从价格序列反推是否触板,需自行按规则计算
停牌停牌期间不产生 K 线同样缺失,但缺失原因不标注用日期差推断交易日数量会出错
复权研究习惯用前复权官方未声明复权口径分红除权前后价格序列会出现跳变,回测结果失真
T+1当日买入不可当日卖出数据层不体现交易规则回测若不建模会高估策略收益
交易日历含中国特有假期安排取决于数据源的日历跨市场对齐时会出现「有数据但市场休市」的错觉
成交量单位股 / 手 混用数据源单位不标注跨市场比较成交量前必须先统一单位

提示:上表中的「海外数据源常见口径」是基于公开资料的一般性描述,本站未逐一比对具体数据源的行为,也不针对 investpy 单独下结论。做正式研究前,请拿你的数据源与交易所公告或权威行情做一次抽样对账。

investpy · Trace

一次完整的 A 股取数会经过哪些步骤?

把流程写出来,就能看出哪一步在本机环境下会失败——以及哪几步在你换成别的数据源后仍然要自己做。

  1. 确认 country 取值

    investpy.get_stock_countries() → 预期输出包含 'china' 与 'hong kong'(共 91 项)。这一步离线,本机实测成功。

  2. 拿到候选代码清单

    investpy.get_stocks_list(country='china') → 预期输出长度 3339 的字符串列表。同样离线,本机实测成功。

  3. 按名称或代码定位到具体资产

    search_quotes(text='600519', products=['stocks'], countries=['china'], n_results=1) → 本机实测抛 ERR#0015: error 403。这一步开始需要联网,也是断点所在。

  4. 取历史行情

    get_stock_historical_data(stock='600519', country='china', from_date='01/01/2023', to_date='01/01/2024') → 本机实测同样 403。即便端点恢复,也要自己处理复权、停牌与涨跌停标记。

  5. 做数据校验再入库

    抽几个交易日与交易所/权威行情对账,确认复权口径、成交量单位与交易日历一致,再进入回测。这一步任何数据源都不能省。

investpy · Alternatives

A 股场景的替代数据源怎么选?

如果目标是 A 股研究,结论很直接:investpy 不是合适的选择。下面是按「需要什么前置条件」整理的对照。

方案前置条件适合的 A 股场景注意点
AkSharepip 安装,无需 Key行情、基本面、宏观、基金等广覆盖取数接口随上游页面变化,需关注版本更新
Tushare Pro需注册并申请 Token结构化行情与财务数据,接口规范稳定不同接口有积分/权限门槛,需先确认可用范围
Baostockpip 安装,无需 Key历史行情与复权数据更新频率与覆盖范围需自行验证
交易所 / 券商接口需要账户或机构权限对时效与准确性要求高的场景接入成本最高,但数据来源最权威
本机免部署技能路线安装 EasyClaw 后按任务选技能不写代码完成取数、分析与出图部分技能需自备 Key(如 Tushare Token、问财 Key),详见对比页
investpy—仅名录枚举(A 股 3339 条代码)行情端点在本机实测不可用,不建议作为 A 股数据通道

FAQ

investpy 常见问题:还能装吗、还能取数吗、换什么

investpy 能取 A 股数据吗?
分两层。名录层可以:本机实测 get_stocks_list(country='china') 返回 3339 条 A 股代码,完全离线可用。行情层在本机不可用:get_stock_historical_data(stock='600519', country='china', …) 返回 ERR#0015: error 403。如果你的目标是 A 股行情,建议直接看本页的替代方案对照,不要在这个库上投入时间。
country 参数应该写 'china' 还是 'China'?
两者都可以。函数会对入参执行 lower().strip() 归一化再查枚举表,因此 'China'、' china ' 都能命中。但要注意多词国家名必须带空格:香港要写 'hong kong',写成 'hongkong' 会抛 ERR#0129。以源码中的 COUNTRY_FILTERS 为准。
港股代码为什么要写成 '0700'?
因为随包名录里的香港股票代码是带前导零的四位字符串(0001、0002…0700)。如果你用整数 700 去匹配,会出现「名录里有但找不到」的情况。做代码匹配时统一用字符串,并保持位数一致。
investpy 拿到的 A 股数据是复权的吗?
官方未声明复权口径,源码中也没有复权处理逻辑,数据原样取自 Investing.com 页面。因此不能假定是前复权或后复权。港股与 A 股都存在分红除权导致的序列跳变,做回测前必须自己验证。逐项检查方法见数据口径审计页。
名录里的 3339 条 A 股代码是全部 A 股吗?
不是。这是 investpy 1.0.8 随包的名录快照(发布于 2022-01-24),既不会自动更新,也不保证覆盖当时全部上市标的。A 股(含北交所)实际数量请以交易所官方数据为准。把它当作一份历史快照使用,并在生产环境定期核对。
要取 A 股数据,用 EasyClaw 的技能行不行?
可以作为一条路线,但要注意前置条件:本机技能目录中可见的金融数据类技能里,AkShare 相关技能无需 Key,Tushare 需要 Token,问财/iFinD 类需要对应的 API Key 或授权。本站没有验证你本机的授权状态,具体以各技能自身的说明为准;investpy 与本机技能之间没有已证实集成。

A 股数据拿到之后,能不能直接进回测?

还不行。复权口径、停牌缺失、涨跌停标记、T+1 规则都要自己补。口径审计页给出了一份逐项检查清单。