2026/6/19 21:41:40
网站建设
项目流程
专业建设网站技术,时尚网站模板代码,舆情信息网站,网站设计 趋势一、前言
在期货交易中#xff0c;主力合约是流动性最好、成交量最大的合约#xff0c;也是量化交易者最常使用的合约。但主力合约会随时间变化而切换#xff0c;如何自动获取当前的主力合约代码#xff0c;是期货量化交易的基础问题。
本文将介绍#xff1a;
什么是期…一、前言在期货交易中主力合约是流动性最好、成交量最大的合约也是量化交易者最常使用的合约。但主力合约会随时间变化而切换如何自动获取当前的主力合约代码是期货量化交易的基础问题。本文将介绍什么是期货主力合约TqSdk中的主连合约代码如何获取主力合约的实际代码主力合约切换的处理方法二、为什么选择天勤量化TqSdk在众多期货量化工具中**天勤量化TqSdk**是目前国内最受欢迎的开源期货量化框架之一。本文使用TqSdk获取数据主要基于以下优势特点说明完全免费开源免费无需付费即可获取实时行情数据全面支持国内所有期货交易所的实时行情和历史数据上手简单几行Python代码即可获取数据无需复杂配置文档完善官方文档详细示例代码丰富社区活跃GitHub开源问题响应及时安装方法pipinstalltqsdk快期账户使用TqSdk需要注册快期账户免费访问 https://www.shinnytech.com 注册。三、主力合约基础知识3.1 什么是主力合约期货合约有不同的交割月份例如螺纹钢有rb2501、rb2502、rb2503等多个合约。其中概念说明主力合约当前成交量和持仓量最大的合约次主力合约成交量和持仓量第二大的合约近月合约距离交割日期最近的合约远月合约距离交割日期较远的合约为什么要交易主力合约流动性好成交活跃容易成交滑点小买卖价差小深度好挂单量充足3.2 TqSdk的主连合约TqSdk使用主连合约来表示主力合约代码格式为KQ.m交易所.品种代码常见主连合约代码品种主连代码说明螺纹钢KQ.mSHFE.rb上期所螺纹钢主连铁矿石KQ.mDCE.i大商所铁矿石主连沪深300KQ.mCFFEX.IF中金所IF主连原油KQ.mINE.sc上期能源原油主连PTAKQ.mCZCE.TA郑商所PTA主连四、获取主力合约代码4.1 最简示例#!/usr/bin/env python# -*- coding: utf-8 -*- 功能获取期货主力合约的实际代码 说明本代码仅供学习参考 fromtqsdkimportTqApi,TqAuth# 创建API实例apiTqApi(authTqAuth(快期账户,快期密码))# 订阅螺纹钢主连quoteapi.get_quote(KQ.mSHFE.rb)# 打印主力合约的实际代码print(f螺纹钢主连当前对应的合约:{quote.underlying_symbol})# 关闭APIapi.close()运行结果螺纹钢主连当前对应的合约: SHFE.rb25014.2 代码解析代码说明KQ.mSHFE.rb螺纹钢主连的代码KQ表示快期虚拟交易所quote.underlying_symbol主连合约对应的实际期货合约代码4.3 获取多个品种的主力合约fromtqsdkimportTqApi,TqAuth apiTqApi(authTqAuth(快期账户,快期密码))# 定义要查询的主连合约symbols[(螺纹钢,KQ.mSHFE.rb),(铁矿石,KQ.mDCE.i),(沪深300,KQ.mCFFEX.IF),(原油,KQ.mINE.sc),(PTA,KQ.mCZCE.TA),(甲醇,KQ.mCZCE.MA),(豆粕,KQ.mDCE.m),(黄金,KQ.mSHFE.au),]print(*50)print(f{品种:10}{主连代码:20}{实际合约:15})print(*50)forname,symbolinsymbols:quoteapi.get_quote(symbol)print(f{name:10}{symbol:20}{quote.underlying_symbol:15})print(*50)api.close()运行结果 品种 主连代码 实际合约 螺纹钢 KQ.mSHFE.rb SHFE.rb2501 铁矿石 KQ.mDCE.i DCE.i2501 沪深300 KQ.mCFFEX.IF CFFEX.IF2501 原油 KQ.mINE.sc INE.sc2502 PTA KQ.mCZCE.TA CZCE.TA501 甲醇 KQ.mCZCE.MA CZCE.MA501 豆粕 KQ.mDCE.m DCE.m2505 黄金 KQ.mSHFE.au SHFE.au2502 五、主连合约的用途5.1 直接用主连合约获取数据主连合约可以直接用于获取K线和行情数据会自动获取当前主力合约的数据fromtqsdkimportTqApi,TqAuth apiTqApi(authTqAuth(快期账户,快期密码))# 直接用主连代码获取K线klinesapi.get_kline_serial(KQ.mSHFE.rb,60,data_length100)# 获取主连行情quoteapi.get_quote(KQ.mSHFE.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 apiTqApi(authTqAuth(快期账户,快期密码))quoteapi.get_quote(KQ.mSHFE.rb)current_underlyingquote.underlying_symbolprint(f初始主力合约:{current_underlying})whileapi.wait_update():ifapi.is_changing(quote,underlying_symbol):new_underlyingquote.underlying_symbolprint(f主力合约发生切换)print(f旧主力:{current_underlying})print(f新主力:{new_underlying})current_underlyingnew_underlying六、指数合约除了主连合约TqSdk还提供指数合约代码格式为KQ.i交易所.品种代码类型代码示例说明主连KQ.mSHFE.rb当前主力合约指数KQ.iSHFE.rb所有在市合约的加权平均指数的计算方式根据在市期货合约的昨持仓量加权平均fromtqsdkimportTqApi,TqAuth apiTqApi(authTqAuth(快期账户,快期密码))# 获取主连和指数main_quoteapi.get_quote(KQ.mSHFE.rb)index_quoteapi.get_quote(KQ.iSHFE.rb)print(f螺纹钢主连 最新价:{main_quote.last_price})print(f螺纹钢指数 最新价:{index_quote.last_price})api.close()七、常见问题Q1: 主连和具体合约有什么区别对比项主连合约具体合约代码格式KQ.mSHFE.rbSHFE.rb2501是否可交易不可直接交易可交易数据连续性自动拼接连续到期后无数据适用场景分析、回测实盘交易Q2: 主力合约什么时候切换天勤主力的切换标准新合约的持仓量和成交量均超过旧主力在下一个交易日开盘后进行切换切换后不会再切换回之前的合约Q3: 如何用主力合约进行实盘交易需要先获取实际合约代码再使用实际合约进行交易quoteapi.get_quote(KQ.mSHFE.rb)actual_symbolquote.underlying_symbol# 获取实际合约代码# 使用actual_symbol进行下单八、总结本文介绍了TqSdk获取期货主力合约的方法要点内容主连代码KQ.m交易所.品种获取实际合约quote.underlying_symbol指数代码KQ.i交易所.品种注意事项主连不可直接交易需获取实际合约代码下一步学习查询合约的详细信息交易时间、保证金、手续费等使用TqSdk计算技术指标免责声明本文仅供学习交流使用不构成任何投资建议。期货交易有风险入市需谨慎。更多资源天勤量化官网https://www.shinnytech.comGitHub开源地址https://github.com/shinnytech/tqsdk-python官方文档https://doc.shinnytech.com/tqsdk/latest