当前位置: 首页 > news >正文

期货量化合约代码写错:天勤 symbol 格式与 silent 订阅坑

前言

国内期货量化程序里,每一个订阅、每一笔报单都要写「合约代码」字符串,天勤 TqSdk 里叫symbol。例如螺纹钢 2025 年 10 月合约写作SHFE.rb2510(上期所 SHFE + 品种 rb + 月份 2510)。程序用api.get_quote(symbol)订行情、用get_kline_serial(symbol, 300)订 5 分钟 K 线算均线信号、用TargetPosTask(api, symbol)在该合约上调仓。代码写错时,Python 往往不报错——get_quote仍能返回对象,但可能是另一张合约、或长期无成交的冷门月份,均线信号在白算,下单则挂在错误的盘上。

常见错误:大小写写反、漏交易所前缀、郑商所月份位数搞错。下面说明天勤标准格式、启动时怎么校验、如何用query_quotes减少手写月份失误。

一、标准 symbol 格式

交易所exchange_id示例
上期所SHFESHFE.cu2510
大商所DCEDCE.i2509
郑商所CZCECZCE.TA509
中金所CFFEXCFFEX.IF2509
能源中心INEINE.sc2510

主连示例:KQ.m@SHFE.rb(以官方文档为准)。组合:DCE.SP m2509&m2511等。

大小写:品种代码通常小写(rb、cu),与query_quotes返回一致。

二、常见错误模式

  • 只有rb2510没有交易所前缀。
  • 郑商所年份位数错:SR2509vsSR509
  • 把模拟盘月份抄成已交割旧月。
  • 信号用主连KQ.m@,下单忘记映射到具体月份。
  • 复制粘贴带空格或全角字符。

三、启动时校验清单

defvalidate_symbol(api,symbol):q=api.get_quote(symbol)for_inrange(10):api.wait_update()ifq.datetime==q.datetime:breakifq.ins_class!="FUTURE":# 或你期望的类型raiseValueError(f"unexpected ins_class{q.ins_class}for{symbol}")ifq.volume==0andq.open_interest==0:log.warning("zero volume and oi, check symbol %s",symbol)returnq

对比quote.instrument_idquote.exchange_id与配置是否一致。下单前打印symbollast_priceexpire_rest_days到日志,首日人工扫一眼。

四、与 get_position 的一致性

get_position("SHFE.rb2510")的 key 必须与TargetPosTask创建时 symbol 完全一致,否则读到空持仓。多策略配置文件建议集中SYMBOL常量,禁止在代码里散落字符串。

五、query_quotes 辅助纠错

若只记得品种,可先:

api.query_quotes(ins_class="FUTURE",product_id="rb",expired=False)

从返回列表里选持仓量最大月份作为主力,减少手写月份错误。

六、配置中心化

# config.pySYMBOLS={"rb_trade":"SHFE.rb2510","rb_signal":"KQ.m@SHFE.rb",}

全项目只 import 这一处,禁止在五个文件里各写一遍字符串。

七、下单前双人复核字段

首日实盘或换月日,日志打印instrument_idexchange_idexpire_rest_dayslast_price,人工扫一眼再放开自动交易开关。

八、郑商所三位年份坑

CZCE.SR509表示 2025 年 9 月,不是SR2509。从别的交易所习惯拷贝代码时最容易错。

九、事故复盘字段

一旦出现盈亏异常,第一时间日志应能回答:当时symbol字符串、instrument_idexchange_idlast_price与预期品种是否一致。很多「策略突然不行」其实是换月后配置文件没改一行字。

总结

合约代码写错不会总在启动时报错,但会在成交、持仓、盈亏上悄悄偏离。天勤要求交易所.合约统一格式,郑商所月份位数、主连与具体月分工尤其容易踩坑。启动时用get_quote校验ins_class、成交量持仓量,用query_quotes生成候选列表,并把 symbol 收敛到配置常量,能避免绝大多数 silent wrong symbol 事故。代码正确性优先于参数优化,这是期货程序化里成本最低的保险。

FAQ

1)行情有但下单拒单?

查是否交易非可下单合约类型(指数、连续仅行情)。

2)TqAccount 与 symbol 交易所要一致吗?

账户需有该交易所交易权限。

3)组合合约 symbol 怎么写?

见官方组合代码说明,与单腿不同。

4)能否从主力自动解析?

可用quote.underlying_symbol或主连服务,但要显式映射到下单月。


本文基于天勤 TqSdk 公开 API 整理,不构成投资建议。

http://www.jsqmd.com/news/990879/

相关文章:

  • mbedtls TLS双版本兼容实战:攻克TLS 1.2到1.3的平滑迁移难题
  • 告别手工CK11N:用Python脚本+SAP GUI自动化搞定大批量成本滚算
  • 活动星系核中双黑洞合并的电磁辐射与观测策略
  • SAP Retail 商品补货主数据,Article Replenishment 从维护层级到落地设计
  • 2026上海黄金回收行业解析与五家优质门店推荐 - 润富黄金回收
  • Windows平台纯C++实现的命令行Ping工具(含ICMP报文构造、校验和计算与完整课程报告)
  • 石嘴山大武口惠农平罗黄金回收多少钱一克避坑指南 - 余生黄金回收
  • PFluxTTS:混合流匹配技术实现跨语言语音克隆
  • 泸州白酒行业格局与典藏酒市场趋势分析:从产区价值到消费场景的深度观察 - 优质品牌商家
  • 高压取电防外破警示装置:一次预警,避免一场输电事故
  • QRazyBox:如何免费修复损坏的二维码?你的终极恢复工具指南
  • 告别默认LAI!手把手教你用GLASS数据驱动WRF模拟(附Python/Matlab代码)
  • 拒绝被淘汰:基于大模型Agent的全栈临床科研新范式,医生如何抢占学术先机?
  • TMS320F28377D CLA+FPU实战:手把手教你搞定1024点FFT(附完整源码)
  • NVIDIA Profile Inspector终极指南:解锁显卡200+隐藏设置的免费工具
  • 2026年6月上海黄金变现指南与靠谱渠道推荐 - 润富黄金回收
  • 知识花园实战指南:用自动化脚本打造高效个人知识管理系统
  • 告别NS方程恐惧症:用Python从零实现一个简单的格子玻尔兹曼(LBM)流体模拟器
  • 杭州市民卖黄金必看 2026年6月黄金回收行业解析与优质门店推荐 - 润富黄金回收
  • 2026上海黄金回收行业科普与避坑攻略 - 润富黄金回收
  • 【智能制造】- APS系列|23 成本管理:产量会计
  • 几何1-平面图的参数化复杂度研究与应用
  • 杰理之播放提示音时,叠加播放手机音乐,手机音乐无声【篇】
  • 2026年内江无人机维修技术参考与品牌选择推荐:成都无人机维修培训/泸州无人机维修培训/眉山无人机维修/优选推荐 - 优质品牌商家
  • 如何轻松永久保存微信聊天记录:WeChatMsg完整数据留痕指南
  • Thanos构建企业级统一告警管理平台:高可用架构设计与实施路径
  • 用FPGA和AD9708/AD9280做个信号发生器:从ROM读波形到ILA看结果的全流程
  • 2026杭州黄金回收全攻略 - 润富黄金回收
  • 微信数据备份终极指南:如何安全合规地管理你的数字记忆
  • 手把手教你用Vivado 2019.1和Artix-7 FPGA搭建SGMII接口的UDP网卡(附RTL8211B PHY配置避坑指南)