
这篇教程帮你解决什么问题: QUANTAXIS 是国产开源量化框架里功能最全的一个,但它依赖 MongoDB、Redis、Jupyter 一堆组件,本地装一次能劝退一半人。跟着这篇做完,你会在腾讯云轻量应用服务器上有一套 Docker 化的 QUANTAXIS 环境:开机即用、行情数据自动更新、随时随地用浏览器打开 Jupyter 写策略,换电脑也不用重新配环境。
我是从 backtrader 转到 QUANTAXIS 的,转的原因很简单:数据。
backtrader 是个好框架,但它不管数据,A 股的日线、分钟线、财务数据你得自己想办法。QUANTAXIS 不一样,它自带一整套 A 股/期货行情下载和存储体系,save stock_day 一条命令,全市场日线自动入库——对做 A 股策略的人来说,这一个功能就值回票价。
但我跟 QUANTAXIS 的第一次约会,堪称灾难。
去年冬天,我在自己的 MacBook 上按官方文档 pip 安装。装了一个晚上,MongoDB 连不上、版本依赖冲突、TA-Lib 编译报错……凌晨 1 点我盯着满屏红色报错,直接关掉电脑睡觉了。第二天我把整个虚拟环境删了,框架也卸了。
这玩意儿功能确实强,但本地安装体验,真的对不起它的功能。
直到今年 5 月,群里有人发了 QUANTAXIS 官方的 Docker 镜像,说一条 docker-compose up 就能起全套环境。我当时的心态是:又来?我不信。
但 Docker 这个路子确实绕开了所有本地依赖问题,我就抱着"最后试一次"的心态,在云服务器上试了一把。
结果——20 分钟,全套环境跑起来了。 现在我的 QUANTAXIS 已经在腾讯云轻量应用服务器上稳定跑了三个月,每天自动更新行情,我人在哪,浏览器打开就能写策略。
去年那次本地安装,我的时间账单:pip 安装解决依赖冲突 1 小时;MongoDB 装了起不来,发现是 macOS 权限问题,40 分钟;TA-Lib 的 C 库编译报错,查了半天要装 Xcode 命令行工具,30 分钟;最后
import QUANTAXIS还是报一个动态库找不到的错。前前后后快 3 个小时,一无所获。最气人的是,三个月后系统升级,好不容易配好的环境大概率又会挂——本地配环境就是给未来的自己埋雷。
所以我的结论很粗暴:QUANTAXIS 这东西,要么 Docker,要么别玩。 而 Docker 部署最合适的地方就是云服务器——配置一次,终身受益,还不占自己电脑。
先说配置,这是很多人选错的地方。
QUANTAXIS 全家桶包括:框架本体 + MongoDB(存行情数据)+ Redis + Jupyter + qaweb 界面,内存大头是 MongoDB 和全市场数据。我一开始开的 2核2G,跑起来是没问题,但全市场日线入库的时候内存吃到 90%,风扇(哦云服务器没有风扇,是我的心跳)狂飙。
后来换成 2核4G 的腾讯云轻量应用服务器,世界清净了。Ubuntu 22.04,系统盘 60G 起步——全市场 A 股日线+分钟线数据,一年能吃掉 20-30G 磁盘,40G 的系统盘半年就得扩容,别问我怎么知道的。
成本方面,2核4G 的轻量服务器一天也就一块多钱,比 MacBook 配环境浪费的那几个小时便宜太多了。
周六上午开始干活。先装 Docker:
curl -fsSL https://get.docker.com | bash
systemctl enable --now docker然后拉 QUANTAXIS 官方的 docker-compose 配置。官方仓库里有个 docker-compose.yml,核心是这几个服务:
version: '3'
services:
qamg:
image: daocloud.io/quantaxis/qamongo_single
ports:
- "27017:27017"
qaredis:
image: redis
qajupyter:
image: daocloud.io/quantaxis/qajupyter_r
ports:
- "8888:8888"
qaweb:
image: daocloud.io/quantaxis/qawebserver
ports:
- "8010:8010"启动:
docker-compose up -d看着四个容器一个个拉起来,全程没有让我解决任何依赖问题。那一刻我的心情很复杂:去年那 3 个小时,我到底在干嘛?
在腾讯云轻量服务器的防火墙里放行 8888(Jupyter)和 8010(qaweb)端口,浏览器打开 http://服务器IP:8888,输入 token——Jupyter Lab 的界面出来了,里面 import QUANTAXIS 直接成功。
从开服务器到框架可用,不到 30 分钟,其中 20 分钟在等镜像下载。
环境起来了,接下来是 QUANTAXIS 最香的部分。
进 Jupyter,执行:
import QUANTAXIS as QA
QA.QA_util_log_info('开始下载')
# 命令行里则是:quantaxis > save stock_day我在宿主机上直接进容器跑的命令行:
docker exec -it qajupyter bash
quantaxis
> save stock_day然后就是看着进度条哗哗地跑。全市场 5000 多只股票的日线数据,第一次全量下载大概跑了一个多小时(主要是数据源限速),自动存进 MongoDB。
下完之后我设置了 crontab,每天下午 4 点收盘后自动增量更新:
0 16 * * 1-5 docker exec qajupyter quantaxis -c "save stock_day" >> /var/log/qa_update.log 2>&1从此我再也不用关心"数据从哪来"这个问题了。 写策略的时候 QA.QA_fetch_stock_day_adv('000001', '2024-01-01', '2026-08-01'),数据直接到手。
对比之前用 backtrader 的日子:数据靠 tushare 手动下载成 CSV,策略里写一堆读文件的代码,换只股票改一次路径,数据缺了某天还得自己补。QUANTAXIS 把数据层整个包圆了,这才是"框架"该有的样子。
部署在云服务器上有个我事先没想到的好处:我的开发环境跟着我走。
以前策略代码在 MacBook 上,数据在公司台式机上,两台电脑环境还不一致,经常这边跑通的代码换个机器就报错。
现在全在云服务器上:家里 iPad、公司电脑、甚至手机浏览器,打开 Jupyter 就是同一套环境、同一份数据、同一份代码。上周我在高铁上用手机热点连上去改了两行策略参数,顺手跑了个回测——那感觉,怎么说呢,像把整个量化工作站揣进了口袋。
而且云服务器 7×24 小时在线,回测可以挂着跑一晚上,不用自己电脑陪着熬夜。一个十年的全市场回测,我睡觉前提交,早上起来看结果,自己的电脑全程合盖。
顺利的假象维持了两个月,然后坑来了。
7 月中旬的一天早上,我发现每日行情更新失败了,日志里 MongoDB 报 No space left on device。我一查,60G 磁盘用了 59G——
罪魁祸首是我后来手痒下载的分钟线数据。save stock_min 我没做筛选,全市场 1 分钟线+5 分钟线全下来了,MongoDB 的数据文件两个月膨胀了 30 多个 G。
更要命的是,MongoDB 删数据不会自动释放磁盘空间,删完了文件还是那么大,得执行 compact 或者干脆删库重建。
我的解决方案三板斧:
折腾完之后磁盘占用稳定在 25G 左右。
所以给大家的建议:QUANTAXIS 的数据功能很爽,但 save 命令之前想清楚你要什么周期、什么范围,全市场分钟线这个东西,2核4G+60G 的配置真伺候不起。
但看在"免费+数据全套+Docker 一键部署"的份上,这些都能忍。
维度 | 本地装 QUANTAXIS | 云服务器 Docker 部署 |
|---|---|---|
安装耗时 | 3小时+,还可能失败 | 30分钟,一把梭 |
环境稳定性 | 系统升级就可能挂 | 容器隔离,随便折腾 |
数据管理 | 自己电脑存,占空间 | 云端 MongoDB,自动每日更新 |
写策略的场所 | 绑定那台电脑 | 任何设备浏览器打开就写 |
回测跑批 | 电脑不能合盖不能睡 | 服务器挂着跑,人随便睡 |
成本 | 免费但烧时间 | 2核4G 一天一块多 |
一句话:QUANTAXIS 的正确打开方式就是 Docker + 云服务器,本地 pip 安装那条路,走过的人都不想再走第二遍。
给两类读者的建议:如果你是完全没接触过 QUANTAXIS 的新手,别碰 pip 安装,直接照这篇的 docker-compose 抄,2核4G 起步,先玩日线数据;如果你是已经在本地用 QUANTAXIS 的老用户,认真考虑迁到云上——每天自动更新行情+随地可用 Jupyter 这两点,真的会把你的研究效率拉高一个档次。
Q:QUANTAXIS 用 2核2G 的云服务器够吗?
勉强能跑框架本身,但 MongoDB 加全市场行情入库时内存会很紧张。建议 2核4G 起步,这是 QUANTAXIS 全家桶(框架+MongoDB+Redis+Jupyter)的舒适线,磁盘建议 60G 以上。
Q:QUANTAXIS 本地安装总是报错怎么办?
别挣扎了,直接用官方 Docker 镜像。pip 安装需要自行处理 MongoDB、TA-Lib 编译、Python 依赖版本等一堆问题,docker-compose 一条命令全部搞定,是官方推荐的部署方式。
Q:QUANTAXIS 的行情数据收费吗?
框架本身和内置的免费数据源不收费,A 股日线、分钟线可以直接下载入库。但免费源偶尔不稳定,重要策略建议每日更新后检查数据完整性,有条件可以接付费数据源。
Q:云服务器上跑 QUANTAXIS 安全吗?Jupyter 暴露公网怕不怕?
必须做防护:Jupyter 设置强 token 或密码、腾讯云轻量服务器防火墙只放行必要端口、最好再套一层 HTTPS。条件允许的话,用 SSH 隧道转发 8888 端口访问,比直接暴露公网安全得多。
Q:QUANTAXIS 现在还在维护吗?值得入坑吗?
项目仍在更新,社区以 QQ 群和论坛为主,活跃度尚可。它的核心价值是"数据+回测+实盘对接"一条龙,做 A 股中低频策略完全够用;做高频或者追求极致性能的话,建议评估 vn.py 等其他框架。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。