今天我们来学习这个核心API:get_instrument_detail()获取合约基础信息
用于获取指定合约(如股票、期货等)的详细信息
它会返回一个字典,包含该合约的关键属性,常用于策略中实现 代码转名称、涨跌停判断、交易状态检查等功能
代码原型如下:
get_instrument_detail(stock_code)
参数解析:
stock_code (str): 你想查询的合约代码,例如 '000001.SZ' 或 'rb2410.SHF'
iscomplete (bool): 是否获取完整信息。默认为False,只返回最常用、最核心的字段;如果设为True,则会返回包括手续费、期权类型等在内的所有详细字段。对于日常策略开发,False通常就足够了
返回值:
如果查询成功,它会返回一个Python字典 (dict),里面包含了该合约的各种信息
如果输入的合约代码不存在或无效,它会返回None
实战一:从代码到名称
这是最基础也是最能立竿见影提升使用体验的功能
比如我希望日志记录显示的是“买入 平安银行”,而不是“买入 000001.SZ”
• 因为刚入手的痛点:日志里全是'买入 000001.SZ',可读性极差
• 可选的解决方案:通过返回字典中的 InstrumentName 字段,轻松将代码转换为中文名称
import xtquant.xtdata as xtdata
# 假设miniQMT已连接
stock_code = '000001.SZ'
info = xtdata.get_instrument_detail(stock_code)
if info:
# 使用 .get() 方法更安全,即使字段不存在也不会报错
stock_name = info.get('InstrumentName', '未知名称')
print(f"代码 {stock_code} 对应的股票名称是:{stock_name}")
else:
print(f"查询失败,代码 {stock_code} 可能不存在。")
# 输出: 代码 000001.SZ 对应的股票名称是:平安银行这样就可以啦,增强我们策略日志和可读性
示例二:获取涨跌停
痛点:策略计算出的买入价高于涨停价,导致下单失败;或者在跌停板上恐慌性卖出。
解决方案:在生成最终委托价时,参考 UpStopPrice 和 DownStopPrice 字段
下面的代码不仅展示了如何获取价格,还包含了容错处理,推荐学习适
import xtquant.xtdata as xtdata
stock_code = "600519.SH" # 贵州茅台
info = xtdata.get_instrument_detail(stock_code)
if not info or not isinstance(info, dict):
print("未获取到合约信息,请检查 stock_code 或 xtdata 连接状态。")
else:
name = info.get("InstrumentName", stock_code)
up_price = info.get("UpStopPrice")
down_price = info.get("DownStopPrice")
pre_close = info.get("PreClose")
# 容错:有些字段可能为 None
if pre_close is not None:
print(f"{name} 昨日收盘价为:{pre_close:.2f}")
else:
print(f"{name} 昨日收盘价字段 PreClose 缺失或为 None:{pre_close}")
if up_price is not None and down_price is not None:
print(f"今日的涨停价为:{up_price:.2f},跌停价为:{down_price:.2f}")
else:
print(f"涨跌停字段缺失或为 None:UpStopPrice={up_price}, DownStopPrice={down_price}")
# 策略应用示例:
my_buy_price = 1800.00
if up_price is not None and my_buy_price >= up_price:
print(f"警告:目标买入价 {my_buy_price:.2f} 已超过或等于涨停价,调整下单策略!")日志如下:
QMT/miniQMT免费申请
QMT免费领取学习案例
QMT落地辅助策略代写服务
需要的朋友欢迎联系 ~~~
著作权归文章作者所有。