历史行情下载终极指南:策略回测从数据准备开始

·

核心关键词:历史行情数据、策略回测、K线数据、量化数据库、交易所API、Python脚本、复权处理

做足历史行情下载的功课,你的策略回测就有了稳态地基。下文将按市场分类,手把手示范如何把 沪深A股、港股、期货、数字货币 四大赛道的历史行情数据“吃”进本地数据库,并为交易逻辑测试打下坚实底座。


一、沪深A股:掘金与 Baostock 双通道

下载脚本位置

方式脚本文件
Baostockscript/crontab/reboot_sync_a_klines.py
掘金script/crontab/reboot_sync_gm_a_klines.py

注意事项

示例:重点追踪 000002、002594 等热门股,用 Baostock 拉 2020-01-01 起的日线即可:

python script/crontab/reboot_sync_a_klines.py run_codes=000002,002594 f_start_datetime=2020-01-01

二、港股:富途 API 直连

下载脚本

script/crontab/reboot_sync_hk_klines.py

富途 API 具备 标的数量限制,务必做切片请求,防止超限。

操作提示

  1. 先在富途 OpenAPI 开通权限,再填写 token。
  2. 下载每页 200 支股票,可循环分页遍历。
  3. 建议周期以 1 分钟、5 分钟 为主,更高频率需专业账号。

三、期货:天勤 API + 掘金双保险

数据源脚本文件名备注
天勤reboot_sync_futures_klines.py需专业版或序列号
掘金reboot_sync_gm_futures_klines.py90 天分钟级限制

免费额度巧利用

👉 赶紧搭建属于你的多维期货数据库,回测收益快人一步!


四、数字货币:Binance 永续合约极速下载

脚本与存储

reboot_sync_currency_klines.py 使用 Binance USDT 永续合约 API ,支持 全标的日线至 1m 级 K 线

常见问题速解

0 0 * * * /usr/bin/python3 /chanlun-script/reboot_sync_currency_klines.py >> /var/log/sync.log 2>&1

五、备用姿势:QQ群文件+VNPY 预置包

无 VPN、无复杂 API?用“现成压缩包” 5 分钟导入本地数据库。

5.1 VNPY 股票+期货数据

5.2 数字货币迷你包


六、自动化:哨兵脚本与定时任务

在 Linux crontab 中加入如下三行,实现入库无人值守:

# 每日零点追加股票
0 0 * * * python3 script/crontab/reboot_sync_a_klines.py

# 每工作日 16:00 追加港股
0 16 * * 1-5 python3 script/crontab/reboot_sync_hk_klines.py

# 每日 07:00 追加数字货币
0 7 * * * python3 script/crontab/reboot_sync_currency_klines.py

七、FAQ:老玩家常被问到的7个问题

1. 全市场行情值得一次性下载吗?

不建议。历史行情数据 占用空间巨大(上百 GB),且冗余标的会拖慢回测。按策略标的切片 获取才是性价比最高的方案。

2. 后复权在回测时会不会影响年化?

后复权 不改变每日收益率本身,但会把价格平滑,避免异常跳空,保证 夏普率 更加贴近真实。

3. 期货 tick 级数据能否用免费 API 拉?

tick 只在 天勤专业版、掘金 MT5、交易所官方行情终端 上开放。免费 API 官方普遍只开放 1m 及以上周期。

4. 数据库 Sync 出现 “Violation time index” 报错怎么办?

通常是 重复插入相同主键。在 insert_klines 前使用 ON DUPLICATE KEY UPDATE 或删掉当天批次后重跑。

5. 如何确认历史行情数据无缺失?

缺失日期检测脚本,对标的做 expected_rows = days * 24 * 60 速算,差异>1%即重新拉取。

6. 期货合约换月导致代码更迭?

连续主力合约映射表(m@代码) 统一标识,脚本自动指向活跃合约即可。

7. Windows 系统能否同样部署?

可以。建议安装 WSL2 + DockerAnaconda,兼容 Linux 目录结构,脚本不改动即可跑。

👉 让自动下载与策略回测并行,QT 回测框架将效率再提升一倍!


八、小结:一条高效数据流的工作流

  1. 明确策略 标的池周期需求
  2. 选用对应 交易所API现成压缩包
  3. 通过脚本落地 增量历史行情下载
  4. 配置 crontab 维护 数据保鲜
  5. 回归优胜策略 验证 & 优化

只要按以上步骤稳步推进,策略回测 不再被“缺数据、等数据”拖后腿。