期货量化订不到行情:天勤合约代码与交易所符号写法

前言

策略逻辑没问题,get_quote 却一直 nan,我排查时十有八九是合约代码写错:交易所前缀大小写、郑商所三位年月、新交易所 GFEX 符号不熟。天勤 TqSdk 要求合约带交易所代码,格式为 交易所.合约,写错不会给友好提示,只是没有行情。

下面整理国内期货常见写法、易错点和验证方法,并说明和 get_kline_serialinsert_order 要用同一字符串。代码示例用活跃品种示意,你换成自己交易的合约即可。

一、基本格式:交易所.合约

统一形式:

text 复制代码
SHFE.rb2510
DCE.i2509
CZCE.MA509
CFFEX.IF2506
INE.sc2510
GFEX.si2508

第一段的交易所 CODE 必须与官方一致,通常全大写。第二段合约代码规则因交易所而异,郑商所品种代码常全大写、年月三位,上期所、大商所多为小写品种加四位年月。

二、各所易错点

交易所 前缀 常见错误
上海 SHFE SHFE 写成 shfe;品种大小写写反
大连 DCE DCE 数字年月位数错
郑州 CZCE CZCE 用四位年月;品种未大写
中金 CFFEX CFFEX 股指期货月份搞错
能源 INE INE 与 SHFE 混淆
广期 GFEX GFEX 新所符号不熟

郑商所示例:CZCE.MA509 表示甲醇 2025 年 09 月附近合约(具体以交易所挂牌为准),不要写成 CZCE.ma2509 这类四位年月除非文档明确支持。

三、写完后如何立刻验证

python 复制代码
from tqsdk import TqApi, TqAuth, TqSim

api = TqApi(TqSim(), auth=TqAuth("账户", "密码"))
symbol = "CZCE.MA509"  # 改成你要测的
q = api.get_quote(symbol)
for _ in range(30):
    api.wait_update()
    if q.last_price == q.last_price:  # 非 nan
        print("订阅成功", symbol, q.last_price)
        break
else:
    print("仍无有效价,检查代码", symbol)
api.close()

也可在快期客户端查「合约代码」字段,复制到脚本,比手打少错。

四、K 线、下单必须用同一 symbol

get_kline_serial(symbol, ...)get_position(symbol)insert_order 的第一个参数,都应与 get_quote 完全一致。换月时只改一处常量或配置文件,避免行情订 A、下单 B。

主力连续、指数合约另有 KQ.m@KQ.i@ 前缀规则,研究链与交易链要分开;实盘下单一般仍用具体月份合约。

五、组合合约与特殊代码

跨期 SPSPD 等组合合约代码更长,订阅前在客户端确认完整字符串。写错时同样无行情,排查方式与单合约相同。

总结

订不到行情,先怀疑合约代码而不是怀疑策略。天勤按完整 交易所.合约 订阅,大小写和年月位数都要与交易所挂牌一致。

建议维护一份「当前交易合约表」CSV,脚本只读表内代码;换月时改表、先跑最小连通脚本,再跑策略。

FAQ

1)主连代码怎么写?

研究可用 KQ.m@ 主连;实盘执行用具体月份。

2)大小写不敏感吗?

敏感,以官方及客户端显示为准。

3)股票期权能用同样格式吗?

期权有独立代码规则,见官方期权交易文档。

4)回测里 symbol 和实盘不一致?

回测结果无法对照,应统一命名。

风险提示

本文用于合约代码技术说明,不构成投资建议。挂牌合约以交易所公告为准。

相关推荐
zzzzzz3104 小时前
当产品经理说这个很简单:我用Python自动化处理奇葩需求的实战指南
python·pycharm·产品经理
雪隐4 小时前
个人电脑玩AI-06让5060 Ti给你打工——不光能画画,Qwen3-TTS还能学人说话,连我老板都信了!
人工智能·后端·python
兵慌码乱16 小时前
面向桌面端的资产管理系统分层架构设计与核心模块实现
python·系统架构·sqlite·pyqt5·数据库设计·桌面应用开发·mvc架构
hboot17 小时前
AI工程师第三课 - 机器学习基础
python·scikit-learn·kaggle
顾林海1 天前
Agent入门阶段-编程基础-Python:流程控制
python·agent·ai编程
呱呱复呱呱1 天前
Django CBV 源码解读:一个请求是怎么找到你的 get() 方法的
python·django
曲幽1 天前
刚部署的 LibreTranslate 频频翻车?我掏出了 20 年前的 StarDict 词典,用 FastAPI 搭了个本地词典翻译 API
python·fastapi·web·translate·goldendict·libretranslate·stardict·pystardict
荣码1 天前
用Streamlit给AI应用套个界面,10行代码出Web页面
java·python
兵慌码乱2 天前
基于Python+PyQt5+SQLite的药房管理系统实现:事务一致性与界面解耦全流程解析
python·sqlite·信号与槽·pyqt5·数据库设计·桌面应用开发·事务处理
金銀銅鐵2 天前
[Python] 体验用欧几里得算法计算最大公约数的过程
python·数学