TqSdk 自动化交易:普通交易者 99 元云服务器方案
内容持续修订,过时部分会及时剔除
很多人以为自动化交易要先会写程序、买服务器、接柜台。其实对普通交易者,最小可用方案就三样:一个免费的 Python 库、一台 99 元一年的小服务器、一套写死了止损的规则。
1. TqSdk 免费版够跑通回测、模拟和指定期货公司的实盘;需要更多账户和股票数据时,再考虑专业版。
2. 2 核 2G 云服务器足够跑一个日线或小时级策略,99 元买的是“不断电、不断网”,不是算力。
3. 自动化只放大你原本的期望值:正期望放大,负期望也放大;止损必须写在代码里,不能只写在脑子里。
一、先泼冷水:自动化不等于“躺着赚钱”
自动化交易的本质,是把“看到信号—下单—止损”这套动作交给程序执行。它不负责预测方向,也不负责把亏损变成盈利。程序真正的价值是:
- 不漏单:信号出现就执行,不因为开会、睡觉、情绪不好而错过。
- 不手软:止损触发就平仓,不给自己“再等等”的机会。
- 可复盘:每一笔委托、成交、拒单都有日志,能查是规则问题还是执行问题。
反过来说,如果你的规则本身是负期望,自动化只会让你亏得更快、更稳定。所以这篇讲的是“怎么把规则跑起来”,不是“怎么找到一个赚钱规则”。如果你确定不想写代码,手工下单、套利和期权的工具可以看无限易这篇;下面只讲自动化。
| 普通交易者需要 | 普通交易者不需要 |
|---|---|
| 一台能 7×24 在线的机器 | 机房托管、专线、FPGA |
| Python 基础:变量、循环、函数 | 从零手写 C++ 交易网关 |
| 小时线或日线级别的规则 | 毫秒级抢单、做市商级延迟 |
| 模拟、回测、小资金实盘 | 一上来就全仓跑实盘 |
二、TqSdk 免费版,免费到什么程度
TqSdk 是天勤量化(信易科技)提供的 Python 期货量化库。它把行情、K 线、回测、模拟和实盘交易封装成 Python 接口,登录用“快期账户”,实盘再绑定期货资金账户。
免费版不是“只能看不能做”。按官网当前说明,免费版已经包含回测、模拟交易、期货与商品期权行情,以及指定期货公司的实盘交易。换句话说,普通交易者跑通第一套策略,通常不需要先买专业版。
| 能力 | 免费版 | 说明 |
|---|---|---|
| Python API | 支持 | 策略、行情、下单都在 Python 里完成 |
| 历史回测 | 不限次数 | 用 TqBacktest 回放历史行情 |
| 模拟交易 | 支持 | TqSim 本地模拟,或 TqKq 快期模拟 |
| 实盘交易 | 指定期货公司 | 开户前先查支持名单,不在名单可能要专业版 |
| 行情范围 | 期货、商品期权、中金所期权 | A 股、ETF 期权等属于专业版范围 |
| 专业版 | 按年付费 | 官网标价 14888 元/年,含更多账户、股票与 ETF 期权数据 |
这里有两个容易踩的点:
- “免费”不等于“所有期货公司都能实盘”。先确认你的期货公司在支持名单里,再决定要不要开实盘。
- “能回测”不等于“回测可信”。手续费、滑点、换月、涨跌停都要按真实情况估,零成本回测出来的漂亮曲线没有意义。
价格、支持名单和功能边界会调整,购买或开户前以天勤官网和期货公司的最新说明为准,别拿本文当报价单。
三、算一笔账:为什么是 99 元云服务器
策略跑在家里电脑上,最大的问题不是性能,而是“它可能会关”:停电、断网、系统更新、误碰电源、合上笔记本。云服务器的价值,就是把这些意外换成一份可预期的小账单。
TqSdk 免费版:0 元
阿里云 2 核 2G、3M 带宽、40G 系统盘:99 元/年(活动价,以购买页为准)
合计:99 元/年,平均每月 8 元出头。
对比一下家里常开的电脑:按整机平均 60W、电价 0.6 元/度粗算,一年电费约 315 元,还没算硬件折旧和断网风险。对只跑一个策略的人来说,99 元的小服务器更省心。
但 2 核 2G 有明确边界:
- 够用:一个品种、小时线或日线、几十根到几百根 K 线的策略,内存占用很小。
- 够用:同时订阅几个合约的行情、跑模拟和小资金实盘,2G 内存通常吃得下。
- 不够用:多品种 tick 级回测、批量下载多年历史数据、跑重型机器学习。这些任务放本地或按需升配。
- 带宽别误解:3M 带宽传行情和委托够用,但不适合把大量 tick 数据反复下载到本地。
阿里云的 99 元档经常是“经济型 e 实例 + 固定配置”,新老用户、续费同价等规则会变,活动也有期限。买之前看清楚:配置能不能满足你、到期续费是什么价、地域和系统盘够不够。
四、从零跑通:七步
- 开期货账户,注册快期账户。 期货账户用于实盘,快期账户用于登录 TqSdk。只做模拟的话,先注册快期账户也能开始。
- 买一台小服务器。 选 2 核 2G、Ubuntu 22.04 或 24.04、40G 系统盘。安全组只开 SSH,别把 Python 服务端口暴露到公网。
- 装 Python 3.9+ 和 TqSdk。 用虚拟环境,避免污染系统 Python。
- 跑通一次行情。 先打印最新价,确认账号、网络、合约代码都没问题。
- 跑模拟。 用 TqSim 或 TqKq 至少跑两到四周,观察成交、拒单、断线重连。
- 做回测。 把成本、滑点、换月规则写进去,再看样本外。回测不过关,不要上实盘。
- 小资金实盘。 先确认期货公司的程序化交易报备和外接要求,再用最小手数跑一到三个月,确认执行和回撤都在可接受范围,再考虑放大。
服务器上装环境的命令大致如下(以 Ubuntu 为例):
sudo timedatectl set-timezone Asia/Shanghai
sudo apt update
sudo apt install -y python3 python3-venv python3-pip
python3 -m venv ~/tqenv
source ~/tqenv/bin/activate
pip install tqsdk -i https://pypi.tuna.tsinghua.edu.cn/simple
先写一个最小的行情脚本,确认能连上:
from tqsdk import TqApi, TqAuth
api = TqApi(auth=TqAuth("快期账户", "账户密码"))
quote = api.get_quote("SHFE.rb2701") # 换成仍在交易的合约
print(quote.datetime, quote.last_price)
api.close()
运行 python hello_tqsdk.py,能看到行情时间与最新价,说明环境通了。正式跑策略时,用 nohup 或 systemd 让程序在 SSH 断开后继续运行;生产环境更推荐 systemd,因为它能自动重启、集中看日志。
示例里的账号密码只是占位。实盘时用环境变量或服务器上的私有配置文件读取,别把明文密码提交到公开仓库;服务器只开必要端口,系统补丁也要定期更新。
五、最小策略骨架:均线 + 刚性止损
下面这段代码只做多、只跑一个品种、用上一根已完成 K 线判断,目的是展示“信号—下单—止损—退出”的完整结构。它用 20 周期均线判断方向,用 ATR(平均真实波幅,衡量正常波动)的 2 倍作为止损距离。它不是赚钱策略,参数也没有优化过,直接实盘会亏。
from tqsdk import TqApi, TqAuth, TargetPosTask
from tqsdk.tafunc import ma
api = TqApi(auth=TqAuth("快期账户", "账户密码")) # 默认 TqSim 模拟
quote = api.get_quote("KQ.m@SHFE.rb")
symbol = quote.underlying_symbol
klines = api.get_kline_serial(symbol, 60 * 60, data_length=300)
target = TargetPosTask(api, symbol)
entry = None
stop = None
try:
while True:
api.wait_update()
if not api.is_changing(klines.iloc[-1], "datetime"):
continue
close = float(klines.close.iloc[-2]) # 上一根已完成 K 线
ma20 = float(ma(klines.close, 20).iloc[-2])
atr = float((klines.high - klines.low).rolling(14).mean().iloc[-2])
atr = max(atr, close * 0.002) # 简化 ATR,防止过小
if entry is None:
if close > ma20:
target.set_target_volume(1)
entry, stop = close, close - 2 * atr
print("开多", symbol, "参考价", entry, "止损", stop)
elif close < stop:
target.set_target_volume(0)
print("触发止损", close)
entry, stop = None, None
finally:
api.close()
模拟跑通后,实盘要把 TqApi(auth=...) 换成 TqApi(TqAccount(...), auth=...)(TqAccount 需从 tqsdk 导入),并先确认期货公司在免费版支持名单里;不要直接把模拟代码连上实盘。
这段骨架里,有几处是刻意简化、实盘必须补上的:
- 只用信号价估算入场价,实盘应读取成交均价,否则止损距离会偏。
- 只做多,没有做空;做空要单独验证,不能把方向反过来就算完。
- 不自动换月;主力合约变了要重启或写移仓逻辑。
- ATR 用高低差近似,不是严格的真实波幅;参数要按品种波动重新校准。
- 没有断线重连和告警;实盘要加心跳、日志、异常退出重启。
开仓前就要写死:止损价在哪、一手亏多少钱、账户最多承受几 R(1R = 单笔愿意亏的钱)、连续亏损几次停机。代码只是执行这些规则的工具,不是替你思考的合伙人。
六、上线前的检查表
| 检查项 | 合格标准 |
|---|---|
| 策略期望值 | 扣掉手续费和滑点后仍为正,且有样本外验证 |
| 最大回撤 | 在账户能承受的范围内,不靠“扛一扛”过关 |
| 止损 | 写在代码里,触发即平仓,不依赖人工盯盘 |
| 仓位 | 单笔亏损不超过账户的一个固定比例 |
| 断线处理 | 有日志、有重启、有最大持仓保护 |
| 换月 | 知道主力切换时程序会怎样,不会交易到不活跃合约 |
| 人工接管 | 能随时停机、撤单、平仓,不依赖程序自己恢复 |
| 资金规模 | 先用最小手数跑一到三个月,再谈放大 |
七、常见问题
免费版能直接实盘吗?
可以,但仅限指定期货公司。你的期货公司不在名单里,可能就需要专业版。先查名单,再开户,顺序别反。
2 核 2G 够不够,必须买云服务器吗?
跑一个日线或小时级策略,2 核 2G 通常够用;真正吃资源的是多品种 tick 回测、长时间历史数据下载和图形界面。服务器也不是必须的:旧电脑、迷你主机都能跑,前提是供电和网络稳定;树莓派要先确认 TqSdk 依赖是否兼容。云服务器的优势是不受家里停电断网影响,出问题容易重装;缺点是多一份年费,且要自己维护安全。
程序断了怎么办?
先看日志,再看持仓和委托,最后才重启。重启前要想清楚:现有仓位由谁接管、要不要先平掉、止损是否还有效。别让程序在“不知道自己有仓”的状态下重新开仓。
“自动化不是帮你找到优势,而是帮你把已有的优势执行到位;如果本来就没有优势,它只会把亏损执行得更整齐。”