news 2026/8/27 6:24:10

【期货量化入门】自动获取期货主力合约代码(TqSdk完整教程)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【期货量化入门】自动获取期货主力合约代码(TqSdk完整教程)

一、前言

在期货交易中,主力合约是流动性最好、成交量最大的合约,也是量化交易者最常使用的合约。但主力合约会随时间变化而切换,如何自动获取当前的主力合约代码,是期货量化交易的基础问题。

本文将介绍:

二、为什么选择天勤量化(TqSdk)

在众多期货量化工具中,**天勤量化(TqSdk)**是目前国内最受欢迎的开源期货量化框架之一。本文使用TqSdk获取数据,主要基于以下优势:

特点说明
完全免费开源免费,无需付费即可获取实时行情
数据全面支持国内所有期货交易所的实时行情和历史数据
上手简单几行Python代码即可获取数据,无需复杂配置
文档完善官方文档详细,示例代码丰富
社区活跃GitHub开源,问题响应及时

安装方法

pipinstalltqsdk

快期账户:使用TqSdk需要注册快期账户(免费),访问 https://www.shinnytech.com 注册。

三、主力合约基础知识

3.1 什么是主力合约

期货合约有不同的交割月份,例如螺纹钢有rb2501、rb2502、rb2503等多个合约。其中:

概念说明
主力合约当前成交量和持仓量最大的合约
次主力合约成交量和持仓量第二大的合约
近月合约距离交割日期最近的合约
远月合约距离交割日期较远的合约

为什么要交易主力合约?

  1. 流动性好:成交活跃,容易成交
  2. 滑点小:买卖价差小
  3. 深度好:挂单量充足

3.2 TqSdk的主连合约

TqSdk使用主连合约来表示主力合约,代码格式为:

KQ.m@交易所.品种代码

常见主连合约代码:

品种主连代码说明
螺纹钢KQ.m@SHFE.rb上期所螺纹钢主连
铁矿石KQ.m@DCE.i大商所铁矿石主连
沪深300KQ.m@CFFEX.IF中金所IF主连
原油KQ.m@INE.sc上期能源原油主连
PTAKQ.m@CZCE.TA郑商所PTA主连

四、获取主力合约代码

4.1 最简示例

#!/usr/bin/env python# -*- coding: utf-8 -*-""" 功能:获取期货主力合约的实际代码 说明:本代码仅供学习参考 """fromtqsdkimportTqApi,TqAuth# 创建API实例api=TqApi(auth=TqAuth("快期账户","快期密码"))# 订阅螺纹钢主连quote=api.get_quote("KQ.m@SHFE.rb")# 打印主力合约的实际代码print(f"螺纹钢主连当前对应的合约:{quote.underlying_symbol}")# 关闭APIapi.close()

运行结果

螺纹钢主连当前对应的合约: SHFE.rb2501

4.2 代码解析

代码说明
KQ.m@SHFE.rb螺纹钢主连的代码,KQ表示快期虚拟交易所
quote.underlying_symbol主连合约对应的实际期货合约代码

4.3 获取多个品种的主力合约

fromtqsdkimportTqApi,TqAuth api=TqApi(auth=TqAuth("快期账户","快期密码"))# 定义要查询的主连合约symbols=[("螺纹钢","KQ.m@SHFE.rb"),("铁矿石","KQ.m@DCE.i"),("沪深300","KQ.m@CFFEX.IF"),("原油","KQ.m@INE.sc"),("PTA","KQ.m@CZCE.TA"),("甲醇","KQ.m@CZCE.MA"),("豆粕","KQ.m@DCE.m"),("黄金","KQ.m@SHFE.au"),]print("="*50)print(f"{'品种':<10}{'主连代码':<20}{'实际合约':<15}")print("="*50)forname,symbolinsymbols:quote=api.get_quote(symbol)print(f"{name:<10}{symbol:<20}{quote.underlying_symbol:<15}")print("="*50)api.close()

运行结果

================================================== 品种 主连代码 实际合约 ================================================== 螺纹钢 KQ.m@SHFE.rb SHFE.rb2501 铁矿石 KQ.m@DCE.i DCE.i2501 沪深300 KQ.m@CFFEX.IF CFFEX.IF2501 原油 KQ.m@INE.sc INE.sc2502 PTA KQ.m@CZCE.TA CZCE.TA501 甲醇 KQ.m@CZCE.MA CZCE.MA501 豆粕 KQ.m@DCE.m DCE.m2505 黄金 KQ.m@SHFE.au SHFE.au2502 ==================================================

五、主连合约的用途

5.1 直接用主连合约获取数据

主连合约可以直接用于获取K线和行情数据,会自动获取当前主力合约的数据:

fromtqsdkimportTqApi,TqAuth api=TqApi(auth=TqAuth("快期账户","快期密码"))# 直接用主连代码获取K线klines=api.get_kline_serial("KQ.m@SHFE.rb",60,data_length=100)# 获取主连行情quote=api.get_quote("KQ.m@SHFE.rb")print(f"当前主力合约:{quote.underlying_symbol}")print(f"最新价:{quote.last_price}")print(f"最近5根K线收盘价:")print(klines.tail()['close'].values)api.close()

5.2 监控主力合约切换

主力合约会定期切换,通常在新主力合约的成交量和持仓量超过旧主力时发生:

fromtqsdkimportTqApi,TqAuth api=TqApi(auth=TqAuth("快期账户","快期密码"))quote=api.get_quote("KQ.m@SHFE.rb")current_underlying=quote.underlying_symbolprint(f"初始主力合约:{current_underlying}")whileapi.wait_update():ifapi.is_changing(quote,"underlying_symbol"):new_underlying=quote.underlying_symbolprint(f"主力合约发生切换!")print(f"旧主力:{current_underlying}")print(f"新主力:{new_underlying}")current_underlying=new_underlying

六、指数合约

除了主连合约,TqSdk还提供指数合约,代码格式为:

KQ.i@交易所.品种代码
类型代码示例说明
主连KQ.m@SHFE.rb当前主力合约
指数KQ.i@SHFE.rb所有在市合约的加权平均

指数的计算方式:根据在市期货合约的昨持仓量加权平均

fromtqsdkimportTqApi,TqAuth api=TqApi(auth=TqAuth("快期账户","快期密码"))# 获取主连和指数main_quote=api.get_quote("KQ.m@SHFE.rb")index_quote=api.get_quote("KQ.i@SHFE.rb")print(f"螺纹钢主连 最新价:{main_quote.last_price}")print(f"螺纹钢指数 最新价:{index_quote.last_price}")api.close()

七、常见问题

Q1: 主连和具体合约有什么区别?

对比项主连合约具体合约
代码格式KQ.m@SHFE.rbSHFE.rb2501
是否可交易不可直接交易可交易
数据连续性自动拼接,连续到期后无数据
适用场景分析、回测实盘交易

Q2: 主力合约什么时候切换?

天勤主力的切换标准:

Q3: 如何用主力合约进行实盘交易?

需要先获取实际合约代码,再使用实际合约进行交易:

quote=api.get_quote("KQ.m@SHFE.rb")actual_symbol=quote.underlying_symbol# 获取实际合约代码# 使用actual_symbol进行下单

八、总结

本文介绍了TqSdk获取期货主力合约的方法:

要点内容
主连代码KQ.m@交易所.品种
获取实际合约quote.underlying_symbol
指数代码KQ.i@交易所.品种
注意事项主连不可直接交易,需获取实际合约代码

下一步学习


免责声明:本文仅供学习交流使用,不构成任何投资建议。期货交易有风险,入市需谨慎。

更多资源

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/27 5:47:32

揭秘管道命令的隐藏陷阱

在命令管道 cmd1 | cmd2 | cmd3 中&#xff0c;成功/失败状态的传递机制非常特殊&#xff1a;默认情况下&#xff0c;只有最后一个命令的退出状态会作为整个管道的退出状态&#xff0c;中间命令的失败状态会被"隐藏"。注&#xff1a;其实很好理解&#xff0c;因为管道…

作者头像 李华
网站建设 2026/8/25 20:48:29

Lucky终极教程:如何免费自动申请SSL证书,告别手动续期烦恼

Lucky终极教程&#xff1a;如何免费自动申请SSL证书&#xff0c;告别手动续期烦恼 【免费下载链接】lucky 软硬路由公网神器,ipv6/ipv4 端口转发,反向代理,DDNS,WOL,ipv4 stun内网穿透,cron,acme,阿里云盘,ftp,webdav,filebrowser 项目地址: https://gitcode.com/GitHub_Tren…

作者头像 李华
网站建设 2026/8/26 11:40:39

MinIO对象存储:从开源到企业级的完整部署指南

MinIO对象存储&#xff1a;从开源到企业级的完整部署指南 【免费下载链接】minio minio/minio: 是 MinIO 的官方仓库&#xff0c;包括 MinIO 的源代码、文档和示例程序。MinIO 是一个分布式对象存储服务&#xff0c;提供高可用性、高性能和高扩展性。适合对分布式存储、对象存储…

作者头像 李华
网站建设 2026/8/27 2:11:25

强力解密Pyarmor加密代码的静态恢复解决方案

你是否曾经遇到过这样的情况&#xff1a;拿到一个经过Pyarmor加密的Python脚本&#xff0c;却无法查看其源码内容&#xff1f;或者在进行代码审查时需要分析第三方加密包的安全性&#xff1f;Pyarmor-Static-Unpack-1shot正是为解决这一痛点而生的专业工具&#xff0c;它能够在…

作者头像 李华
网站建设 2026/8/26 15:47:11

代码随想录算法训练营day 13-14:二叉树初步,递归

&#xff08;递归遍历和层序遍历比较简单&#xff0c;这里就不写了&#xff09; 非递归遍历&#xff08;逻辑的统一与非统一&#xff09; 逻辑非统一遍历 前序&#xff1a;先右后左入栈 中序&#xff1a;一路向左 回溯 后序&#xff1a;最难&#xff0c;需要控制访问顺序…

作者头像 李华
网站建设 2026/8/26 15:25:26

PDFMathTranslate本地大模型配置全攻略:从零搭建专属翻译引擎

PDFMathTranslate本地大模型配置全攻略&#xff1a;从零搭建专属翻译引擎 【免费下载链接】PDFMathTranslate PDF scientific paper translation with preserved formats - 基于 AI 完整保留排版的 PDF 文档全文双语翻译&#xff0c;支持 Google/DeepL/Ollama/OpenAI 等服务&am…

作者头像 李华