带你详细了解miniQMT的xtdata模块 (第八篇)——合约基础信息查询

QUANT 2025-12-26 16:30:55 34 举报

今天我们来学习这个核心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落地辅助策略代写服务

需要的朋友欢迎联系 ~~~



尊重知识,尊重市场 1

著作权归文章作者所有。

最新回复 ( 0 )
发新帖
0
DEPRECATED: addslashes(): Passing null to parameter #1 ($string) of type string is deprecated (/data/user/htdocs/xiunophp/xiunophp.min.php:48)