前言在国内做期货量化打开行情软件常会看到三类价格序列具体月份合约如螺纹钢 2510、主力连续主连、指数。它们都能画 K 线、算均线但含义不同具体合约是交易所真实可交易的标的主连是把历史上各阶段主力拼接起来方便看长期趋势指数则对成交量等加权曲线更平滑多用于研究而非直接下单。很多初学者回测用主连曲线很漂亮上模拟或实盘却仍订主连下单结果持仓、滑点、换月与回测完全对不上。下面说明三类合约各自适合干什么、回测与实盘如何分工并用天勤 TqSdk 的代码写法举例KQ.m、KQ.i、具体SHFE.rb2510。其中underlying_symbol是主连 quote 上指向当前可交易具体合约的字段需在一次wait_update后再读刚订阅时可能为空。一、三类合约在期货量化里各扮演什么角色类型天勤常见写法示意适合做什么不宜做什么具体月份SHFE.rb2510模拟、实盘报单、真实保证金需要极长连续历史时单合约会到期主力连续KQ.mSHFE.rb长周期回测、信号研究直接当成交价模拟拼接价非单一合约全程指数KQ.iSHFE.rb指标研究、平滑序列默认可交易下单指数合约规则与具体月不同主连和指数的价值在研究侧让你用一条较长 K 线序列验证规则是否合理。执行侧在国内期货里必须落到有流动性的具体合约否则保证金、平今平昨、到期日与回测假设都会偏离。二、推荐分工主连算信号、具体月下单常见可落地流程订阅主连或具体月的 K 线做信号团队需统一规则。若信号来自主连在要下单时读取主连 quote 上的underlying_symbolwait_update 后才有有效值以你本地文档为准得到当前主力对应的具体合约代码。对具体合约使用TargetPosTask或insert_order持仓与成交也以具体合约的get_position为准。fromtqsdkimportTqApi,TqAuth,TqSim apiTqApi(TqSim(),authTqAuth(快期账户,密码))contKQ.mSHFE.rbq_contapi.get_quote(cont)api.wait_update()# underlying_symbol 需 wait_update 后读取值为具体合约如 SHFE.rb2505trade_symq_cont.underlying_symbol q_tradeapi.get_quote(trade_sym)klapi.get_kline_serial(cont,300,data_length200)若全程只对cont下单而不换成trade_sym模拟成交规则与真实交易差异会很大。换月时underlying_symbol会变策略要有移仓或重新订阅逻辑团队另有换月专题可对照。三、回测与实盘怎样才“对得上”回测订主连、实盘订具体月允许但信号与执行要按上一节映射不能回测里对主连 set 目标仓、实盘却以为同一 symbol。回测与实盘都订具体月换月日前后要处理合约切换否则历史回测会断档。K 线触发规则无论订哪种序列is_changing(kl.iloc[-1], datetime)与iloc[-2]规则应三环境一致datetime来自 K 线表由行情服务写入不是本地计时。回测用TqBacktest时若用主连要接受主连成交价与真实逐月滚动的偏差样本外应用具体月或快期模拟再验证一轮。四、指数 KQ.i 的额外注意指数序列更平滑适合看趋势强度实盘是否、以及如何交易指数合约取决于交易所品种规则与期货公司支持不能默认与具体月相同。模拟盘应用最小仓位验证 quote 字段如ins_class、买卖盘是否满足你的执行假设。总结回到实盘这一层主连、指数、具体月份并不是互相替代而是分工不同研究用它们把规律看长把问题想清执行时必须落到可成交的具体合约才谈得上保证金占用、换月规则与成交路径。真正能让回测和实盘衔接起来的是策略文档里提前写死“信号序列”和“执行序列”的对应关系并在换月时按 underlying_symbol 重新映射到新月份。你把这些边界处理清楚整套系统就不再是四处试探而是可复现、可解释的闭环流程。FAQ1能否回测和实盘都只用主连不建议把主连当作真实成交标的至少模拟阶段要换具体月验证。2underlying_symbol 为空刚订阅后可能为空需多次wait_update后再读。3DataDownloader 下主连历史文档示例支持KQ.m下载专业版工具见官方说明。4股指主连写法同样KQ.mCFFEX.IF等形式以文档为准。风险提示本文讨论合约选型与程序结构不构成投资建议。
期货主连、指数与具体月份怎么选:回测研究与实盘下单分工
前言在国内做期货量化打开行情软件常会看到三类价格序列具体月份合约如螺纹钢 2510、主力连续主连、指数。它们都能画 K 线、算均线但含义不同具体合约是交易所真实可交易的标的主连是把历史上各阶段主力拼接起来方便看长期趋势指数则对成交量等加权曲线更平滑多用于研究而非直接下单。很多初学者回测用主连曲线很漂亮上模拟或实盘却仍订主连下单结果持仓、滑点、换月与回测完全对不上。下面说明三类合约各自适合干什么、回测与实盘如何分工并用天勤 TqSdk 的代码写法举例KQ.m、KQ.i、具体SHFE.rb2510。其中underlying_symbol是主连 quote 上指向当前可交易具体合约的字段需在一次wait_update后再读刚订阅时可能为空。一、三类合约在期货量化里各扮演什么角色类型天勤常见写法示意适合做什么不宜做什么具体月份SHFE.rb2510模拟、实盘报单、真实保证金需要极长连续历史时单合约会到期主力连续KQ.mSHFE.rb长周期回测、信号研究直接当成交价模拟拼接价非单一合约全程指数KQ.iSHFE.rb指标研究、平滑序列默认可交易下单指数合约规则与具体月不同主连和指数的价值在研究侧让你用一条较长 K 线序列验证规则是否合理。执行侧在国内期货里必须落到有流动性的具体合约否则保证金、平今平昨、到期日与回测假设都会偏离。二、推荐分工主连算信号、具体月下单常见可落地流程订阅主连或具体月的 K 线做信号团队需统一规则。若信号来自主连在要下单时读取主连 quote 上的underlying_symbolwait_update 后才有有效值以你本地文档为准得到当前主力对应的具体合约代码。对具体合约使用TargetPosTask或insert_order持仓与成交也以具体合约的get_position为准。fromtqsdkimportTqApi,TqAuth,TqSim apiTqApi(TqSim(),authTqAuth(快期账户,密码))contKQ.mSHFE.rbq_contapi.get_quote(cont)api.wait_update()# underlying_symbol 需 wait_update 后读取值为具体合约如 SHFE.rb2505trade_symq_cont.underlying_symbol q_tradeapi.get_quote(trade_sym)klapi.get_kline_serial(cont,300,data_length200)若全程只对cont下单而不换成trade_sym模拟成交规则与真实交易差异会很大。换月时underlying_symbol会变策略要有移仓或重新订阅逻辑团队另有换月专题可对照。三、回测与实盘怎样才“对得上”回测订主连、实盘订具体月允许但信号与执行要按上一节映射不能回测里对主连 set 目标仓、实盘却以为同一 symbol。回测与实盘都订具体月换月日前后要处理合约切换否则历史回测会断档。K 线触发规则无论订哪种序列is_changing(kl.iloc[-1], datetime)与iloc[-2]规则应三环境一致datetime来自 K 线表由行情服务写入不是本地计时。回测用TqBacktest时若用主连要接受主连成交价与真实逐月滚动的偏差样本外应用具体月或快期模拟再验证一轮。四、指数 KQ.i 的额外注意指数序列更平滑适合看趋势强度实盘是否、以及如何交易指数合约取决于交易所品种规则与期货公司支持不能默认与具体月相同。模拟盘应用最小仓位验证 quote 字段如ins_class、买卖盘是否满足你的执行假设。总结回到实盘这一层主连、指数、具体月份并不是互相替代而是分工不同研究用它们把规律看长把问题想清执行时必须落到可成交的具体合约才谈得上保证金占用、换月规则与成交路径。真正能让回测和实盘衔接起来的是策略文档里提前写死“信号序列”和“执行序列”的对应关系并在换月时按 underlying_symbol 重新映射到新月份。你把这些边界处理清楚整套系统就不再是四处试探而是可复现、可解释的闭环流程。FAQ1能否回测和实盘都只用主连不建议把主连当作真实成交标的至少模拟阶段要换具体月验证。2underlying_symbol 为空刚订阅后可能为空需多次wait_update后再读。3DataDownloader 下主连历史文档示例支持KQ.m下载专业版工具见官方说明。4股指主连写法同样KQ.mCFFEX.IF等形式以文档为准。风险提示本文讨论合约选型与程序结构不构成投资建议。