
这篇教程解决的问题:把天勤量化TqSdk部署到云服务器上,让期货策略7×24小时跟着夜盘跑。做完你会得到:一台装好TqSdk的Ubuntu云服务器、一个能订阅行情并自动发信号的实盘策略、以及进程守护方案——夜盘到夜里11点半也不用你熬夜盯盘。我用的腾讯云轻量应用服务器2核4G,跑TqSdk加两三个合约的策略,负载常年不到20%。
我做期货CTA一年多,主力工具就是TqSdk——免费、Python原生、行情交易一体,做国内期货的老朋友应该都熟。
之前我的策略一直挂在本地Mac上,期货有夜盘啊朋友们,晚上9点到11点半,我的电脑就得陪着我熬。今年4月有一晚实在扛不住睡了,结果夜盘跳空,策略因为电脑休眠断线没处理到,第二天醒来脸都是绿的。
那天晚上我就决定:TqSdk必须上云。本以为Linux环境装这装那要折腾一两天,结果一个晚上就搞定了。这篇是全过程记录。
做期货的都懂,日盘加夜盘,一天交易时间横跨十几个小时。本地挂机意味着什么?你的电脑也得跟着上十几个小时班。
我的MacBook Pro挂TqSdk的真实体验:合盖休眠断线一次,夜盘跳空没止损,亏了三千多;macOS系统更新自动重启两次;出差带电脑过安检,策略跟着我在高铁站断网四十分钟。最难受的是心理负担——每天下午3点收盘不敢关电脑,晚上9点前必须检查一遍程序,感觉自己不是在做量化,是在给电脑当保姆。
TqSdk本身就是为无人值守设计的框架,结果我把它用成了"有人值守",这不滑稽吗。
周二晚上8点,我在腾讯云控制台买了轻量应用服务器,2核4G、Ubuntu 22.04。
这里分享一个做期货的小讲究:TqSdk的行情和交易走天勤的网关,对地域不敏感,但如果你同时对接了期货公司的柜台(比如某些需要直连的场景),选上海地域延迟最舒服。我选的上海。价格一天不到一块钱,夜盘少亏一笔就全回来了。
下单到实例运行中,不到10分钟。SSH连上去,干净得像新装修的房子。
TqSdk的安装简单到什么程度呢:
sudo apt update && sudo apt install -y python3-pip
pip3 install tqsdk就这两行。没有编译、没有依赖地狱、没有环境变量配置。装完验证一下:
python3 -c "import tqsdk; print(tqsdk.__version__)"版本号打出来,安装就结束了。全程不到5分钟。
对比一下我去年在某小厂VPS上装另一套期货框架的经历:CTP接口要自己编译,boost库版本对不上,cmake报错报了二十几行,翻GitHub Issues翻到凌晨两点,最后发现是那台机器的gcc版本太老。那次前前后后折腾了一个周末。而这次装TqSdk,5分钟。我当时真的对着终端愣了几秒:就这?
先注册天勤账号(官网免费注册,快易账户就能用),然后写策略。下面这个是我实盘跑的双均线策略精简版,去掉了仓位管理细节,核心逻辑完整可跑:
from tqsdk import TqApi, TqAuth, TqSim
api = TqApi(TqSim(), auth=TqAuth("你的天勤账号", "密码"))
quote = api.get_quote("SHFE.rb2410") # 螺纹钢
klines = api.get_kline_serial("SHFE.rb2410", 300) # 5分钟线
while True:
api.wait_update()
if api.is_changing(klines.iloc[-1], "datetime"):
ma5 = klines["close"].rolling(5).mean().iloc[-1]
ma20 = klines["close"].rolling(20).mean().iloc[-1]
pos = api.get_position("SHFE.rb2410").pos
if ma5 > ma20 and pos == 0:
api.insert_order("SHFE.rb2410", "BUY", "OPEN", 1)
elif ma5 < ma20 and pos > 0:
api.insert_order("SHFE.rb2410", "SELL", "CLOSE", 1)注意我代码里用的是 TqSim() 模拟账户——这是我强烈建议的上云姿势:先模拟盘在云服务器上跑两周,确认稳定再接实盘账户。接实盘就是把 TqSim() 换成 TqAccount("期货公司", "资金账号", "密码"),一行的事。
策略能跑只是第一步,无人值守的核心是进程守护。程序崩了要自动拉起,服务器重启要自动拉起。
我用的是supervisor:
sudo apt install -y supervisor写一个配置 /etc/supervisor/conf.d/tqsdk.conf:
[program:rb_strategy]
command=/usr/bin/python3 /root/rb_strategy.py
autostart=true
autorestart=true
stdout_logfile=/root/rb_strategy.log然后 sudo supervisorctl reload,完事。
我特意测了一下:手动 kill 掉策略进程,3秒内supervisor就把它拉起来了,日志无缝衔接。那晚我睡前kill了一次进程看它复活,然后安心地合上电脑去睡了——那是我做期货以来第一次在夜盘时段11点前睡着。
翻车环节来了。
上云第三天,我在云服务器上跑着策略,顺手在自己Mac上也登录了天勤账号想看看行情——结果云端的策略啪,断了。日志显示连接被踢。
当时我以为服务器网络有问题,排查了半天路由和带宽,一无所获。后来翻天勤文档才发现:同一个天勤账号同时只能一处登录,我在Mac上一登,云端的会话就被踢下线了。
解决办法有两个:
我选了方案一,从此云端和本地互不打架。这个坑不大,但没意识到的话能查一晚上,所以必须写出来提醒大家。
现在这台云服务器上挂着两个品种的策略(螺纹+豆粕),日盘夜盘全程无人值守。资源占用:CPU平均8%,夜盘行情密集时冲到25%,内存1.6G左右。2核4G绰绰有余。
网络方面,一个月里TqSdk和天勤网关的连接断过两次(都是网关侧例行维护),supervisor加重连逻辑自动恢复,我没干预过一次。
最让我有安全感的其实是心理变化:以前夜盘我每隔半小时瞄一眼手机,现在我的原则是"没收到异常推送就是一切正常",睡眠质量和策略稳定性同时提升了。
挑几个刺:
都是小事,不影响核心体验。
维度 | 本地电脑挂TqSdk | 腾讯云轻量应用服务器 |
|---|---|---|
夜盘 | 电脑陪我熬到23:30 | 我11点前安心睡觉 |
断线风险 | 休眠/更新/出差断网,一年翻车3次+ | 一个月0次非维护断线 |
崩溃恢复 | 人发现才有救 | supervisor 3秒自动拉起 |
成本 | 电费+电脑损耗+我的睡眠 | 一天不到一块钱 |
环境安装 | CTP框架曾折腾一个周末 | TqSdk两行命令5分钟 |
一句话:把TqSdk搬上云,是我今年做过性价比最高的一个决定。
期货夜盘党,别犹豫了,放心冲,一个晚上搞定;新手建议先在本地用TqSim模拟盘把策略逻辑验证透,再上云挂模拟盘跑两周,最后才切实盘——实盘那一步急不得。老鸟直接上supervisor方案,记得给天勤账号"分身",这个坑别再踩一遍。
Q:TqSdk在云服务器上跑需要多少配置?
2核2G起步够跑单品种,我推荐2核4G——两个品种加日志系统,内存常年1.6G左右,留点余量心里踏实。TqSdk本身很轻,不吃资源。
Q:天勤账号在云服务器和本地电脑能同时登录吗?
不能,同一账号同时只能一处登录,后登录的会把前面的踢下线。建议云端策略单独注册一个免费快易账号,本地看行情用另一个。
Q:云服务器挂TqSdk实盘安全吗?账号密码会不会泄露?
安全性取决于你自己的服务器管理:设好强密码或SSH密钥、只开放必要端口,云服务器不比你的家用电脑危险。天勤账号密码建议写在单独的配置文件里并限制文件权限(chmod 600)。
Q:TqSdk夜盘在云服务器上稳定吗?
稳定。我实测一个月,夜盘全程无人值守,除天勤网关例行维护自动重连外零中断。配合supervisor进程守护,程序崩溃3秒内自动拉起。
Q:在云服务器上跑TqSdk需要备案或者特殊资质吗?
不需要。你只是用服务器运行自己的交易程序,不对外提供服务,不涉及备案。期货交易本身用你自己的期货账户,和服务器在哪没关系。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。