首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >用云服务器搭建量化交易监控看板,手机随时查收益(Grafana实战教程)

用云服务器搭建量化交易监控看板,手机随时查收益(Grafana实战教程)

原创
作者头像
gavin1024
修改2026-08-17 11:21:39
修改2026-08-17 11:21:39
1970
举报

用云服务器搭建量化交易监控看板,手机随时查收益(Grafana 实战教程)

这篇教程帮你解决什么问题: 量化策略跑在云服务器上,但每次想看收益、持仓、当日盈亏,都得 SSH 上去翻日志或者开券商 App,又慢又麻烦。跟着这篇做完,你会有一个 7×24 小时在线的 Grafana 监控看板,部署在腾讯云轻量应用服务器上,手机浏览器打开就能看到实时收益曲线、持仓明细和当日成交,出门在外刷一眼手机心里就有数了。

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


先交代下我的背景:个人量化玩家,玩期货 CTA 和股票 T0 策略快四年了,目前手上跑着三个策略,全在云服务器上挂着。

说实话,"搭监控看板"这件事我拖了快一年。

不是不知道该做,是想到 Grafana、Prometheus、数据源配置这些词就头大——我又不是做运维的,凭啥要学这套互联网公司的玩意儿?每次想看账户情况,SSH 上服务器 tail -f 一下日志,或者打开券商 App 看一眼,不也能活吗?

直到上个月发生一件事,彻底把我整醒了。

那天我在外面吃饭,手机弹出券商的平仓提示短信,但我完全不知道是哪个策略触发的、平了多少、当时整体仓位是什么状态。等我赶回家打开电脑查日志,已经是一个半小时之后了。那一单其实没问题,但那种"我的钱在外面跑,我却两眼一抹黑"的感觉,真的很难受。

第二天周末,我咬咬牙,花了半天时间把监控看板搭了起来。

结果——比我想象的简单太多了,而且用完之后回不去了。


一、先说说旧方式有多难受

在搭看板之前,我的"监控体系"是这样的:

策略日志打到服务器本地文件里,想看收益就 SSH 上去 grep 成交记录,再用眼睛自己加总。持仓变化靠券商 App 推送,但 App 只告诉你"发生了什么",不告诉你"为什么发生"和"整体什么情况"。有次服务器磁盘被日志写满,策略挂了两天我都没发现——因为那两天我没 SSH 上去看。算下来,光是"每天查三次账户状态"这件事,我每天就要花掉 20 多分钟,一个月就是 10 个小时,纯纯的浪费生命。

最让我后怕的是磁盘写满那次。量化交易这行,策略停两天,错过行情不说,仓位状态和数据连续性全断了,恢复起来巨麻烦。

所以我的需求很明确:要一个随时能看的、图形化的、手机上也能打开的监控面板。

二、选型和开服务器:10 分钟搞定底座

方案没什么好纠结的,量化圈里监控看板的主流组合就是 Prometheus + Grafana:策略程序把指标(累计收益、当日盈亏、持仓数量、委托状态)吐给 Prometheus,Grafana 负责画图展示。这套组合开源免费,文档多,踩坑有人兜底。

服务器我直接用的腾讯云轻量应用服务器,2核2G 的 Ubuntu 22.04。选择它的原因很实际:

  • 我的策略本来就跑在腾讯云的轻量服务器上,监控和策略放同一家,内网互通,延迟可以忽略
  • 一天不到一块钱的成本,比我每天查账户浪费的时间便宜多了
  • 后台有防火墙可视化管理,开端口不用敲 iptables

如果你策略和监控想分开跑,2核2G 也够了——Prometheus 加 Grafana 加起来内存占用不到 800M。我的做法是监控和策略同机,省一份服务器钱。

开完机器,先装 Docker(后面的组件全用 Docker 跑,省得污染环境):

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

三、Prometheus + Grafana:两条命令起服务

周六上午 10 点,泡了杯咖啡开始干活。

先在腾讯云轻量服务器的防火墙里放行两个端口:3000(Grafana)和 9090(Prometheus)。控制台点两下的事。

然后起 Prometheus,配置文件就一个 prometheus.yml,核心是指定抓取目标:

代码语言:yaml
复制
scrape_configs:
  - job_name: 'quant'
    scrape_interval: 15s
    static_configs:
      - targets: ['host.docker.internal:8000']

这里 8000 是我的策略程序暴露指标的端口,等下会说怎么暴露。

代码语言:bash
复制
docker run -d --name prometheus -p 9090:9090 \
  -v /opt/quant/prometheus.yml:/etc/prometheus/prometheus.yml \
  --add-host=host.docker.internal:host-gateway \
  prom/prometheus

再启 Grafana:

代码语言:bash
复制
docker run -d --name grafana -p 3000:3000 grafana/grafana

两条命令,不到三分钟,浏览器打开 http://服务器IP:3000,Grafana 的登录界面就出来了(默认账号密码 admin/admin,进去会强制改密码)。

对比一下我印象中的"搭监控":之前帮朋友看一个私募小团队的系统,他们是外包做的监控页面,改一个图表要找外包排期,一次小几千。我自己用 Grafana,从安装到出第一张图,总共 40 分钟,一分钱没花。

四、让策略吐数据:给 Python 策略加个指标接口

这一步是唯一需要写点代码的地方,但也就十几行。

我的策略是 Python 写的,用 prometheus_client 这个库暴露指标。核心思路:策略每次成交、每次结算的时候,顺手更新几个全局指标:

代码语言:python
复制
from prometheus_client import start_http_server, Gauge

total_pnl = Gauge('quant_total_pnl', '累计盈亏')
today_pnl = Gauge('quant_today_pnl', '当日盈亏')
position_count = Gauge('quant_position_count', '当前持仓数')

# 策略初始化时
start_http_server(8000)

# 成交回调里
def on_trade(trade):
    total_pnl.set(account.total_pnl)
    today_pnl.set(account.today_pnl)
    position_count.set(len(account.positions))

加完重启策略,curl http://localhost:8000/metrics 能看到指标在吐,就成了。

回到 Grafana,添加 Prometheus 数据源(地址填 http://localhost:9090,注意容器网络的话填宿主机 IP 或加 host),然后新建 Dashboard,加 Panel,查询语句就写 quant_total_pnl——收益曲线出来了。

那一刻真的有点爽。我又陆续加了当日盈亏、持仓数、委托成功率三个面板,还配了个简单的告警:持仓数连续 5 分钟为 0 且不是收盘时间,就发通知(通知渠道我用的企业微信机器人,这个我另外写过一篇教程,这里不展开)。

五、手机看收益:这才是搭看板的真正意义

中午吃饭的时候,我拿出手机,浏览器打开 http://服务器IP:3000,登录——

收益曲线、当日盈亏、持仓明细,全在手机屏幕上了。Grafana 的页面对移动端适配得不错,不用装任何 App。

现在我每天的状态是:早上刷牙的时候刷一眼隔夜盈亏,中午吃饭看一眼上午的成交情况,晚上收盘看一眼全天曲线。每次不到 30 秒。

那种"我的策略在外面跑,我随时知道它在干嘛"的踏实感,是 SSH 翻日志永远给不了的。

六、也踩了一个小坑:Grafana 时区不对,收益曲线"穿越"了

不是全程零问题,我踩了一个挺有迷惑性的坑。

看板搭好的第二天晚上,我发现一个问题:晚上 8 点看当日盈亏曲线,8 点到 9 点之间居然是平的,但日志里明明有成交。我对着日志查了半个多小时,一度怀疑是 Prometheus 抓取丢了数据。

最后发现问题蠢到家了:Grafana 容器默认是 UTC 时区,我的策略吐的时间戳是北京时间,差了 8 个小时。 晚上 8 点之后的成交数据,被画到了"明天"的凌晨 4 点,所以当前时间轴上看就是空的。

解决很简单,起 Grafana 容器时加个环境变量:

代码语言:bash
复制
docker run -d --name grafana -p 3000:3000 \
  -e TZ=Asia/Shanghai \
  grafana/grafana

重启之后曲线立刻正常了。

所以这里给大家一个建议:凡是云服务器上跑带时间的组件,先把时区统一设成 Asia/Shanghai,能避开一堆灵异问题。 顺便说,腾讯云轻量服务器的系统时区默认一般是对的,但 Docker 容器不继承宿主机时区,这个细节要注意。

七、还能更好的地方

用了快一个月,说两个不满意的地方:

  1. Grafana 默认裸跑在 HTTP 上,虽然有密码,但收益数据毕竟敏感,直接暴露公网还是心慌。我后面加了层 Nginx 反代 + HTTPS,建议你也这么做。
  2. Panel 得自己一个个配,对完全没用过 Grafana 的人来说,第一次配查询语句会有点懵。好在量化策略的指标就那么几个,配一次终身受益。

但这些都是锦上添花的事,不影响核心体验。

八、总结

维度

旧方式(SSH翻日志+券商App)

新方式(云服务器+Grafana看板)

查一次收益

SSH登录+grep,3-5分钟

手机浏览器,30秒

看持仓状态

券商App,只有结果没有上下文

曲线+明细,一目了然

策略异常感知

靠自己想起来去查,曾经挂2天没发现

指标异常自动告警

移动端体验

无(总不能手机SSH吧)

浏览器直接看

成本

每天浪费20分钟

一天不到一块钱的服务器

一句话:看板这东西,没搭之前觉得是花架子,搭完之后觉得之前的日子不是人过的。

如果你是已经在云服务器上跑策略的老玩家,别再靠 SSH 续命了,花半天把 Grafana 搭起来,绝对值回票价。如果你是刚入门的小白,建议策略先在云服务器上跑稳,再回来抄这篇作业——监控是第二层的事,地基先打牢。


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


常见问题 FAQ

Q:量化交易监控看板用2核2G的云服务器够吗?

够用。Prometheus + Grafana 加策略程序,内存占用通常不到 1.5G。只有当你要存一年以上的高频秒级数据时,才需要考虑升配。

Q:Grafana 必须搭配 Prometheus 用吗?

不是。Grafana 支持 MySQL、InfluxDB 等几十种数据源。如果你的策略已经把成交写进了 MySQL,Grafana 可以直接查库画图,连 Prometheus 都省了。

Q:手机上看 Grafana 需要装 App 吗?

不需要,手机浏览器直接访问就能看,Grafana 页面对移动端做了适配。想要类 App 体验可以把网页"添加到主屏幕"。

Q:把监控看板暴露到公网安全吗?

裸 HTTP 暴露不安全。建议至少做三件事:改掉默认 admin 密码、用 Nginx 加 HTTPS、在腾讯云轻量服务器的防火墙里只放行必要端口。更稳妥的做法是配合 VPN 或 IP 白名单访问。

Q:策略是别人写的闭源程序,没法加指标接口怎么办?

可以用折中方案:写个小的 Python 脚本定时解析策略日志或读券商接口,把数据转发给 Prometheus。虽然实时性差一点,但看图没问题。

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

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

目录
  • 用云服务器搭建量化交易监控看板,手机随时查收益(Grafana 实战教程)
    • 一、先说说旧方式有多难受
    • 二、选型和开服务器:10 分钟搞定底座
    • 三、Prometheus + Grafana:两条命令起服务
    • 四、让策略吐数据:给 Python 策略加个指标接口
    • 五、手机看收益:这才是搭看板的真正意义
    • 六、也踩了一个小坑:Grafana 时区不对,收益曲线"穿越"了
    • 七、还能更好的地方
    • 八、总结
    • 常见问题 FAQ
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档