本篇重点:本篇讲 V3 新增的四个数据源各能下什么、怎么选,以及每天自动补数据和扫描补缺口。
1 数据源一览
打开「数据管理」,工具栏左边一排就是各个数据源的入口:

BaoStock 和 Tushare 的用法和 V2 一样,见 1.4。本篇讲另外四个。各平台能用哪些:
| 数据源 | Windows | macOS | Linux |
|---|---|---|---|
| tx、同花顺、BaoStock、Tushare | 界面 + 命令行 | 界面 + 命令行 | 命令行 |
| HTTP 桥接(导入数据的一方) | 界面 + 命令行 | 界面 + 命令行 | 命令行 |
| HTTP 桥接(提供数据的服务) | 可以(需 miniQMT) | 不可以 | 不可以 |
| miniQMT | 可以(需 miniQMT 已登录) | 不可以 | 不可以 |
各数据源能下什么:
| tx | 同花顺 | HTTP 桥接 / miniQMT | BaoStock | Tushare | |
|---|---|---|---|---|---|
| 账号 | 不需要 | API Key(免费申领) | miniQMT 已登录 | 不需要 | Token 和积分权限 |
| 日线 | 有 | 有(只有日线) | 有 | 有 | 有 |
| 5 分钟 | 约近半年 | 无 | 有 | 有 | 需权限 |
| 1 分钟 | 约近 1 个月 | 无 | 有 | 无 | 需权限 |
| tick | 无 | 无 | 近 31 天 | 无 | 无 |
| 复权 | 5 种 | 不复权、前复权、后复权 | 5 种 | 不复权、前复权、后复权 | 不复权、前复权、后复权 |
| 深市 ETF、可转债 | 不支持 | 以实际返回为准 | 支持 | 不支持 | 需相应权限 |
「5 种」复权是不复权、前复权、后复权、等比前复权、等比后复权。
2 tx:免费、不用账号
tx 的数据取自财经网站的公开网页接口,不需要注册,适合先把日线下起来。软件里会显示一行说明:数据仅供个人学习研究使用,用户自行承担使用责任。
2.1 能下什么
- 周期:日线、1 分钟、5 分钟。1 分钟线只有约近 1 个月,5 分钟线约近半年,以接口实际返回为准,长历史分钟线不能靠它。
- 品种:沪深京股票、沪深指数(000 开头的沪市指数、399 开头的深市指数)、沪市 ETF(5 开头)。深市 ETF/LOF(15、16 开头)和可转债不支持;北交所只有日线。
- 当天数据:只导入已收盘的交易日,当天的数据 16:00 以后才有。
- 成交额:日线有成交额;分钟线的成交额是空的。
2.2 在界面里下载
点工具栏「tx数据导入」,打开「从tx数据源导入数据」窗口。

- 数据目录:默认是当前的数据目录,不要改。改成别的目录后下载的数据,回测读不到(回测只读「设置 → 数据设置」里的路径)。
- 股票池选择:和 BaoStock 一样,可以选预设板块、从文件导入或手动输入(见 1.4)。股票池里不要有深市 ETF 和可转债,否则点「开始下载」会弹出「无法开始下载」,需要先从股票池里去掉它们。
- 数据周期设置:日线默认勾选、近 10 年;1 分钟、5 分钟默认不勾,勾上后起始日期自动是近 1 个月、近 6 个月。
- 价格字段:原始价必存;前复权、后复权默认勾选;等比前复权、等比后复权默认不勾,需要时勾上。
- 点「开始下载」,进度和日志显示在下方。
回测要用沪深 300 作基准。界面里用 tx 下载不会自动补基准;命令行下载会自动补,但补的只有不复权价。回测用前复权时,基准也要有前复权数据,否则开始回测前会提示「关键回测数据缺失」。稳妥的做法是单独下一次:股票池手动输入 000300.SH,勾上前复权(命令行 kh data download --source tx --stocks 000300.SH --adj front --start 20100101)。
2.3 用命令行下载
kh data download --source tx --stocks 600000.SH --period 1d,5m --adj front,back

- 不写
--start时日线从 2020-01-01 起下载;分钟线按接口能给的范围(上图 5 分钟线是近半年)。 - 命令行里 tx 默认不复权(其他数据源默认前复权),需要复权价要写
--adj。 - 命令行下载默认会顺带补沪深 300 基准,不需要可以加
--skip-benchmark。 - 分钟线的起始日期早于接口能给的最早日期时,会报
RETENTION_EXCEEDED,缩短区间,或者加--allow-gaps只下能拿到的部分。 --data-root <目录>可以下到另一个目录(不改全局设置),适合和已有数据对比。
2.4 常见报错
| 报错 | 原因和处理 |
|---|---|
UNSUPPORTED_SYMBOL | 代码不在支持范围(深市 ETF、可转债等),换数据源 |
NO_CLOSED_SESSION | 区间里没有已收盘的交易日,比如 16:00 前只下当天 |
RETENTION_EXCEEDED | 分钟线超出保留期,缩短区间或加 --allow-gaps |
NO_DATA | 没有返回数据:超出保留期、还没上市或品种不可用 |
RAW_PRICE_CONFLICT | 库里已有的原始价和 tx 不一致,不能直接给它配复权列。用 --data-root 下到独立目录 |
VOLUME_UNIT_CONFLICT | 要写入的数据声明的成交量单位不是「手」或成交额单位不是「元」,拒绝写入(旧库续写不会报这个错,只会标记「历史单位未核验」),见第 7.1 节 |
3 同花顺:官方开放平台,需要 API Key
同花顺数据走同花顺官方的金融数据开放平台(扶摇),需要先免费申领一个 API Key。目前只提供 A 股和指数的日线,复权有不复权、前复权、后复权三种。
3.1 配置 API Key
点工具栏「同花顺数据导入」,打开「同花顺数据导入(扶摇开放平台)」窗口。顶部「同花顺(扶摇)API Key 配置」:
- 点「免费申领 API Key ↗」,在打开的平台页面注册并申领 Key。
- 把 Key 粘贴到「API Key:」输入框,点「保存」,再点「测试连接」确认可用。

也可以在「设置 → 数据设置 → 同花顺(扶摇)接口配置」里填,或者用命令 kh config set ths_api_key <你的Key>。三处保存的是同一个设置。没配 Key 就点「开始导入」,会弹出「未配置同花顺 API Key」,问你是否去申领。调用次数等限制以平台规则为准。
3.2 下载
股票池、复权的用法和 tx 相同;周期只有日线,灰色强制勾选。注意两点:
- 指数要写全后缀:只写 6 位数字时,00 开头会被当成深市股票。沪深 300 要写
000300.SH,不能只写000300。 - 增量只往后补:不勾「强制覆写」时,只补库里最新日期之后的数据,中间缺的不回补。要补中间的缺口,勾「强制覆写」按区间重下。
命令行:
kh data download --source ths --stocks 600000.SH,000300.SH --period 1d --adj front
命令行不写 --start 时默认取近 3 年。Key 无效时报 AUTH_FAILED(「API Key 鉴权失败,请检查密钥是否有效」);访问太频繁时软件会自动等待重试。
4 HTTP 桥接:在 Mac、Linux 上用 miniQMT 的数据
miniQMT 只有 Windows 版。HTTP 桥接的做法是:在一台装了 miniQMT 的 Windows 电脑上开一个行情服务,Mac、Linux 或局域网里的其他电脑通过网络从它取数据,写进自己本机的数据库。这个服务只提供行情数据,不含任何交易功能。
Windows 电脑(miniQMT 已登录)→ 桥接服务(默认端口 8001)→ 局域网 → Mac / Linux 上的 V3 → 本机 DuckDB
4.1 在 Windows 上开服务
确保 miniQMT 已启动并登录,然后在终端运行:
kh bridge serve --host 0.0.0.0
- 默认只监听
127.0.0.1,只有本机能访问。要让局域网里的其他电脑访问,必须加--host 0.0.0.0。 - 第一次运行会自动生成一个随机 API Key 并打印出来,把它复制给客户端。之后会沿用这个 Key。
- 输出里的「客户端可用地址」就是客户端要填的服务地址,形如
http://192.168.x.x:8001。 - Windows 防火墙弹窗时,允许专用网络访问;没弹的话,需要手动放行 8001 端口。
- 按 Ctrl+C 或关掉终端窗口,服务就停了。查看服务状态用
kh bridge status。
4.2 在客户端导入
Mac 或 Windows 上:数据管理工具栏点「HTTP远程桥接」,打开「从桥接导入数据 - miniQMT 桥接」窗口。

- 「桥接服务配置」里填服务地址(例如
http://192.168.1.10:8001)和 API Key,点「测试连接」。 - 选股票池;周期可以多选,日线默认近 3 年,1 分钟、5 分钟默认近 1 年,tick 默认近 1 个月。
- 选复权方式(默认只勾不复权,可多选),点「开始导入」。开始前会先测一次连接,连不上就不会开始。
Linux 或命令行:
kh config set http_base_url http://192.168.1.10:8001
kh config set http_api_key <服务端打印的Key>
kh data download --source http --stocks 000001.SZ --period 1d,5m --adj none,front
4.3 连不上时
| 现象 | 处理 |
|---|---|
| 「无法连接到服务器」「连接超时」 | 服务端是否在运行、是否用了 --host 0.0.0.0、防火墙是否放行 8001、两台电脑是否在同一局域网 |
| 「连接失败: 403 Client Error: Forbidden」 | API Key 不对,重新复制服务端的 Key |
| 「服务地址格式无效」 | 地址要带 http:// 和端口号 |
kh bridge status 提示「返回的不是桥接服务的数据」 | 8001 端口被别的程序占用,用 --port 换一个端口,客户端地址也跟着改 |
5 miniQMT(Windows)
miniQMT 是券商提供的量化客户端。在 Windows 上,电脑里装有 miniQMT 并已登录时,V3 可以直接从它下载数据,周期有日线、1 分钟、5 分钟和 tick,复权 5 种都有。tick 只能取近 31 天。
5.1 在界面里下载
工具栏「MiniQMT导入」打开「MiniQMT历史行情导入」窗口,顶部显示 xtquant 的连接状态,未连接时先检查 miniQMT 是否已启动并登录。窗口有两个页签:

- 全量增量补充:扫描 13 个预设板块,缺什么补什么。日线默认近 10 年,1 分钟、5 分钟默认近 1 年,三者默认都勾;tick 默认不勾。点「开始扫描并补充」。
- 自定义补充数据:自己选股票池、周期和复权,还可以勾「同时补充日线指标(数据由 BaoStock 提供)」(「全量增量补充」页也有这个选项)。按钮同样是「开始扫描并补充」。
复权下方有一句提示:不同复权无法增量下载,需要新的复权方式时,勾「强制覆写」重新下载。
5.2 从 miniQMT 本地数据导入
如果 miniQMT 里早就下好了历史数据,可以点「全量增量补充」页底部蓝色的「从本地miniQMT数据导入」:不联网下载,直接读 miniQMT 本地缓存写进 DuckDB,速度快。读取的范围按页面上勾选的周期、日期和复权,标的是 13 个预设板块。缓存里没有的部分不会被导入,之后再用「开始扫描并补充」补齐。这个功能仍需要 miniQMT 能连上,只能在 Windows 上用,命令行没有对应命令。
5.3 用命令行下载
kh data download --source miniqmt --pool hs300 --period 1d,5m --adj front,back
miniQMT 没连上时报 CLIENT_NOT_CONNECTED(「MiniQMT 客户端未就绪」)。
6 怎么选数据源
| 需求 | 首选 | 备选 |
|---|---|---|
| 零门槛,只要日线 | tx | BaoStock |
| 要近期的 1 分钟、5 分钟线 | tx | Tushare(需权限) |
| 要 tick 或长历史分钟线 | miniQMT(Windows) | HTTP 桥接(Mac、Linux) |
| 想要官方开放平台的日线 | 同花顺 | Tushare |
| ETF、可转债 | miniQMT / HTTP 桥接 | tx(只有沪市 ETF)、Tushare |
| miniQMT 里已经有历史数据 | 从 miniQMT 本地数据导入 | — |
| 要等比前复权、等比后复权 | miniQMT / HTTP 桥接 / tx | — |
想先确认某个数据源能不能用,运行 kh data source test --source tx(把 tx 换成要测的数据源)。
7 混用数据源时要注意
7.1 成交量统一按「手」
各数据源原本的成交量单位不同(有的是股,有的是手),成交额有的是元、千元、万元。V3 在写入时统一换算成「手」和「元」。写入前还会检查数据声明的单位:成交量不是「手」或成交额不是「元」时拒绝写入,报 VOLUME_UNIT_CONFLICT。旧库的单位标记缺失或不一致时照常续写,但会标记「历史单位未核验」,见 1.4。
7.2 复权价可能对不上
库里每一行都存原始价,复权价放在附加列里。不同数据源计算复权的方法和取整方式不同,同一只股票的前复权价,用 tx 下的和用 miniQMT 下的可能有细微差别。同一列如果前一段由 A 源写、后一段由 B 源写,口径就可能不一致,回测结果会受影响。
7.3 增量补充不会改已有的数据
不勾「强制覆写」时,下载只插入库里没有的时间点,或者填补空值,不会修改已有的数据。所以先用 A 源下了数据,再用 B 源增量补,重叠部分保留的仍是 A 的值。
7.4 建议做法
- 同一只股票、同一个周期,认准一个主数据源。
- 要换数据源时,勾「强制覆写」(命令行加
--force)把整段重新下载,不要两个源交替增量写。 - 想比较两个数据源的差别,用 tx 或同花顺的独立数据目录(命令行
--data-root)下到另一个目录,再用数据管理的「查询」或「导出CSV」对比。
8 每天自动补数据:先选哪一种
▶ 本节视频:2.3(下)· 定时补充数据
| 「定时补充」窗口 | kh data sync | |
|---|---|---|
| 平台 | 仅 Windows | Windows、macOS、Linux |
| 数据源 | 仅 miniQMT(本机运行并登录) | tx、BaoStock、Tushare、同花顺、HTTP 桥接、miniQMT 任选 |
| 补哪些股票 | 自己勾选板块,或导入 CSV | 数据目录里已有的全部股票 |
| 周期 | 日线、1 分钟、5 分钟、Tick 可选 | --period 指定,可写多个 |
| 复权 | 不复权必写,可选四种复权 | 固定:tx 只写不复权,其他数据源只写前复权 |
| 常驻方式 | 窗口或系统托盘 | 终端一直开着,或交给系统的计划任务 |
| 失败重试 | 每只股票最多再试 3 次 | 没有整体重试,看退出码 |
9 「定时补充」窗口(Windows + miniQMT)
9.1 打开
主界面「数据管理」→ 工具栏右侧橙色的「定时补充」按钮,打开「定时数据补充 - 看海量化」窗口。它是一个独立的程序:
- 打开前数据管理窗口会先释放数据库连接;定时补充运行期间,数据管理窗口不会重新连接,以免写库冲突。退出定时补充后,在数据管理窗口点刷新恢复。
- 关掉主程序或数据管理窗口,它照样运行。
- 同一时间只能开一个。

窗口默认尺寸较小,控件可能挤在一起,点标题栏的最大化按钮即可正常显示。
9.2 设置
- 股票池选择:13 个板块复选框,默认一个都没勾,必须自己选;也可以用「自定义CSV」导入股票列表(第一列是代码),和板块合并去重。
- 周期选择:日线、1分钟、5分钟、Tick,默认只勾日线。
- 执行时间:默认 15:30。并发数:默认 2,调太高会加大 miniQMT 的压力。
- 历史行情源:只有「MiniQMT(xtdata)」。旁边的状态显示 miniQMT 是否可用,可以点「重新检测」。
- 复权方式:不复权数据总会写入;另外默认写前复权、后复权,可加选等比前复权、等比后复权。Tick 不写复权。
- 启动设置:「开机自动启动本模块」只是开机时打开这个窗口;要开机后自动进入定时状态,还要勾「模块启动后自动开启定时下载」。
状态显示「不可用」时,任务照样能开始,但每只股票都会失败并反复重试(间隔 30 秒、2 分钟、5 分钟),非常耗时。请先启动并登录 miniQMT。
9.3 运行
- 「开始定时」:进入定时状态(按钮变成「停止定时」),不会立刻下载,每 30 秒检查一次,到了执行时间才补当天的数据。非交易日到点会在日志里写「不是交易日,跳过执行」。
- 「补充一次」:马上补一次。交易日 15:00 以后补当天;交易日 15:00 以前补上一个交易日;非交易日补最近一个交易日。
- 「停止补充」:中止当前这一轮,已经下好的部分照样写入。
右边上方显示状态、剩余时间和下次执行时间;「每日数据补充情况」用日历方块显示最近一年每天的补充结果(完整、不完整、缺失、休市/未记录),鼠标悬停可以看详情;下方「运行日志」显示每只股票的结果,只保留最近 100 行。完整日志在 安装目录\logs\scheduled_sync.log。
9.4 托盘与关闭
点窗口右上角的关闭,会问你是「最小化到托盘」「退出定时补充」还是「取消」。选最小化后,定时任务在系统托盘里继续运行:左键单击图标显示或隐藏窗口,右键菜单里能看状态、开始或停止定时、补充一次、退出。

9.5 注意事项
- 到点那一分钟电脑在睡眠或关机,当天就不会执行。请在电源设置里避免收盘后自动睡眠。
- 每天只在到点时尝试一次,失败(比如数据库被占用)后当天不会再试,可以手动点「补充一次」。
- 到点执行时,不要同时开着数据管理窗口写数据或跑回测,以免数据库被占用。
10 命令行定时:kh data sync
10.1 先手动执行一次
kh data sync --source tx
它会给数据目录里已有的全部股票补今天的数据(周期默认日线,可以用 --period 1d,5m 指定多个)。非交易日运行会显示「今天不是交易日,跳过同步」,然后正常退出:

- 不写
--source时,按设置自动选择:配置了 Tushare Token 就用 Tushare;否则开启了 BaoStock 就用 BaoStock;BaoStock 未启用时,Windows 安装版会选 miniQMT(安装版总带着 miniQMT 的接口库)——这时 miniQMT 没有运行就会报错,不会退回 BaoStock,请写明--source。选定后不会自动换到别的数据源;写了--source就只用指定的那个。tx 和同花顺不会被自动选中,要用请明确写出来。 - 不同数据源当天数据的开放时间不同:tx 要 16:00 以后才有当天数据,BaoStock 一般更晚,建议晚上再补。
- 复权方式固定:用 tx 时只写不复权价,其他数据源只写前复权价。需要 tx 的复权价时,补完再运行一次
kh data download --source tx --stocks … --adj front。 - 库里只要有一只 tx 不支持的品种(深市 ETF、可转债等),
--source tx会整批失败,这时请换数据源。
10.2 让它每天自动跑
kh data sync --schedule 16:30 --source tx
终端显示「定时同步模式: 每个交易日 16:30 执行」「按 Ctrl+C 退出」后一直挂着,周一到周五到点执行一次。时间要写成两位数的 HH:MM(写 9:30 会报错)。终端关掉就停了,也不会补跑错过的日子。
Windows 安装版已经带了需要的 schedule 库。用 pip 或 pipx 安装的(Linux)需要另外装:pipx inject khquant schedule。
11 用系统计划任务代替常驻终端(推荐)
比起一直开着一个终端,更稳妥的做法是让操作系统每天定时运行一次 kh data sync。kh 全程不需要交互,成功(或非交易日跳过)退出码为 0,失败为 1。
11.1 Windows 任务计划程序
在「命令提示符」(cmd,不是 PowerShell)里运行(每个工作日 16:30,日志追加到用户目录下的 kh_sync.log):
schtasks /Create /TN "khQuant 每日补数据" /SC WEEKLY /D MON,TUE,WED,THU,FRI /ST 16:30 /TR "cmd /c kh data sync --source tx >> \"%USERPROFILE%\kh_sync.log\" 2>&1"
- 要用装了 khQuant、做过设置的那个 Windows 账户创建,因为设置文件是按用户存放的。
- 安装时要勾过「添加 kh 命令到系统 PATH」;没勾的话把
kh换成kh.exe的完整路径。 - 也可以打开「任务计划程序」→「创建基本任务」用向导完成,操作选「启动程序」,程序填
cmd,参数填/c后面那一串。 - 到点时如果数据管理窗口或回测正占用着数据库,写入会等待最多 10 分钟,仍不行就失败退出。
11.2 macOS 和 Linux
Linux 用 cron,例如 crontab -e 里加一行(工作日 16:30):
30 16 * * 1-5 $HOME/.local/bin/kh data sync --source tx >> $HOME/kh_sync.log 2>&1
macOS 也可以用 cron(或 launchd),把路径换成 /usr/local/bin/kh。cron 按系统时区触发,云服务器常是 UTC,要换算成北京时间。详见 2.5。
12 缺口扫描:kh data scan
12.1 扫描
kh data scan --start 20260901
按交易日历逐日检查库里每只股票在区间内有没有数据。没有缺口时是这样:

有缺口时会逐只列出,并提示用 --fix 补:
> 扫描 1d 数据完整性...
WARN 000300.SH 缺失 3 个交易日
> 完整: 0 | 有缺口: 1 | 扫描失败: 0
使用 --fix 自动补充缺失数据
--period:要扫的周期,默认日线,一次只能扫一个。--stocks:只扫指定股票,代码请带后缀(不带后缀时000300会被当成深市代码)。--start、--end:扫描区间,默认 2020-01-01 到今天。- 扫描全程只读,不会挡住其他程序写库。
12.2 补缺
kh data scan --start 20260901 --fix --source tx
先检查数据源可用,再把有缺口的股票整段重新下载(增量方式,已有的数据不会被改)。和 sync 一样,复权方式固定:tx 只补不复权价。补完后如果回测要用前复权,再运行一次 kh data download --source tx --stocks … --adj front --start … 把前复权补齐。
12.3 判断规则和局限
- 只看某天有没有数据,不看当天的条数,所以分钟线少了几根不算缺口。要按条数检查,用数据管理窗口的「数据完整性检查」(见 1.11)。
- 新股上市前、停牌的日子、从来没下载过的周期,都会被算作缺口。
- 有缺口时退出码仍是 0;有股票扫描失败(比如
--stocks里写了库里没有的代码)时为 1。
13 更新板块成分股
预设板块(沪深300、中证500 等)的成分股会变化。kh data update-pool 会重新生成这些板块的股票列表:Windows 上优先从 miniQMT 获取,取不到时改用 BaoStock;Mac、Linux 上用 BaoStock。BaoStock 拿不到可转债、ETF、LOF 的列表,这几个板块会保持原样。
Windows 图形界面里也有一个入口:「设置 → 基本设置 → 更新成分股列表」。它优先用同花顺(扶摇)接口,没配 Key 时可以选择改用 BaoStock。macOS 版没有这个按钮。
常见问题
问:tx 下载的分钟线只有一个月?
答:接口只提供约近 1 个月的 1 分钟线、约近半年的 5 分钟线。需要更长的分钟线,用 miniQMT、HTTP 桥接或 Tushare。
问:用 tx 下载时提示「无法开始下载」?
答:股票池里有 tx 不支持的品种(深市 ETF、可转债等)。从股票池里去掉这些代码,或改用其他数据源下载它们。
问:同花顺下载沪深 300 下成了别的东西?
答:代码要写 000300.SH。只写 000300 会被当成深市代码。
问:Mac 上看不到「MiniQMT导入」和「定时补充」?
答:这两个只有 Windows 版有。要用 miniQMT 的数据,请用 HTTP 桥接(第 4 节);定时补数据请用 kh data sync(第 10 节)。
问:到点了却没执行?
答:检查那一刻电脑是否在睡眠;窗口版要点过「开始定时」且窗口或托盘还在;命令行版的终端要一直开着。错过的日子用 kh data scan --fix 补。
问:用 tx 补数据报 NO_CLOSED_SESSION?
答:tx 当天数据 16:00 以后才开放,把时间定在 16:00 以后。
问:用 tx 补数据报 UNSUPPORTED_SYMBOL?
答:库里有 tx 不支持的品种(深市 ETF、可转债等)。改用其他数据源补。
问:提示数据库被占用?
答:补数据时关掉数据管理窗口,不要同时跑回测。
本篇基于 V3.4.1.10 编写。