🚀 AI 一键生成 qmt 策略代码

QMT量化平台如何获取指定日期的个股是否涨停?

qmt | 发布时间: 2026/5/21
以下内容由 EasyQuant 生成。

问题描述

如何获取指定日期的个股当日收盘价是否涨停,有对应的函数?

如何获取指定日期的个股当日收盘价是否涨停,有对应的函数?

解决方案

在 QMT 平台中,判断个股是否涨停需要分两种情况来处理:当前交易日历史指定日期

1. 获取当前交易日是否涨停

如果是判断当前交易日(今日)的收盘价或最新价是否涨停,QMT 提供了直接获取当日涨跌停价的函数 ContextInfo.get_instrumentdetail()

核心函数:
ContextInfo.get_instrumentdetail(stockcode)
该函数返回一个字典,其中包含 UpStopPrice(当日涨停价)和 DownStopPrice(当日跌停价)。

示例代码:

def handlebar(ContextInfo):
    stock_code = '600000.SH'
    # 获取当前K线的收盘价
    close_price = ContextInfo.get_market_data(['close'], [stock_code], period='1d', count=1)
    if close_price.empty:
        return
    current_close = close_price['close'][0]
    
    # 获取合约详细信息
    detail = ContextInfo.get_instrumentdetail(stock_code)
    if detail:
        up_stop_price = detail.get('UpStopPrice', 0)
        # 判断收盘价是否等于或大于涨停价(注意浮点数精度问题)
        if current_close >= up_stop_price - 0.001:
            print(f"{stock_code} 今日已涨停!涨停价:{up_stop_price}")
        else:
            print(f"{stock_code} 未涨停。当前价:{current_close},涨停价:{up_stop_price}")

2. 获取历史指定日期是否涨停

QMT 的 get_instrumentdetail 函数仅返回当前交易日的涨跌停价。如果需要判断历史指定日期是否涨停,API 没有直接提供历史涨停价的查询接口,通常需要通过获取前一交易日的收盘价进行手动计算

计算规则:

  • 主板股票(60、00开头):前收盘价 * 1.1,四舍五入保留两位小数。
  • 创业板/科创板(30、68开头):前收盘价 * 1.2,四舍五入保留两位小数。
  • ST股票:前收盘价 * 1.05,四舍五入保留两位小数。

示例代码:

def handlebar(ContextInfo):
    stock_code = '000001.SZ'
    # 假设我们要判断 20231010 这一天是否涨停
    target_date = '20231010'
    
    # 获取目标日期及前一天的日线数据(count=2)
    df = ContextInfo.get_market_data_ex(
        fields=['close'], 
        stock_code=[stock_code], 
        period='1d', 
        end_time=target_date, 
        count=2
    )
    
    if stock_code in df and len(df[stock_code]) >= 2:
        pre_close = df[stock_code]['close'].iloc[-2] # 前一日收盘价
        target_close = df[stock_code]['close'].iloc[-1] # 目标日收盘价
        
        # 简单计算涨停价(以主板10%为例,实际应用中需根据板块和ST状态调整比例)
        limit_up_price = round(pre_close * 1.1, 2)
        
        if target_close >= limit_up_price - 0.001:
            print(f"{stock_code} 在 {target_date} 涨停!收盘价:{target_close}")
        else:
            print(f"{stock_code} 在 {target_date} 未涨停。")

总结

  • 查今日涨停:直接用 ContextInfo.get_instrumentdetail(stockcode)['UpStopPrice']
  • 查历史涨停:用 ContextInfo.get_market_data_ex 获取前一日收盘价,结合板块涨跌幅限制规则(10%或20%)自行计算涨停价,再与当日收盘价对比。