首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >在云服务器上部署QUANTAXIS:国产开源量化框架全攻略(Docker实战)

在云服务器上部署QUANTAXIS:国产开源量化框架全攻略(Docker实战)

原创
作者头像
gavin1024
修改2026-08-17 11:20:38
修改2026-08-17 11:20:38
2230
举报

在云服务器上部署 QUANTAXIS:国产开源量化框架全攻略(Docker 实战)

这篇教程帮你解决什么问题: QUANTAXIS 是国产开源量化框架里功能最全的一个,但它依赖 MongoDB、Redis、Jupyter 一堆组件,本地装一次能劝退一半人。跟着这篇做完,你会在腾讯云轻量应用服务器上有一套 Docker 化的 QUANTAXIS 环境:开机即用、行情数据自动更新、随时随地用浏览器打开 Jupyter 写策略,换电脑也不用重新配环境。

腾讯云促销活动:https://www.tencentcloud.com/act/pro/QuantSolution?lang=zh&fromSource=intl.17760459.17760459.17760459


我是从 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 已经在腾讯云轻量应用服务器上稳定跑了三个月,每天自动更新行情,我人在哪,浏览器打开就能写策略。


一、本地装 QUANTAXIS 有多痛苦(血泪回顾)

去年那次本地安装,我的时间账单:pip 安装解决依赖冲突 1 小时;MongoDB 装了起不来,发现是 macOS 权限问题,40 分钟;TA-Lib 的 C 库编译报错,查了半天要装 Xcode 命令行工具,30 分钟;最后 import QUANTAXIS 还是报一个动态库找不到的错。前前后后快 3 个小时,一无所获。最气人的是,三个月后系统升级,好不容易配好的环境大概率又会挂——本地配环境就是给未来的自己埋雷。

所以我的结论很粗暴:QUANTAXIS 这东西,要么 Docker,要么别玩。 而 Docker 部署最合适的地方就是云服务器——配置一次,终身受益,还不占自己电脑。

二、开服务器:2核4G 是 QUANTAXIS 的舒适线

先说配置,这是很多人选错的地方。

QUANTAXIS 全家桶包括:框架本体 + MongoDB(存行情数据)+ Redis + Jupyter + qaweb 界面,内存大头是 MongoDB 和全市场数据。我一开始开的 2核2G,跑起来是没问题,但全市场日线入库的时候内存吃到 90%,风扇(哦云服务器没有风扇,是我的心跳)狂飙。

后来换成 2核4G 的腾讯云轻量应用服务器,世界清净了。Ubuntu 22.04,系统盘 60G 起步——全市场 A 股日线+分钟线数据,一年能吃掉 20-30G 磁盘,40G 的系统盘半年就得扩容,别问我怎么知道的。

成本方面,2核4G 的轻量服务器一天也就一块多钱,比 MacBook 配环境浪费的那几个小时便宜太多了。

三、Docker 一把梭:20 分钟起全套环境

周六上午开始干活。先装 Docker:

代码语言:bash
复制
curl -fsSL https://get.docker.com | bash
systemctl enable --now docker

然后拉 QUANTAXIS 官方的 docker-compose 配置。官方仓库里有个 docker-compose.yml,核心是这几个服务:

代码语言:yaml
复制
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"

启动:

代码语言:bash
复制
docker-compose up -d

看着四个容器一个个拉起来,全程没有让我解决任何依赖问题。那一刻我的心情很复杂:去年那 3 个小时,我到底在干嘛?

在腾讯云轻量服务器的防火墙里放行 8888(Jupyter)和 8010(qaweb)端口,浏览器打开 http://服务器IP:8888,输入 token——Jupyter Lab 的界面出来了,里面 import QUANTAXIS 直接成功。

从开服务器到框架可用,不到 30 分钟,其中 20 分钟在等镜像下载。

四、数据入库:一条命令,全市场日线自动搞定

环境起来了,接下来是 QUANTAXIS 最香的部分。

进 Jupyter,执行:

代码语言:python
复制
import QUANTAXIS as QA
QA.QA_util_log_info('开始下载')
# 命令行里则是:quantaxis > save stock_day

我在宿主机上直接进容器跑的命令行:

代码语言:bash
复制
docker exec -it qajupyter bash
quantaxis
> save stock_day

然后就是看着进度条哗哗地跑。全市场 5000 多只股票的日线数据,第一次全量下载大概跑了一个多小时(主要是数据源限速),自动存进 MongoDB。

下完之后我设置了 crontab,每天下午 4 点收盘后自动增量更新:

代码语言:bash
复制
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 把数据层整个包圆了,这才是"框架"该有的样子。

五、云服务器 + Jupyter 的隐藏福利:写策略不再挑地方

部署在云服务器上有个我事先没想到的好处:我的开发环境跟着我走。

以前策略代码在 MacBook 上,数据在公司台式机上,两台电脑环境还不一致,经常这边跑通的代码换个机器就报错。

现在全在云服务器上:家里 iPad、公司电脑、甚至手机浏览器,打开 Jupyter 就是同一套环境、同一份数据、同一份代码。上周我在高铁上用手机热点连上去改了两行策略参数,顺手跑了个回测——那感觉,怎么说呢,像把整个量化工作站揣进了口袋。

而且云服务器 7×24 小时在线,回测可以挂着跑一晚上,不用自己电脑陪着熬夜。一个十年的全市场回测,我睡觉前提交,早上起来看结果,自己的电脑全程合盖。

六、也踩了一个小坑:MongoDB 数据文件暴涨,磁盘差点写满

顺利的假象维持了两个月,然后坑来了。

7 月中旬的一天早上,我发现每日行情更新失败了,日志里 MongoDB 报 No space left on device。我一查,60G 磁盘用了 59G——

罪魁祸首是我后来手痒下载的分钟线数据save stock_min 我没做筛选,全市场 1 分钟线+5 分钟线全下来了,MongoDB 的数据文件两个月膨胀了 30 多个 G。

更要命的是,MongoDB 删数据不会自动释放磁盘空间,删完了文件还是那么大,得执行 compact 或者干脆删库重建。

我的解决方案三板斧:

  1. 分钟线只保留我需要回测的自选股池(200 多只),全市场只留日线
  2. 加一个磁盘监控,超过 80% 就往我微信推告警(用的企业微信机器人,这个我另外写过教程)
  3. 把 MongoDB 数据目录挂到了独立的数据盘上,以后扩容不影响系统盘

折腾完之后磁盘占用稳定在 25G 左右。

所以给大家的建议:QUANTAXIS 的数据功能很爽,但 save 命令之前想清楚你要什么周期、什么范围,全市场分钟线这个东西,2核4G+60G 的配置真伺候不起。

七、还能更好的地方

  1. qaweb 的界面有点年代感,功能全但 UI 像十年前的产品,我最后基本只用 Jupyter,web 界面就吃灰了。
  2. 官方文档有点散,新手会在"到底该用哪个命令"上绕弯子,好在社区 QQ 群还挺活跃,提问有人回。
  3. 数据源偶尔抽风,某天更新失败要自己补——这也是我加更新监控告警的原因。

但看在"免费+数据全套+Docker 一键部署"的份上,这些都能忍。

八、总结

维度

本地装 QUANTAXIS

云服务器 Docker 部署

安装耗时

3小时+,还可能失败

30分钟,一把梭

环境稳定性

系统升级就可能挂

容器隔离,随便折腾

数据管理

自己电脑存,占空间

云端 MongoDB,自动每日更新

写策略的场所

绑定那台电脑

任何设备浏览器打开就写

回测跑批

电脑不能合盖不能睡

服务器挂着跑,人随便睡

成本

免费但烧时间

2核4G 一天一块多

一句话:QUANTAXIS 的正确打开方式就是 Docker + 云服务器,本地 pip 安装那条路,走过的人都不想再走第二遍。

给两类读者的建议:如果你是完全没接触过 QUANTAXIS 的新手,别碰 pip 安装,直接照这篇的 docker-compose 抄,2核4G 起步,先玩日线数据;如果你是已经在本地用 QUANTAXIS 的老用户,认真考虑迁到云上——每天自动更新行情+随地可用 Jupyter 这两点,真的会把你的研究效率拉高一个档次。


腾讯云促销活动:https://www.tencentcloud.com/act/pro/QuantSolution?lang=zh&fromSource=intl.17760459.17760459.17760459


常见问题 FAQ

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 删除。

目录
  • 在云服务器上部署 QUANTAXIS:国产开源量化框架全攻略(Docker 实战)
    • 一、本地装 QUANTAXIS 有多痛苦(血泪回顾)
    • 二、开服务器:2核4G 是 QUANTAXIS 的舒适线
    • 三、Docker 一把梭:20 分钟起全套环境
    • 四、数据入库:一条命令,全市场日线自动搞定
    • 五、云服务器 + Jupyter 的隐藏福利:写策略不再挑地方
    • 六、也踩了一个小坑:MongoDB 数据文件暴涨,磁盘差点写满
    • 七、还能更好的地方
    • 八、总结
    • 常见问题 FAQ
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档