前言写天勤量化下单逻辑时若手数、保证金和盈亏对不上账我一般会先查合约规格有没有读错。乘数、最小变动价位一跳、涨跌停价都在Quote里用统一字段做预算比手算或硬编码合约表更不容易在换月后踩坑。一、为什么要从 Quote 读同一品种不同月份合约乘数通常一致但价格水平和 tick 可能变化新品种上线时硬编码表容易漏改。get_quote订阅后规格字段随合约更新适合写在下单与风控公共函数里。fromtqsdkimportTqApi,TqAuth,TqSim apiTqApi(TqSim(),authTqAuth(账户,密码))qapi.get_quote(SHFE.rb2510)api.wait_update()volume_multipleq.volume_multiple# 合约乘数price_tickq.price_tick# 最小变动价位print(volume_multiple,price_tick)字段名以当前版本文档为准策略启动时打印一次做核对。二、盈亏与一跳价值近似计算线性合约价格变动 ΔP元/吨等盈亏 ≈ ΔP × 手数 ×volume_multiple一跳盈亏1 手每跳盈亏 ≈price_tick×volume_multiple用于评估止损距离是否合理以及限价单改价是否跨过有效 tick。defone_tick_pnl(quote,lots1):returnquote.price_tick*quote.volume_multiple*lots三、手数与保证金预算保证金依赖期货公司标准与账户参数策略层常用名义价值做上限notionalq.last_price*q.volume_multiple*lots再用账户balance、margin字段需wait_update后读取判断是否够开仓。具体保证金率以柜台回报为准程序侧宜留余量。四、限价单价格对齐 tick限价应落在 tick 整数倍上否则可能被拒单或自动对齐到不利价位defround_to_tick(price,tick):returnround(price/tick)*tick limitround_to_tick(q.last_price2*q.price_tick,q.price_tick)买开、卖开方向不同取整方向可按业务约定调整。五、与涨跌停联合检查下单前可读upper_limit、lower_limit字段以文档为准确认limit_price在合法区间。触及涨跌停时即使价格对齐 tick也可能无法按预期成交。六、换月时记得换 quote乘数多数不变但合约代码必须切换到新月份get_quote(SHFE.rb2510)并重新wait_update等首包规格有效避免沿用旧合约乘数算新手数。总结合约乘数和最小变动价位是下单预算的基础。天勤量化里从Quote动态读取能减少硬编码错误盈亏估算、tick 取整、名义价值上限三件事建议在公共函数里统一实现换月只改 symbol。FAQ1乘数为 0 或 nan 怎么办首包未到跳过交易逻辑并等待wait_update。2不同交易所 tick 规则不同以price_tick为准勿假设所有品种都是 1 元。3组合合约怎么算各腿分别读 quote分别算乘数。4回测里规格从哪来回测环境同样提供 quote 对象字段含义与实盘一致仍应核对。5盈亏与柜台不一致检查平今手续费、是否双向持仓、成交价是否含滑点。风险提示本文用于期货量化技术实践讨论不构成投资建议。
期货合约乘数与最小变动价位:从 Quote 读规格做下单预算
发布时间:2026/5/20 7:14:23
前言写天勤量化下单逻辑时若手数、保证金和盈亏对不上账我一般会先查合约规格有没有读错。乘数、最小变动价位一跳、涨跌停价都在Quote里用统一字段做预算比手算或硬编码合约表更不容易在换月后踩坑。一、为什么要从 Quote 读同一品种不同月份合约乘数通常一致但价格水平和 tick 可能变化新品种上线时硬编码表容易漏改。get_quote订阅后规格字段随合约更新适合写在下单与风控公共函数里。fromtqsdkimportTqApi,TqAuth,TqSim apiTqApi(TqSim(),authTqAuth(账户,密码))qapi.get_quote(SHFE.rb2510)api.wait_update()volume_multipleq.volume_multiple# 合约乘数price_tickq.price_tick# 最小变动价位print(volume_multiple,price_tick)字段名以当前版本文档为准策略启动时打印一次做核对。二、盈亏与一跳价值近似计算线性合约价格变动 ΔP元/吨等盈亏 ≈ ΔP × 手数 ×volume_multiple一跳盈亏1 手每跳盈亏 ≈price_tick×volume_multiple用于评估止损距离是否合理以及限价单改价是否跨过有效 tick。defone_tick_pnl(quote,lots1):returnquote.price_tick*quote.volume_multiple*lots三、手数与保证金预算保证金依赖期货公司标准与账户参数策略层常用名义价值做上限notionalq.last_price*q.volume_multiple*lots再用账户balance、margin字段需wait_update后读取判断是否够开仓。具体保证金率以柜台回报为准程序侧宜留余量。四、限价单价格对齐 tick限价应落在 tick 整数倍上否则可能被拒单或自动对齐到不利价位defround_to_tick(price,tick):returnround(price/tick)*tick limitround_to_tick(q.last_price2*q.price_tick,q.price_tick)买开、卖开方向不同取整方向可按业务约定调整。五、与涨跌停联合检查下单前可读upper_limit、lower_limit字段以文档为准确认limit_price在合法区间。触及涨跌停时即使价格对齐 tick也可能无法按预期成交。六、换月时记得换 quote乘数多数不变但合约代码必须切换到新月份get_quote(SHFE.rb2510)并重新wait_update等首包规格有效避免沿用旧合约乘数算新手数。总结合约乘数和最小变动价位是下单预算的基础。天勤量化里从Quote动态读取能减少硬编码错误盈亏估算、tick 取整、名义价值上限三件事建议在公共函数里统一实现换月只改 symbol。FAQ1乘数为 0 或 nan 怎么办首包未到跳过交易逻辑并等待wait_update。2不同交易所 tick 规则不同以price_tick为准勿假设所有品种都是 1 元。3组合合约怎么算各腿分别读 quote分别算乘数。4回测里规格从哪来回测环境同样提供 quote 对象字段含义与实盘一致仍应核对。5盈亏与柜台不一致检查平今手续费、是否双向持仓、成交价是否含滑点。风险提示本文用于期货量化技术实践讨论不构成投资建议。