首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >腾讯云轻量服务器部署vn.py实盘记录:从购买到跑通只用1小时

腾讯云轻量服务器部署vn.py实盘记录:从购买到跑通只用1小时

原创
作者头像
克劳德2048
修改2026-08-17 11:22:40
修改2026-08-17 11:22:40
1850
举报

腾讯云轻量服务器部署 vn.py 实盘记录:从购买到跑通只用 1 小时

这篇教程帮你在腾讯云轻量应用服务器上从零部署 vn.py 量化交易框架并连上实盘行情。跟着做,你会得到一台 7×24 小时运行的云服务器,vn.py 稳定接收 CTP 行情、跑你的策略,全程实测 1 小时跑通,含踩坑和解决方案。

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


先说背景:我用 vn.py 做 CTA 策略快两年了,之前一直跑在书房的 Windows 台式机上。

上上个月,家里跳了一次闸。

那天正好夜盘,持仓中。等我赶回家重启电脑、重开行情、重新连 CTP,四十分钟过去了。行情走了一大段,策略的信号全乱了。那天晚上我盯着屏幕想了很久:vn.py 这玩意儿,就不该跑在会跳闸、会断电、会被家里人碰的地方。

群里问过一圈,跑 vn.py 实盘的老哥几乎人手一台云服务器。我之前一直拖着没搞,理由很朴素:嫌麻烦,总觉得"又要折腾环境"。

这次断电算是最后一根稻草。周六早上 9 点,我泡了杯咖啡坐下,跟自己说:今天必须搞定。

结果——10 点 05 分,行情 tick 在云服务器上刷刷地滚。 中间还踩了一个坑。全程记录如下。


一、选配置:别在内存上省钱

先说结论:vn.py 实盘,2 核 4G 是底线

我知道网上有人说 2 核 2G 也能跑,但我自己实测过:vn.py 加上图形界面(哪怕你不用,很多组件也会初始化)、行情接收、策略计算、SQLite 数据库写入,内存轻松吃到 1.5G 以上。2G 的机器稍微多订阅几个合约就开始紧张。

我在腾讯云轻量应用服务器上选的 2 核 4G,Ubuntu 22.04,一天不到一块钱。下单后两分钟拿到 IP 和密码。

对比一下我的旧方案:书房那台台式机,功耗 200W 起步,24 小时开着,光电费一个月就三四十块,还不算跳闸断电、Windows 自动更新重启这些幺蛾子。云服务器一个月的成本比电费还低,稳定性和延迟更是吊打家庭宽带——vn.py 连 CTP 的行情延迟从家里的 30-50ms 降到了个位数毫秒。

系统选择这里多说一句:实盘别用 Windows 镜像。Windows Server 吃内存不说,vn.py 在 Linux 下跑无头(headless)模式才是正解——不开图形界面,纯脚本驱动,资源占用低、稳定性高,适合 7×24 小时挂着。


二、装环境:Ubuntu 上装 vn.py 比 Windows 还顺

SSH 连上服务器,开始装环境。9 点 10 分。

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

然后直接 pip 装 vn.py 全家桶:

代码语言:bash
复制
pip install vnpy vnpy_ctp vnpy_ctastrategy

说实话,装之前我做好了编译报错的心理准备——vn.py 早年间的安装体验是有名的劝退,ta-lib、boost、各种 C++ 依赖,Windows 上我当年折腾了一个下午。

结果这次在 Ubuntu 22.04 上,pip 一条命令,全程没有报一个错。官方现在的 wheel 包做得相当成熟,底层依赖都打包好了。9 点 20 分,环境装完。

那种感觉很奇妙:记忆里"装 vn.py = 半天没了"的肌肉记忆还在,手都准备好应对报错了,结果它哗啦啦装完了。就像你约了个以迟到出名的朋友,结果他提前到了。

验证一下安装:

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

正常输出版本号,妥了。


三、写启动脚本:无头模式才是服务器的正确打开方式

在服务器上跑 vn.py,千万别想着装图形界面那一套(VNC 远程桌面什么的,又慢又占资源)。正确姿势是写个 Python 启动脚本,用 vn.py 的无头模式直接拉起 CTA 引擎。

我的 run_cta.py 长这样(脱敏版):

代码语言:python
复制
from time import sleep
from vnpy.event import EventEngine
from vnpy.trader.engine import MainEngine
from vnpy.trader.ui import QtWidgets, create_qapp
from vnpy_ctp import CtpGateway
from vnpy_ctastrategy import CtaStrategyApp, CtaEngine

def main():
    event_engine = EventEngine()
    main_engine = MainEngine(event_engine)
    main_engine.add_gateway(CtpGateway)
    cta_engine = main_engine.add_app(CtaStrategyApp)

    # 连接CTP(账户信息脱敏,换成你自己的)
    ctp_setting = {
        "用户名": "你的资金账号",
        "密码": "你的密码",
        "经纪商代码": "9999",
        "交易服务器": "180.168.146.187:10201",
        "行情服务器": "180.168.146.187:10211",
        "产品名称": "simnow_client_test",
        "授权编码": "0000000000000000",
    }
    main_engine.connect(ctp_setting, "CTP")
    sleep(10)  # 等连接和合约查询完成

    cta_engine.init_engine()
    cta_engine.init_all_strategies()  # 自动初始化并启动策略

    # 保持运行
    while True:
        sleep(1)

if __name__ == "__main__":
    main()

先别急着实盘——我用的是 SimNow 仿真环境做的验证(就是上面配置里的 simnow),强烈推荐所有人先走这一步:流程完全一样,但错单不心疼。

9 点 40 分,第一次跑:

代码语言:bash
复制
python run_cta.py

日志滚动,CTP 行情服务器连接成功,合约查询返回,tick 数据进来了。

那一刻真的有点小激动。 这台在云端的机器,正在接收实时行情。


四、踩坑:策略明明配好了,就是不启动

平稳运行了十分钟,我发现不对劲:行情在收,但策略一条日志都没有,像不存在一样。

查了一圈,终于定位到问题——这是个特别典型的坑,必须写清楚:

vn.py 的 CTA 策略需要在 .vntrader/cta_strategy_setting.json 里有配置才会被 init_all_strategies() 加载。我在服务器上是全新部署,.vntrader 目录根本不存在,配置是空的,所以策略压根没被加载。

解决办法:把本地电脑上 .vntrader 目录里的两个配置文件传上来:

代码语言:bash
复制
# 在本地电脑执行,把配置传到服务器
scp -r ~/.vntrader/cta_strategy_setting.json ubuntu@服务器IP:/home/ubuntu/.vntrader/
scp -r ~/.vntrader/cta_strategy_data.json ubuntu@服务器IP:/home/ubuntu/.vntrader/

注意 .vntrader 默认在用户主目录下,Linux 里是 ~/.vntrader/

传完重启脚本,日志里终于出现了熟悉的 [CtaEngine] 策略 xxx 初始化完成

10 点 05 分,全部跑通。 从下单买服务器到策略在云服务器上正常运行,1 小时 05 分,包括踩坑排查的时间。

所以给大家的提醒:从本地迁移 vn.py 到云服务器,代码要传,.vntrader 配置目录也要传,不然策略就是个摆设。


五、守护进程:实盘不能裸奔

跑通之后还有最后一步——现在进程是挂在我的 SSH 会话上的,我一断开它就没了。实盘必须配守护。

老规矩,systemd:

代码语言:bash
复制
sudo vim /etc/systemd/system/vnpy-cta.service
代码语言:ini
复制
[Unit]
Description=vn.py CTA Strategy
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=ubuntu
WorkingDirectory=/home/ubuntu/vnpy-live
ExecStart=/home/ubuntu/vnpy-env/bin/python run_cta.py
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
代码语言:bash
复制
sudo systemctl daemon-reload
sudo systemctl enable --now vnpy-cta

从此:程序崩了 10 秒后自动拉起,服务器重启自动恢复,SSH 断开它照跑。配合上一篇里讲的断线重连看门狗(我后来在策略层也加了行情心跳),这台云服务器上的 vn.py 就是个全自动的赚钱机器——好吧,能不能赚钱看策略,但至少机器本身不会再掉链子了


六、实盘两周观察:稳得让我有点不习惯

切到实盘到现在两周了,说几个真实感受:

  1. 延迟降了。家里宽带连 CTP 行情延迟 30-50ms 波动,云服务器稳定在个位数。对我的中低频 CTA 影响不大,但看着舒服,而且下单回报的确定性明显更好。
  2. 再没半夜操心过。以前夜盘我手机不敢静音,现在 systemd 盯着,两周里有一次行情网关闪断,自动重连恢复,我是第二天翻日志才知道的。
  3. 2 核 4G 完全够。CPU 平时 10% 以下,内存稳定在 1.8G 左右。我跑了 4 个合约的策略,富余量还很大。

七、实话实说:两个不爽的点

  1. 没法随时看图形界面。无头模式稳定是稳定,但想看 K 线、看持仓的图形界面就得连 VNC 或者本地开 vn.py 同步看,稍微麻烦点。我的解法是把关键状态(持仓、当日盈亏、心跳)用脚本推到微信,比看图形界面还方便。
  2. SimNow 周末维护。周日想测试经常连不上仿真环境,这是 SimNow 的问题不是服务器的问题,但新手碰到容易懵,以为是部署错了。

八、总结:1 小时换两年的安稳

维度

家里台式机跑 vn.py

腾讯云轻量服务器跑 vn.py

断电/跳闸

全盘停摆,持仓裸奔

不存在这个问题

半夜崩溃

等我发现

10 秒自动拉起

行情延迟

30-50ms 波动

个位数毫秒稳定

Windows 更新重启

半夜偷袭

Linux 没这毛病

月成本

电费三四十+操心

一天不到一块钱

部署耗时

——

实测 1 小时跑通

回头看那天跳闸,反而是个好事——它逼我做了这个早该做的决定。

给不同的朋友:

  • 还在本地跑 vn.py 实盘的:别等跳闸了。这篇教程照抄,1 小时搞定,先用 SimNow 验证再上实盘。
  • 纯新手:vn.py 官方文档其实写得很全,但记住我这篇里的两个坑——.vntrader 配置目录要一起迁移,以及实盘前先跑 SimNow 仿真,能帮你避开 90% 的懵圈时刻。
  • 老鸟:无头模式 + systemd 是基操,别忘了再加一层行情心跳看门狗和状态微信推送,云服务器才能发挥全部价值。

放心冲,这可能是你量化生涯里性价比最高的 1 小时。


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


常见问题 FAQ

Q:云服务器跑 vn.py 需要什么配置?

实盘建议 2 核 4G 起步。vn.py 加 CTP 行情加策略引擎,内存轻松吃 1.5G 以上,2G 的机器会很紧张。实测 4G 内存跑 4 个合约的 CTA 策略,内存稳定在 1.8G 左右。

Q:vn.py 在云服务器上没有图形界面怎么用?

用无头(headless)模式:写一个 Python 脚本直接创建 MainEngine、连接 CTP、启动 CTA 引擎,不需要任何图形界面。服务器的正确用法就是纯脚本驱动 + systemd 守护,7×24 小时挂着。

Q:vn.py 从本地迁移到云服务器,为什么策略不启动?

90% 是忘了迁移 .vntrader 配置目录。CTA 策略的参数配置存在 ~/.vntrader/cta_strategy_setting.json 里,新服务器上这个文件不存在,策略就不会被加载。用 scp 把本地的 .vntrader 目录传上去再重启即可。

Q:云服务器上的 vn.py 断线了会自动重连吗?

分两层:进程崩溃由 systemd 的 Restart=always 自动拉起;行情连接断开但进程没死的情况,vn.py 的 CTP 网关本身有断线重连机制,但建议再加一层行情心跳看门狗做兜底,重连逻辑要带退避。

Q:直接上实盘还是先仿真?

强烈建议先用 SimNow 仿真环境跑至少一周。连接流程、配置项、策略加载和实盘完全一样,但错单不产生真实亏损。注意 SimNow 周末经常维护连不上,别误以为是部署问题。

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

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

目录
  • 腾讯云轻量服务器部署 vn.py 实盘记录:从购买到跑通只用 1 小时
    • 一、选配置:别在内存上省钱
    • 二、装环境:Ubuntu 上装 vn.py 比 Windows 还顺
    • 三、写启动脚本:无头模式才是服务器的正确打开方式
    • 四、踩坑:策略明明配好了,就是不启动
    • 五、守护进程:实盘不能裸奔
    • 六、实盘两周观察:稳得让我有点不习惯
    • 七、实话实说:两个不爽的点
    • 八、总结:1 小时换两年的安稳
    • 常见问题 FAQ
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档