期货 CTP 前置 AppID 与程序化外接:TqCtp 使用前提
前言
上一篇若讲“国内期货 CTP 直连有哪些坑”,本篇把镜头拉近到:你已经决定或正在考虑用期货公司给的 CTP 前置做实盘,需要弄清 AppID、AuthCode、front_url 是什么、和 SimNow 有何不同、天勤里的TqCtp还要满足哪些条件。
CTP是期货行业通用的交易接口;程序化外接指期货公司批准你的程序通过指定前置登录交易,而不是只用官方 APP 手动下单。AppID / AuthCode是 CTP 认证用的应用标识,由期货公司在审批后提供,和你在天勤里注册的“快期账户”不是同一个概念——后者用于数据与部分托管链路认证,二者在配置里可能同时出现。
本文面向正在办期货程序化资质、准备在 Python 里用天勤TqCtp连接的生产者,不默认你已有一整套 CTP 动态库环境。
一、期货公司侧通常要提供什么
| 参数 | 含义(通俗) |
|---|---|
| front_broker | 柜台/经纪商代码 |
| front_url | 交易前置地址,形如 tcp://ip:port |
| app_id | 程序化应用 ID |
| auth_code | 与 AppID 配套的认证码 |
| account_id / password | 资金账号与交易密码 |
天勤TqCtp类(见tqctp.py文档)构造参数与上表一致。缺任何一项,登录会失败,与策略逻辑无关。
二、安装包与构造示例
文档要求额外安装:
pip install -U tqsdk_zq_otg
示例(参数须换成期货公司给你的真实值):
fromtqsdkimportTqApi,TqAuth,TqCtp account=TqCtp(account_id="资金账号",password="密码",front_broker="柜台代码",front_url="tcp://ip:port",app_id="AppID",auth_code="AuthCode",)api=TqApi(account,auth=TqAuth("快期账户","密码"))登录包在底层标记backend: ctp,仍受期货公司连接数、交易时段等限制。策略层仍可用get_kline_serial、wait_update、TargetPosTask,K 线表的datetime仍来自行情服务,与是否 TqCtp 无关。
三、SimNow 参数能否直接用于生产
不能。SimNow 是常见的 CTP模拟前置,用于学习接口;生产前置地址、Broker、AppID 由你开户期货公司签发。抄错前置是最常见的“模拟能登录、实盘不能登录”原因。
四、TqCtp 与 TqAccount 如何选
- TqAccount:填写期货公司名称、资金账号、密码,通过天勤连接柜台,适合多数已开通程序化且接受该链路的客户。
- TqCtp:在必须使用自有 CTP 外接参数、且已安装
tqsdk_zq_otg时使用。
两者都不是“免审批交易”;合规责任在账户持有人。
五、失败时先查什么
- AppID/AuthCode 与柜台备案不一致
- front_url 行情/交易填反
- 未装 tqsdk_zq_otg
- 同一账号多端登录被踢
策略未验证前,建议仍用TqSim/TqKq在相同wait_update骨架上跑通,再换TqCtp构造,只改环境层。
总结
期货 CTP 前置与 AppID是实盘程序化外接的门槛;天勤TqCtp在参数齐全时提供与手写 CTP 等价的连接方式,但策略仍应通过datetime触发、get_position核对等统一写法维护。SimNow 与生产前置不可混用;与TqAccount按维护成本与期货公司要求选型。
办外接期间可继续用模拟账户验证 K 线与目标持仓逻辑,避免在资质未齐时硬连生产前置空耗时间。
FAQ
1)TqAuth 还要吗?
示例中仍传入,按你环境文档配置数据与交易权限。
2)Linux 能否用 TqCtp?
取决于 tqsdk_zq_otg 与期货公司说明,与手写 CTP 类似。
3)行情也要单独 CTP 吗?
天勤通常一并处理订阅;具体以你使用的账户类型文档为准。
4)密码变更?
同步改配置,重启进程。
风险提示
本文说明接入条件,不构成投资建议。
