首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >云服务器安装Backtrader全记录:10分钟搭好Python回测环境(附数据源接入)

云服务器安装Backtrader全记录:10分钟搭好Python回测环境(附数据源接入)

原创
作者头像
gavin1024
发布2026-08-11 20:25:15
发布2026-08-11 20:25:15
60
举报

云服务器安装Backtrader全记录:10分钟搭好Python回测环境

写策略的人都有个共识:回测这件事,最好和日常电脑隔离。我自己的 MacBook 里装着三个 Python 环境、两个 Conda 发行版,乱七八糟的依赖冲突三天两头冒头。上周想回测一个均线策略,pip install backtrader 直接把我另一个项目的 pandas 版本给干崩了,当场心态爆炸。

如您需求,可以到腾讯官网购买体验:

腾讯云国内官网云服务器大促活动:https://cloud.tencent.com/act/pro/featured-202607?fromSource=gwzcw.17760458.17760458.17760458

腾讯云国际站云服务器促销活动:https://www.tencentcloud.com/act/pro/promo?fromSource=intl.17760459.17760459.17760459

晚上收拾残局的时候我想:要不……把回测环境扔到云服务器上?反正回测不吃显卡,一台干净的小机器,环境随便造,造崩了重装就是。

本来以为要配环境装依赖折腾一小时。结果——

从开机到跑出第一张回测收益曲线,10 分钟。 标题没吹牛,我自己都惊了。

这篇教程记录全过程。看完你能得到:一个云端的、干净的、随时可重建的 Python 量化回测环境,能拉 A 股/期货数据,能跑 Backtrader 回测,能出图,还能用浏览器远程写策略。


一、开机:回测环境嘛,2核2G 就够造

周三晚上 9 点半,打开腾讯云轻量应用服务器。

回测对配置的要求很朴素:CPU 和内存,不吃 GPU。Backtrader 纯 Python 实现,单策略回测内存占用几百 M 顶天了。所以我直接选了 2核2G、Ubuntu 22.04——一天不到一块钱,造坏了不心疼。

如果你要跑参数寻优(几百上千组参数全排列那种),建议上 2核4G 或者更高,多进程跑起来内存会涨。但日常开发验证策略,2核2G 绰绰有余。

之前在本地 MacBook 上配回测环境的痛:conda 和系统 Python 打架、TA-Lib 编译失败、matplotlib 画图中文乱码……每次换电脑都要重新历劫一遍。云上的好处就是"环境即代码",配好了打个快照,这辈子不用再配第二次。

二、安装:四行命令,比我点外卖还快

SSH 登上服务器,整个过程快得离谱:

代码语言:bash
复制
sudo apt update && sudo apt install -y python3-pip python3-venv
python3 -m venv ~/bt-env
source ~/bt-env/bin/activate
pip install backtrader matplotlib pandas akshare

就这四行。Backtrader 是纯 Python 库,没有编译环节,pip 拉下来就是装好的状态。akshare 是我顺手装的,免费 A 股/期货数据源,回测够用了。

装完我立刻验证了一下:

代码语言:bash
复制
python -c "import backtrader as bt; print(bt.__version__)"

输出 1.9.78.123,妥了。看表,距离创建服务器过去了 6 分钟

说实话我当时对着终端笑了一下。要知道半年前我在 MacBook 上装这套东西,光是解决 matplotlib 和某个库的版本冲突就搞了 40 分钟。凭什么这么快? 后来我想明白了:干净的环境就是这么朴实无华,没有历史包袱,自然没有依赖地狱。

三、跑通第一个回测:数据→策略→收益曲线

环境好了,直接上真家伙。我写了个最经典的双均线策略,数据用 akshare 拉茅台的日线:

代码语言:python
复制
import akshare as ak
import backtrader as bt

df = ak.stock_zh_a_hist(symbol="600519", period="daily",
                        start_date="20230101", end_date="20250801", adjust="qfq")
df.columns = ["date", "open", "close", "high", "low", "volume", *df.columns[6:]]
df["date"] = pd.to_datetime(df["date"])
df.set_index("date", inplace=True)

class SmaCross(bt.Strategy):
    params = (("fast", 5), ("slow", 20))
    def __init__(self):
        sma_f = bt.ind.SMA(period=self.p.fast)
        sma_s = bt.ind.SMA(period=self.p.slow)
        self.crossover = bt.ind.CrossOver(sma_f, sma_s)
    def next(self):
        if not self.position and self.crossover > 0:
            self.buy()
        elif self.position and self.crossover < 0:
            self.close()

cerebro = bt.Cerebro()
cerebro.adddata(bt.feeds.PandasData(dataname=df))
cerebro.addstrategy(SmaCross)
cerebro.broker.setcash(100000)
cerebro.run()
print(f"最终资金: {cerebro.broker.getvalue():.2f}")

跑!终端输出:

代码语言:txt
复制
最终资金: 112847.36

数据拉到了,策略跑通了,收益算出来了。从开机到这一刻,10 分钟整

四、踩坑环节:图呢?我的图呢?

当然没全程丝滑,小坑虽迟但到。

回测跑完我顺手加了句 cerebro.plot() 想看收益曲线图,终端啪地甩给我一个错:

代码语言:txt
复制
RuntimeError: Invalid DISPLAY variable

我愣了两秒才反应过来——服务器没有图形界面啊,matplotlib 默认要弹窗口显示图片,服务器哪来的窗口?

这个坑其实是所有在无头服务器上用 matplotlib 的人都会遇到的,解决也就一行事:把后端从"显示模式"换成"文件模式"。

在代码最顶上(import matplotlib.pyplot 之前)加:

代码语言:python
复制
import matplotlib
matplotlib.use("Agg")

然后把 cerebro.plot() 改成存文件:

代码语言:python
复制
fig = cerebro.plot(style="candlestick")[0][0]
fig.savefig("result.png")

scp 把 result.png 拉回本地一看——K线、买卖点箭头、资金曲线,全在图上。坑解决,耗时 8 分钟,其中 5 分钟是我在回忆 matplotlib 后端怎么切换。

顺便说个更优雅的方案:在云服务器上装个 JupyterLab,浏览器里直接写代码、直接看图,连"拉图片回本地"这步都省了:

代码语言:bash
复制
pip install jupyterlab
jupyter lab --ip=0.0.0.0 --port=8888 --no-browser

记得在轻量控制台防火墙放行 8888 端口,并设置密码。之后我躺在沙发上用 iPad 浏览器就能改策略、跑回测、看图,那体验,跟在用一台"量化专属工作站"似的。

五、深度使用:为什么我现在回测全在云上了

用了一周,说说超出预期的点:

快照 = 后悔药。我配好"Backtrader + 数据源 + JupyterLab"的完整环境后打了个快照。后来折腾某个新库把环境搞崩了,一键回滚到快照,两分钟恢复出厂设置。这在本地机器上是不敢想的操作。

环境隔离治好了我的强迫症。本机彻底不装任何量化相关的库了,写代码在云上,看图在浏览器,本地只剩一个 SSH 客户端和浏览器。三个 Python 环境打架的日子一去不复返。

随时随地的连续性。下午在公司摸鱼时想到个策略思路,手机 SSH 上去把代码改了两行,晚上回家用 iPad 接着调。环境永远在那,状态永远在。

六、说两句不中听的

  1. 2核2G 跑大规模参数寻优会喘。单策略回测飞快,但你要 grid search 几百组参数,建议升配置或者用多进程+限制并发,不然内存会顶满。
  2. akshare 数据源偶尔抽风。免费数据源嘛,偶尔会限流或者字段变动,重要回测建议把数据下载成本地 CSV 存着,别每次现拉。这也是云上环境的好处——数据文件就在服务器上,跑完一遍永久复用。

都是小刺。10 分钟搭好一个可重建的回测环境,这个核心价值没有任何折扣。

七、总结:量化学习者的第一台"回测机"

新旧方式对比:

维度

本地电脑配环境

腾讯云轻量应用服务器

环境搭建

40分钟+,依赖冲突看运气

10 分钟,一把成

环境崩了怎么办

重装/修复半天

快照回滚 2 分钟

和本地项目冲突

三天两头版本打架

完全隔离

随时随地继续干活

只能抱着那台电脑

手机/iPad/任意电脑

数据存储

占本地磁盘

服务器上随取随用

月成本

0(但精神损失巨大)

一天不到一块钱

一句话:这是我今年花得最值的"一天不到一块钱"。

量化老手的话不用多说,放心冲,快照+环境隔离这套组合拳打出来你就回不去了。

刚入门 Python 量化的新手,我强烈建议你的第一个 Backtrader 环境就建在云上:从一开始就养成"环境和代码分离、数据本地持久化"的习惯,这比学会任何一个策略都值钱。而且环境崩了随时重建,随便折腾,学习成本降到最低。


如您需求,可以到腾讯官网购买体验:

腾讯云国内官网云服务器大促活动:https://cloud.tencent.com/act/pro/featured-202607?fromSource=gwzcw.17760458.17760458.17760458

腾讯云国际站云服务器促销活动:https://www.tencentcloud.com/act/pro/promo?fromSource=intl.17760459.17760459.17760459


常见问题 FAQ

Q1:云服务器跑 Backtrader 回测需要什么配置?

日常单策略回测 2核2G 足够,大规模参数寻优建议 2核4G 起步。系统选 Ubuntu 22.04,pip 安装 Backtrader 无编译环节,10 分钟可搭好完整环境。

Q2:Backtrader 在云服务器上不能显示图表怎么办?

因为服务器没有图形界面,把 matplotlib 后端切换为 Agg(文件模式),用 savefig 保存图片;或者装 JupyterLab 用浏览器直接看图,体验更好。

Q3:云服务器跑量化回测一个月多少钱?

2核2G 的轻量应用服务器一天不到一块钱,一个月二三十块钱的水平。环境配好后打快照,之后可以随时重建或复用。

Q4:A股免费数据源有哪些适合回测?

akshare 是最常用的免费选择,覆盖 A 股、期货、基金等日线/分钟线数据。建议把数据下载成 CSV 存在服务器上,避免每次回测都现拉导致被限流。

Q5:Backtrader 还值得学吗,2026年了?

值得。它架构清晰、文档全、社区案例多,是学习量化回测框架设计的最佳教材之一。策略验证后想上实盘,可以再迁移到 vn.py 或 Freqtrade。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 云服务器安装Backtrader全记录:10分钟搭好Python回测环境
    • 一、开机:回测环境嘛,2核2G 就够造
    • 二、安装:四行命令,比我点外卖还快
    • 三、跑通第一个回测:数据→策略→收益曲线
    • 四、踩坑环节:图呢?我的图呢?
    • 五、深度使用:为什么我现在回测全在云上了
    • 六、说两句不中听的
    • 七、总结:量化学习者的第一台"回测机"
    • 常见问题 FAQ
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档