使用手册
功能在哪 · 是什么 · 怎么调出来一、TqSdk 是什么
1、一句话定位
TqSdk(TianQin SDK,天勤 Python 开发包)是面向国内期货市场、用 Python 写量化策略的开发包。它把国内期货的行情订阅、历史 K 线、模拟交易、实盘下单、历史回测全部封装成几个 Python 类,你 0 之后,用十几行代码就能从"打印一行螺纹钢最新价"跑到"自动开平仓"。它最大的特点是中文文档极其友好、事件循环模型简单、免费版就能在本地/快期模拟盘把流程跑通。
新手注解:TqSdk 不是一个"点开就能用"的图形软件,而是给程序员用的"代码库"。它最适合会一点 Python、想做国内期货量化的人。它和快期(快期 App / 快期专业版)是同一家公司(信易科技)的产品——快期是图形交易软件,TqSdk 是给你自己写程序用的。
2、关键事实(官方口径)
| 项目 | 内容 |
|---|---|
| 开发商 | 上海信易科技(ShinnyTech),旗下有快期 App、快期专业版、天勤终端等产品 |
| 产品形态 | 纯 Python SDK(1),无自带图形界面;可配 VS Code 插件 |
| 支持市场 | 国内期货(CTP 柜台为主);专业版另提供 A 股实时行情、ETF 期权实时行情 |
| 语言/系统 | Python 3.9 及以上;Windows / macOS / Linux 均可 |
| 编程模型 | 事件驱动:2 实例 + 3 循环,行情对象自动更新 |
| 入门成本 | 免费版即可本地模拟(TqSim)/ 快期模拟(TqKq)跑通全流程 |
| 付费模式 | 免费版(有回测次数/数据/账户绑定限制)+ 专业版订阅(年费制) |
| 是否经纪商 | 不是。它通过 CTP 柜台连接你自己开户的期货公司账户 |
3、TqSdk 能做什么、不能做什么
能:订阅实时行情与历史 K 线;在本地或快期模拟盘跑模拟交易;把同一份策略代码切到历史区间做回测;连接你开户的期货公司实盘账户自动下单;用目标持仓工具自动帮你调仓。
不能:TqSdk 本身不提供资金托管、不开户——实盘前你得先在某家期货公司开好户、拿到 CTP 资金账号和交易密码;它也不会替你判断行情、不给投资建议;回测结果不代表未来收益。
白话:TqSdk 像一个"期货世界的 Python 遥控器"。你注册快期账户解决"登录",再用 4 解决"先拿假钱练手",写熟了换成 5 就连上你真实的期货账户了。从模拟到实盘,策略代码几乎不用改。
4、新手学习路径建议(推荐顺序)
- 第一步(免费):装 Python 3.9+ → 6 → 注册快期账户 → 跑通官方"十分钟入门":打印一次螺纹钢行情。
- 第二步(免费):加 7 让行情持续刷新;再读 8 拿到 K 线 DataFrame,会用 9 / 10。
- 第三步(免费模拟):用默认 11(本地假钱)+ 12 跑一个"均线之上开多、之下空仓"的完整策略。
- 第四步(免费回测):给 13 加 14,把同一段策略丢进历史区间跑回测。
- 第五步(可选专业版/实盘):确认逻辑稳定后,再考虑专业版(更多回测次数、tick 数据、A 股/期权行情),并在期货公司开户后用 15 小资金实盘。
白话:前三步一分钱不用花,甚至不用期货账户。把"打行情—读K线—自动下单—历史回测"这条链在 16 里跑顺,是上实盘前最关键的一步。
二、安装、快期账户与版本权益
1、环境与安装(官方步骤)
- 先装 Python 3.9 或更高版本(Windows / macOS / Linux 都行)。
- 打开命令行(Windows 用"命令提示符"或 PowerShell),执行:
三、国内下载慢时,用清华镜像
18新手注解:两个容易踩的坑:① 你的策略脚本文件不要命名成 19——否则 Python 会把你自己的文件当成库导入,直接报错;② 如果你同时装了 20(天勤另一条版本线),注意 import 的是哪个包,别混。
1、必须先注册"快期账户"
使用 TqSdk 的前提是先在"快期账户中心"注册一个快期账户(手机号/用户名/邮箱 + 密码)。程序里用 21 登录。
22四、三种账户:TqSim / TqKq / TqAccount
TqSdk 的"账户"参数决定你用假钱还是真钱。创建 23 时不传账户参数,默认就是 24。三种账户对比:
| 账户类 | 钱是真是假 | 记录保存在哪 | 适合场景 |
|---|---|---|---|
| 25 | 本地假钱 | 只在当前程序内存里,默认不跨进程保存 | 入门、临时调试、历史回测 |
| 26 | 快期模拟假钱 | 快期模拟服务端,可在快期 App / 快期客户端里查看这个模拟账户 | 想长期跟踪一个模拟账户、配合图形软件看 |
| 27 | 真钱实盘 | 期货公司 CTP 柜台 | 策略验证完成后的实盘 |
from tqsdk import TqApi, TqAuth, TqSim, TqKq, TqAccount
五、本地模拟(默认,假钱,程序一关就没)
api = TqApi(TqSim(), auth=TqAuth("快期账户", "密码"))
六、快期模拟(假钱,但快期 App 里能看到)
api = TqApi(TqKq(), auth=TqAuth("快期账户", "密码"))
七、实盘(真钱!期货公司名前要加大写字母,如 H宏源期货)
api = TqApi(TqAccount("H宏源期货", "320102", "123456"), auth=TqAuth("快期账户", "快期密码"))
白话:28 是"开完就忘"的临时练习场;29 是"存到云端、快期 App 里能翻账"的模拟账户;30 才是真刀真枪。注意 31 第一个参数期货公司名前面要加大写字母前缀(如 32 的 H),这个前缀在官方"期货公司列表"里能查到,写错会连不上柜台。
纠错:早期手册里把 TqSdk 的模拟盘笼统说成"SimNow"。要分清——SimNow 是上期技术 CTP 官方的公共模拟环境(vn.py 等框架常接它);而 TqSdk 默认用的是自家的 33(本地)/ 34(快期模拟)。两者都是假钱,但不是同一套系统。
八、下单、撤单、账户持仓与目标持仓
1、直接下单 insert_order
order = api.insert_order( symbol="SHFE.rb2701", direction="BUY", # BUY 开多 / SELL 开空 offset="OPEN", # OPEN 开仓 / CLOSE 平仓 / CLOSETOD 平今 volume=1, # 手数 limit_price=3000 # 限价
)
九、循环里观察委托状态
while order.status == "ALIVE": api.wait_update() print("委托状态:", order.status, "未成交手数:", order.volume_left)
- 35 返回的是委托引用 order,不是成交确认。
- 36:37=还挂着没结束;38=已结束(可能成交、也可能被撤/被拒)。
- 用 39 算已成交手数;用 40 看提示(为何被拒)。
1、撤单 cancel_order
api.cancel_order(order) # 传入 order 引用或委托号
十、撤单后仍要继续 wait_update() 才能收到结果
1、查账户与持仓
account = api.get_account() position = api.get_position(symbol) print("可用资金:", account.available) print("净持仓:", position.pos)
2、目标持仓 TargetPosTask(强烈推荐)
新手别自己算"该买几手、该平几手"。用 41,你只需要表达"我最终希望持有几手",它自动帮你下单/撤单调仓到目标:
from tqsdk import TqApi, TqAuth, TargetPosTask from tqsdk.tafunc import ma
api = TqApi(auth=TqAuth("快期账户", "密码")) quote = api.get_quote("KQ.m@SHFE.rb") symbol = quote.underlying_symbol klines = api.get_kline_serial(symbol, 60) target = TargetPosTask(api, symbol) # 给这个品种建一个"调仓助手"
while True: api.wait_update() if api.is_changing(klines.iloc[-1], "datetime"): # 新K线开始 ma15 = ma(klines.close, 15) if klines.close.iloc[-2] > ma15.iloc[-2]: target.set_target_volume(1) # 目标:多头1手 else: target.set_target_volume(0) # 目标:空仓
白话:42 里的"1"是最终要持有的手数,不是"再买1手"。条件一直满足时反复设同一个值不会累加。它内部自动处理开仓/平仓/撤单,比你手写买卖逻辑稳得多。注意:同一个合约,不要同时用手动 insert_order 和 TargetPosTask,两套逻辑会互相打架。
十一、与其他框架/软件对比
| 方案 | 定位 | 最强项 | 短板 | 适合谁 |
|---|---|---|---|---|
| TqSdk | Python 期货 SDK | 中文文档极简、wait_update 模型好懂、免费模拟/回测上手快、目标持仓好用 | 以期货为主;A 股/期权实时行情与 tick 历史数据要专业版;纯代码无自带看盘界面 | 会 Python、做国内期货、想免费快速入门的个人 |
| vn.py | 开源 Python 量化框架 | 开源、生态大、期货股票外汇都能接、可深度定制 | 部署复杂、要自己搭环境、对新手不友好 | 有工程能力、想深度改造的人 |
| QMT / miniQMT | 券商提供的股票量化终端 + xtquant | 股票/ETF/期权实盘主流、直连券商柜台 | 要券商开通权限(有资金门槛)、以股票为主 | 做股票的个人量化 |
| 天勤终端 / 快期 App | 同公司的图形软件 | 看盘、画线、自定义组合、历史复盘 | 不是写策略的地方 | 配合 TqSdk 做图形化盯盘与复盘 |
白话:一句话选型——做期货、会 Python、想免费快速上手 → TqSdk;要开源深度改 → vn.py;做股票、能过券商门槛 → QMT。 TqSdk 的官方文档本身也提供了"TqSdk vs CTP 直连""TqSdk vs vn.py"的专门对照页,想迁移时可以先看那两篇。
操作教程
一步一步 · 跟着做完一件事十二、核心编程模型:TqApi 与 wait_update 事件循环
1、一切的中心是 TqApi 实例
所有行情、K 线、账户、下单都挂在一个 43 对象上。你先取"引用",再在循环里等更新——这是 TqSdk 最核心的思维方式。
2、wait_update() 事件循环(必须理解)
44- 45 在循环外调用一次即可,返回的 46 是个会自动更新的"活对象"。
- 47 阻塞着等,一旦有行情/委托/成交更新,它就返回,并把 48 等对象的字段刷新好,再往下执行循环体。
- 只反复 49 而不调用 50,行情永远不会刷新。
- 非交易时段可能很久没有新输出,这不是程序卡死;按 51 可停止。
3、is_changing():只在"真变了"时才处理
52 返回不代表你关心的那个字段一定变了(可能是别的订阅更新了)。用 53 或 54 判断"是不是我关心的东西变了",避免重复触发逻辑。
白话:TqSdk 的套路是"先把电表(quote)挂好,然后站在旁边等(wait_update),电表一跳你就读数"。新手最常见的 bug 就是忘了 55,结果程序只打印同一个死价格;或者每次循环都重新 56,白白浪费。
十三、获取行情与 K 线
1、实时行情 get_quote
57十四、quote 里还有:买价 ask_price、卖价 bid_price、成交量 volume、持仓量 open_interest 等字段
1、K 线 get_kline_serial
58 返回一个会持续更新的 pandas.DataFrame:
59- 60 = 最后一根 K 线(它正在形成中,收盘价还会变)。
- 61 = 上一根已完成的 K 线——写策略判断信号时,用 iloc[-2],别用正在跳动的 iloc[-1]。
- 第二个参数是 K 线周期,单位是秒:60=1分钟、300=5分钟、3600=1小时、86400=1天。
2、主连合约代码 KQ.m@ 与下单代码的区别
看趋势用主连(连续合约),代码形如 62(螺纹钢主连)。但主连本身不能下单——它会自动换月。下单前要用 63 取出当前主连对应的真实合约代码:
643、自带技术指标 tafunc
TqSdk 在 65 里内置了常见指标(如 66 均线):
67白话:品种代码分两种——68(如 KQ.m@SHFE.rb)是"自动跟主力"的看盘代码;69(如 SHFE.rb2701)是"具体月份合约"的下单代码。新手最容易犯的错就是拿主连代码直接 70,那样是下不了单的。
十五、实盘接入与期货公司
- 先在某家期货公司开好户、做适当性评估,拿到 CTP 资金账号和交易密码。
- 在官方"期货公司列表"里查到你这家期货公司对应的大写字母前缀(如 H=宏源、H=海通等)。
- 用 71 替换掉原来的 72,策略其余代码不变。
- 第一次用某个实盘账户时,系统会把它自动绑定到你的快期账户(免费版绑定数有限制,专业版 3 个)。
白话:从模拟到实盘,改动往往就一行——把 73 换成 74。但就这一行,背后是真钱。强烈建议实盘第一周只用最小手数(1 手)跑,观察几天程序的下单、撤单、断线重连是否符合预期,再考虑加仓。
十六、隐藏功能与冷门技巧拾遗(祖坟级)
- 主连代码自动换月的正确姿势:示例策略常在启动时取一次 75,不处理跨日换月;真要跨日跑,需要在新交易日重新取一次主力合约代码。
- 用 iloc[-2] 而不是 iloc[-1] 判信号:最后一根 K 线还在跳动,拿它判信号会反复抖动;拿已完成的倒数第二根判断更稳。
- 同一合约别混用两种下单方式:手动 76 和 77 同时作用于一个 symbol 会互相干扰、乱调仓。
- VS Code 插件右键运行:装官方 VS Code 插件后,可在编辑器里直接设好账户、右键"模拟/实盘运行/回测",不必手敲命令行;插件里设的账户会覆盖代码里写的账户。
- AI 技能包:官方提供 tqsdk-trading-and-data.zip,丢给 Trae/ChatGPT 等 AI 让它先读 SKILL.md 再帮你写策略排错,比空手问 AI 准确得多。
- 免费版也能跑股票回测:版本说明提到免费用户回测时可交易股票(期货为主但回测能碰股票),想研究股票策略又不想买专业版时可利用。
- 期货公司大写前缀:TqAccount 第一个参数的字母前缀(H、等)必须到官方"期货公司列表"查,凭感觉写连不上柜台。
- 超时保护:文档"常见问题"里给了 78 加超时的写法,防止委托一直 ALIVE 把程序永久卡住。
- close() 收尾:无论模拟还是实盘,用毕显式 79 释放连接,尤其实盘程序要做异常捕获后再关,避免柜台连接残留。
- 天勤终端的复盘功能:同公司的天勤终端/快期专业版提供自定义组合、历史复盘,可与 TqSdk 写的策略配合做图形化复盘。
- tqsdk 与 tqsdk2 两条版本线:官方文档同时存在 tqsdk(3.x)和 tqsdk2(2.x)两个版本线,专业版权限二者通用;新手按最新 quickstart 用 80 即可,别两个包都装混着 import。
- 不要把脚本命名为 tqsdk.py:会遮蔽库导致 import 报错,这是官方 FAQ 里高频问题。
十七、2026 增量更新(深挖第2轮)
来源:信易科技官方文档「版本变更」页(doc.shinnytech.com/tqsdk/latest/version.html,抓取于 2026-09)。本节只记手册正文尚未覆盖的 2026 年新版本接口与柜台接入。
1、当前版本与新接口(2026 年连发 3.9.x 3.10.x)
- 最新 3.10.2(2026-08-17):81 现在支持上期所 / 能源中心组合套利指令;82 返回值新增 83(价格小数位数)字段;84 补充了 ETF 期权标的 85、86、87。
- 3.10.0(2026-05-26):88 与 89 现在都能处理有最小开仓手数限制的合约(以前这类合约用目标持仓会报不合法)。
- 3.9.5(2026-04-29):90 同样支持有最小开仓手数限制的合约。
2、新接入两类柜台:TqXuntou(迅投)与 TqO32(恒生 O32)
- 3.9.7(2026-05-14):新增 91,直连迅投柜台。
- 3.9.4(2026-04-17):新增 92,接入恒生 O32 资管/机构柜台。
- 3.9.9(2026-05-19):迅投直连改为必须指定后端账户才能登录,不能再像以前那样空着后端直连。
白话:以前 TqSdk 基本只靠 CTP 接期货公司;2026 年开始把迅投、恒生 O32 这两类股票/机构柜台也包进来了,做股票资管的同学不用再自己拼网关。新账户类用法还是 93 这套,具体参数查官方文档对应类。
3、行情与风控新字段:open_limit、TqScenario 场景试算
- 3.9.3(2026-04-14):94 对象新增 95 属性,返回合约日内开仓限额(目前只对期货合约有效)。
- 3.9.2(2026-04-07):新增 96 类,支持场景试算——实盘保证金查询、持仓保证金占用试算、保证金率变化后风险度会变成多少,都能先算再下单;同时 97 加了 98 参数,用来过滤系列期权。
- 3.9.0(2026-01-16):新增 99,获取非量价的宏观经济数据库(EDB)数据。
白话:100 就是交易所给某些品种设的"当天最多还能开几手",风控策略里可以直接读这个字段判断还能不能开;101 则是"假如保证金率从 8% 调到 12%,我现在的仓位会不会穿仓"的事前模拟器。
本站固定免责声明:本教程仅讲解天勤 TqSdk 软件(Python SDK)的界面与操作方法,不构成投资建议。程序化交易与回测结果均不保证盈利,请谨慎决策。价格、功能、接口、快捷键等以官方文档(doc.shinnytech.com)与信易科技官网最新版本为准;本文部分价格与权益为官方页面公开口径的整理,仅供参考。
💬 用户评价 (0)
立即登录