3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 QMT 量化交易平台中,查询期货合约的合约乘数和最小变动价位,主要使用 ContextInfo.get_instrumentdetail(stockcode) 函数。
该函数会返回一个包含合约详细信息的字典,其中:
'VolumeMultiple''PriceTick'以下是一个完整的策略示例代码,展示如何在 init 初始化函数中查询并打印指定期货合约的这两项信息。
# -*- coding: gbk -*-
def init(ContextInfo):
# 定义需要查询的期货合约代码,格式为 '代码.市场'
# 例如:中金所股指期货 IF2306.IF,或者主力合约 IF00.IF
contract_code = 'IF2306.IF'
# 调用获取合约详细信息的接口
detail_dict = ContextInfo.get_instrumentdetail(contract_code)
# 检查是否成功获取到数据
if detail_dict:
# 获取合约乘数
multiplier = detail_dict.get('VolumeMultiple')
# 获取最小变动价位
price_tick = detail_dict.get('PriceTick')
# 获取合约名称(可选,方便查看)
name = detail_dict.get('InstrumentName')
print(f"合约: {name} ({contract_code})")
print(f"合约乘数: {multiplier}")
print(f"最小变动价位: {price_tick}")
else:
print(f"未找到合约 {contract_code} 的详细信息,请检查代码是否正确。")
def handlebar(ContextInfo):
# 本示例仅在 init 中演示查询,handlebar 可留空
pass
ContextInfo.get_instrumentdetail(stockcode)stockcode (字符串),即合约代码,必须包含市场后缀。例如:
'IF2306.IF''rb2310.SF''m2309.DF''SR309.ZF'VolumeMultiple:合约乘数(例如沪深300股指期货通常为 300)。PriceTick:最小变动价位(例如沪深300股指期货通常为 0.2)。如果你只需要查询合约乘数,也可以使用专用接口 ContextInfo.get_contract_multiplier(contractcode),它直接返回数值。但为了同时获取最小变动价位,推荐使用 get_instrumentdetail。
Q: 为什么查询到的合约乘数是 1?
A: 如果查询的是股票(如 600000.SH),QMT 默认返回的合约乘数通常为 1(表示1股)。如果是期货合约返回 1,请检查合约代码是否正确,或者该品种是否确实为 1。
Q: get_instrumentdetail 还能查询到哪些信息?
A: 该函数还可以查询到合约名称 (InstrumentName)、上市日期 (OpenDate)、到期日 (ExpireDate)、涨跌停价格 (UpStopPrice/DownStopPrice)、保证金比例 (LongMarginRatio/ShortMarginRatio) 等信息。
Q: 如何查询主力合约的乘数?
A: 你可以先使用 ContextInfo.get_main_contract(codemarket) 获取主力合约代码(例如传入 'IF.IF' 获取当前的 IF 主力),然后再将获取到的代码传入 get_instrumentdetail 进行查询。