
做期货量化第三年,vn.py 从 2.x 用到现在的 4.x,家里的台式机挂策略挂了快两年。电费倒是小事,最崩溃的是上个月家里跳闸一次、路由器抽风两次,两次都是开盘时间断连,CTP 一断,策略干瞪眼,少赚多少就不提了。
所以当群友说"你为啥不把 vn.py 扔云服务器上跑"的时候,我的第一反应是:别闹,vn.py 那套 GUI 界面扔服务器上?折腾不死我。
上周五晚上终于有空,抱着"大不了浪费一小时"的心态试了一把。
结果——
从开机到策略跑起来,一共 40 分钟。其中 30 分钟还是我自己踩了个 GUI 的坑浪费的。 真正有效的操作时间,可能就 10 分钟。
这篇教程就是把这 40 分钟的全过程写下来,看完你能做到:在腾讯云轻量应用服务器上装好 vn.py,接通 CTP,让策略 7×24 小时自己跑,断网断电都跟你没关系了。
周六上午,泡了杯咖啡,打开腾讯云轻量应用服务器的页面。
配置这块我研究过:vn.py 跑 CTA 策略其实不吃资源,真正吃内存的是你加载历史数据做初始化的时候。我挂了 3 个策略、加载 200 根 1 分钟K线初始化,内存占用稳定在 1.2G 左右。
所以我选的是 2核4G、Ubuntu 22.04 的套餐。一天不到一块钱的成本,比我家里那台 24 小时开机的台式机电费还便宜——我那台 i7 加显卡,一年电费怎么也得七八百。
之前我为了省钱试过一台 1核1G 的便宜 VPS,结果 vn.py 初始化加载数据的时候直接 OOM 被系统杀掉了,Swap 撑到爆。期货量化这事儿,内存是真不能省,2G 是底线,4G 才睡得着觉。
地域选了上海——vn.py 连 CTP,离上期所的数据中心越近越好,上海机房的延迟基本在 5ms 以内。比我家里宽带连过去的 30ms+ 强太多了。
服务器开好,控制台给的 Web 终端直接就能登录,我习惯用 SSH:
ssh ubuntu@你的服务器IP上去之后就是常规操作。vn.py 官方现在维护得不错,pip 直接装全家桶:
sudo apt update && sudo apt install -y python3-pip python3-venv
python3 -m venv ~/vnpy-env
source ~/vnpy-env/bin/activate
pip install vnpy vnpy_ctp vnpy_ctastrategy中间我特意盯着终端看有没有报错——要知道三年前我在自己电脑上装 vn.py,编译 TA-Lib 编译了四十分钟,最后还报错,气得我直接用了 Anaconda 发行版。
这次 pip 装的时候,vnpy_ctp 直接拉的是预编译好的 whl 包,没有任何编译过程,全程 4 分钟装完。我当时就有点惊喜,心里那四个字又冒出来了:凭什么这么顺。
对比 2022 年我第一次装 vn.py 的体验:先装 VS 编译环境,再手动编译 CTP 的 API 封装,中间各种动态库找不到,折腾了整整一个周末。现在 pip 一把梭,时代真的变了。
装完我美滋滋地敲了句:
python -m vnpy然后终端啪地甩给我一行:
qt.qpa.plugin: could not load the Qt platform plugin "xcb"我愣了三秒,然后反应过来——对啊,服务器没有图形界面,vn.py 的主界面是 PyQt5 写的,根本弹不出窗口。
那一刻我真有点想骂自己:这就是我说"别闹"的原因啊,果然还是栽在这了。
但我没有关终端。因为我想起来 vn.py 社区早就有人解决这个问题了,官方文档里有个东西叫 no_ui 模式——vnpy 的 script_trader 和 examples 里专门提供了无界面运行脚本。思路是:不要主界面,直接用脚本启动引擎,挂 CTA 策略。
我翻了一下装好的包,找到了 vnpy_ctastrategy 的文档,写了个启动脚本 run_cta.py:
from vnpy.event import EventEngine
from vnpy.trader.engine import MainEngine
from vnpy_ctp import CtpGateway
from vnpy_ctastrategy import CtaStrategyApp
event_engine = EventEngine()
main_engine = MainEngine(event_engine)
main_engine.add_gateway(CtpGateway)
main_engine.add_app(CtaStrategyApp)
# 之后在这里写连接CTP、初始化策略的逻辑配上我的 CTP 账户信息(SimNow 模拟盘先跑着),再 nohup python run_cta.py & 扔到后台——日志哗啦啦开始滚,连上了,策略初始化了,开始收行情了。
说实话,看到日志里 合约 rb2510 行情推送正常 那一刻,比第一次跑通回测还爽。
策略在云上跑了整整一周,我的体验就一句话:我把它忘了。
以前家里挂机,我每天早上第一件事是去看电脑死没死机;出差前要把远程桌面调好;晚上睡觉担心物业检修电路。现在呢?我在外面吃饭,手机 SSH 上去 tail -f 看一眼日志,行情正常、持仓正常,收起手机接着吃。
延迟也有惊喜。我同一个策略,家里跑的时候 CTP 行情延迟抖动很大,云上稳定在个位数毫秒。对我这种做 1 分钟级别 CTA 的来说,滑点确实改善了一丢丢——不多,但一年下来是钱。
还有个意外收获:腾讯云轻量的控制台有个快照功能。我把配好环境的系统打了个快照,后来手贱升级某个依赖搞崩了,一键回滚,两分钟满血复活。这要在自己电脑上,够我重装一晚上。
真爱粉才挑刺,说两个还能更好的地方:
这两处都是小刺,不影响核心体验。
拉个表格总结一下新旧方式:
维度 | 家里台式机挂机 | 腾讯云轻量应用服务器 |
|---|---|---|
断电断网风险 | 高(跳闸/路由器抽风) | 基本没有 |
CTP 延迟 | 30ms+ 且抖动 | 5ms 以内,稳定 |
一年电费成本 | 大几百块 | 一天不到一块钱 |
环境出问题恢复 | 重装一晚上 | 快照回滚 2 分钟 |
出门在外查看 | 远程桌面看运气 | 手机 SSH 随时看 |
噪音 | 风扇 24 小时嗡嗡 | 无 |
一句话核心评价:vn.py 上云,是我今年做过性价比最高的一次"搬家"。
如果你是还在本地挂机的老鸟,别犹豫了,放心冲。踩坑点我都替你踩过了:选 2核4G 起步、用 no_ui 模式跑策略、记得打快照。
如果你是第一次玩程序化的新手,我的建议是先用 SimNow 模拟盘在云上跑一个月,确认策略逻辑、账户对接都没问题了,再上实盘。云服务器最大的好处就是环境干净、随时可重建,试错成本极低,特别适合拿来练手。
Q1:vn.py 部署到云服务器需要什么配置?
跑 CTA 策略 2核4G 是甜点配置,内存是关键。1核2G 勉强能跑单策略但容易 OOM,不建议。系统选 Ubuntu 22.04,和 vn.py 的兼容性最好。
Q2:云服务器跑量化交易一个月多少钱?
腾讯云轻量应用服务器 2核4G 的套餐折算下来一天不到一块钱,一个月二三十块的水平,比家里电脑 24 小时开机的电费还便宜。遇到活动价更划算。
Q3:vn.py 在云服务器上没有图形界面怎么办?
用 no_ui 模式:通过 vnpy_ctastrategy 写脚本直接启动交易引擎,配合 nohup 或 systemd 后台运行。不建议折腾 VNC 远程图形界面,卡顿且不稳定。
Q4:云服务器选哪个地域连 CTP 最快?
选上海。上期所 CTP 前置在上海,上海地域的机房延迟通常 5ms 以内,比其他地域和家里宽带都低得多。
Q5:SimNow 模拟盘能在云服务器上跑吗?
完全可以,而且推荐先这么做。注意 SimNow 第一套环境只在交易时段开放,周末调试要用它的 7×24 第二套环境。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。