期货量化主连和具体合约怎么切:天勤 KQ.m 与 KQ.i 用法

前言

做趋势回测时我用主连很顺手,上模拟却忘了换成具体月份,持仓和信号对不上,收益曲线完全两回事。天勤 TqSdk 里主力连续 KQ.m@、指数 KQ.i@ 与具体 SHFE.rb2510 并存,研究链和交易链要分清。

下面说明主连/指数在行情里的角色、回测与实盘如何映射、换月时策略要注意什么。合约代码写法、移仓执行流程宜分开对照,一起看更完整。

一、主连、指数、具体合约各干什么

类型 符号形态(示意) 典型用途
主力连续 KQ.m@ 如 KQ.m@SHFE.rb 长历史回测、信号研究
指数 KQ.i@ 如 KQ.i@SHFE.rb 平滑价格、指标研究
具体合约 SHFE.rb2510 模拟、实盘下单

主连把历史主力拼接,方便看长期趋势,但成交价不是历史上每一刻真实可成交的单一合约价。指数类似,更平滑。实盘报单必须落到有流动性的具体合约。

二、研究用主连、执行用具体月

常见分工:

  1. KQ.m@ 上算信号(均线、突破等)
  2. 信号触发时,查当前主力对应的具体合约(通过 quote 的 underlying_symbol 等字段,以文档为准)
  3. insert_orderTargetPosTask 只对具体合约操作

若全程只订主连、又对主连下单,模拟成交规则可能与真实交易差异很大。

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

api = TqApi(TqSim(), auth=TqAuth("账户", "密码"))
cont = "KQ.m@SHFE.rb"
q_cont = api.get_quote(cont)
api.wait_update()
# 具体交易合约以 quote 字段为准,下例名需按 wait_update 后实际值替换
trade_sym = q_cont.underlying_symbol
q_trade = api.get_quote(trade_sym)

不同版本字段名可能为 underlying_symbol 或文档中的其它名,以你打印 q_cont 对象为准。

三、回测与实盘收益对不上的常见原因

  • 回测全程主连,实盘交易 2505 却仍在看 2501 的行情
  • 换月日主力切换,信号仍用旧合约持仓
  • 手续费、滑点按主连手数算,实际开在远月

对策:回测末期用具体合约复跑一段;或回测里就用「主力映射表」记录每日交易合约(工作量大,但更贴近实盘)。

四、换月检测思路

工程上可每日比较 underlying_symbol 是否变化,变化时触发移仓逻辑(平仓旧月、开新月),移仓顺序要单独写进策略。不要假设主连 symbol 不变就不用管换月。

五、和 get_kline_serial 一起用

get_kline_serial("KQ.m@SHFE.rb", 60) 做信号,get_kline_serial(trade_sym, 60) 做执行层价格参考时,要保证时间戳对齐意识:两根 K 线来自不同合约序列,合并信号要谨慎。

入门可先「信号与交易同一具体合约」,主连只用于离线研究,减少阶段混用。

总结

主连和指数适合研究与回测连续性,具体合约适合模拟和实盘。天勤同时支持几类符号,选型关键是链条上哪一段用哪类 code,并在换月时有显式处理。

建议团队写进规范:回测默认用什么、模拟改什么、换月谁负责改配置,避免每人一套习惯导致收益无法复现。

FAQ

1)能否只对主连做 TargetPosTask?

不建议作为实盘方案;模拟规则也可能与具体合约不一致。

2)指数和主连选哪个?

趋势信号常用主连;需要更平滑曲线可看指数。

3)foreign 品种呢?

以 TqSdk 当前支持列表为准。

4)回测主连后如何找对应实盘月?

用主力 quote 的映射字段,或维护换月日历表。

风险提示

本文用于合约与数据使用技术说明,不构成投资建议。

相关推荐
Data_Journal33 分钟前
如何使用 Python 抓取 Google Flights:分步指南
大数据·开发语言·数据库·python·scrapy
你我一见如故1 小时前
仿QQ音乐桌面客户端——测试报告
python·selenium
Kismet_nvi1 小时前
Python 基础核心知识点总结
开发语言·windows·python
2401_844582951 小时前
冷门技巧:AI模型可靠性测试的实用技巧:数
python
you鬰1 小时前
datawhale--llm-algo-leetcode5️⃣
python·datawhale
λqaq72 小时前
MySQL 数据库基础(2)约束、用户权限、远程连接、外键与 TCP/UDP 理解
linux·数据库·python·tcp/ip·mysql
人工干智能2 小时前
科普:pandas 时间偏移别名:ts.resample(“5Min“).sum()
python·pandas
开源量化GO2 小时前
最新AI辅助量化表达:先理清规则,再按需求选工具
人工智能·python
Zane19942 小时前
为什么 del 一个对象有时立刻消失,有时却纹丝不动?一文讲透引用计数与垃圾回收
后端·python
yichudu2 小时前
Python 装饰器 decorator
开发语言·python