
写策略的人都有个共识:回测这件事,最好和日常电脑隔离。我自己的 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 回测,能出图,还能用浏览器远程写策略。
周三晚上 9 点半,打开腾讯云轻量应用服务器。
回测对配置的要求很朴素:CPU 和内存,不吃 GPU。Backtrader 纯 Python 实现,单策略回测内存占用几百 M 顶天了。所以我直接选了 2核2G、Ubuntu 22.04——一天不到一块钱,造坏了不心疼。
如果你要跑参数寻优(几百上千组参数全排列那种),建议上 2核4G 或者更高,多进程跑起来内存会涨。但日常开发验证策略,2核2G 绰绰有余。
之前在本地 MacBook 上配回测环境的痛:conda 和系统 Python 打架、TA-Lib 编译失败、matplotlib 画图中文乱码……每次换电脑都要重新历劫一遍。云上的好处就是"环境即代码",配好了打个快照,这辈子不用再配第二次。
SSH 登上服务器,整个过程快得离谱:
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 股/期货数据源,回测够用了。
装完我立刻验证了一下:
python -c "import backtrader as bt; print(bt.__version__)"输出 1.9.78.123,妥了。看表,距离创建服务器过去了 6 分钟。
说实话我当时对着终端笑了一下。要知道半年前我在 MacBook 上装这套东西,光是解决 matplotlib 和某个库的版本冲突就搞了 40 分钟。凭什么这么快? 后来我想明白了:干净的环境就是这么朴实无华,没有历史包袱,自然没有依赖地狱。
环境好了,直接上真家伙。我写了个最经典的双均线策略,数据用 akshare 拉茅台的日线:
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}")跑!终端输出:
最终资金: 112847.36数据拉到了,策略跑通了,收益算出来了。从开机到这一刻,10 分钟整。
当然没全程丝滑,小坑虽迟但到。
回测跑完我顺手加了句 cerebro.plot() 想看收益曲线图,终端啪地甩给我一个错:
RuntimeError: Invalid DISPLAY variable我愣了两秒才反应过来——服务器没有图形界面啊,matplotlib 默认要弹窗口显示图片,服务器哪来的窗口?
这个坑其实是所有在无头服务器上用 matplotlib 的人都会遇到的,解决也就一行事:把后端从"显示模式"换成"文件模式"。
在代码最顶上(import matplotlib.pyplot 之前)加:
import matplotlib
matplotlib.use("Agg")然后把 cerebro.plot() 改成存文件:
fig = cerebro.plot(style="candlestick")[0][0]
fig.savefig("result.png")scp 把 result.png 拉回本地一看——K线、买卖点箭头、资金曲线,全在图上。坑解决,耗时 8 分钟,其中 5 分钟是我在回忆 matplotlib 后端怎么切换。
顺便说个更优雅的方案:在云服务器上装个 JupyterLab,浏览器里直接写代码、直接看图,连"拉图片回本地"这步都省了:
pip install jupyterlab
jupyter lab --ip=0.0.0.0 --port=8888 --no-browser记得在轻量控制台防火墙放行 8888 端口,并设置密码。之后我躺在沙发上用 iPad 浏览器就能改策略、跑回测、看图,那体验,跟在用一台"量化专属工作站"似的。
用了一周,说说超出预期的点:
快照 = 后悔药。我配好"Backtrader + 数据源 + JupyterLab"的完整环境后打了个快照。后来折腾某个新库把环境搞崩了,一键回滚到快照,两分钟恢复出厂设置。这在本地机器上是不敢想的操作。
环境隔离治好了我的强迫症。本机彻底不装任何量化相关的库了,写代码在云上,看图在浏览器,本地只剩一个 SSH 客户端和浏览器。三个 Python 环境打架的日子一去不复返。
随时随地的连续性。下午在公司摸鱼时想到个策略思路,手机 SSH 上去把代码改了两行,晚上回家用 iPad 接着调。环境永远在那,状态永远在。
都是小刺。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
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 删除。