🚀 AI 一键生成 qmt 策略代码

QMT 策略风控:下单前如何获取涨跌停价格?

qmt | 发布时间: 2025/12/24
以下内容由 EasyQuant 生成。

问题描述

下单前怎么获取股票的涨跌停价格?

解决方案

在 QMT 中,要在下单前获取股票的涨跌停价格,最直接的方法是使用 ContextInfo.get_instrumentdetail(stockcode) 接口。

该接口返回一个包含合约详细信息的字典,其中 UpStopPrice 字段代表涨停价,DownStopPrice 字段代表跌停价。

代码示例

以下是一个完整的策略示例,展示如何在 handlebar 中获取指定股票的涨跌停价格:

# -*- coding: gbk -*-

def init(ContextInfo):
    # 在初始化中设置股票池,这里以浦发银行为例
    ContextInfo.set_universe(['600000.SH'])

def handlebar(ContextInfo):
    # 获取当前主图的股票代码,也可以指定具体的代码字符串,如 '600000.SH'
    stock_code = ContextInfo.stockcode
    
    # 获取合约详细信息
    detail = ContextInfo.get_instrumentdetail(stock_code)
    
    # 判断是否成功获取到数据
    if detail:
        # 提取涨停价
        up_limit = detail['UpStopPrice']
        # 提取跌停价
        down_limit = detail['DownStopPrice']
        
        print(f"代码: {stock_code}")
        print(f"涨停价: {up_limit}")
        print(f"跌停价: {down_limit}")
        
        # 示例:在下单逻辑中使用
        # 如果当前价格低于涨停价,则执行买入逻辑(仅作演示)
        # last_price = ContextInfo.get_market_data(['close'], stock_code=stock_code, count=1)
        # if last_price < up_limit:
        #     passorder(...)
            
    else:
        print(f"未能获取到 {stock_code} 的合约信息")

关键点说明

  1. 接口名称ContextInfo.get_instrumentdetail(stockcode)
  2. 参数stockcode 为股票代码,格式如 '600000.SH'
  3. 返回值:返回一个字典(dict),包含合约的静态属性。
  4. 字段键名
    • 'UpStopPrice': 当日涨停价
    • 'DownStopPrice': 当日跌停价

替代方案(Tick 数据)

如果您正在处理高频 Tick 数据,也可以通过 ContextInfo.get_full_tick(stock_code) 获取最新的分笔数据,其返回的字典中同样包含 UpStopPriceDownStopPrice 字段。但对于一般的下单前检查,get_instrumentdetail 更为常用和直接。


Q&A

Q: get_instrumentdetail 获取的是实时涨跌停价格吗?
A: 是的,它获取的是该交易日交易所规定的涨跌停价格。对于创业板或科创板,该价格会根据前收盘价和涨跌幅限制(如20%)计算得出。

Q: 如果股票停牌了,还能获取到涨跌停价吗?
A: 通常可以获取到,因为涨跌停价是基于前一交易日收盘价计算的静态属性,与股票当前是否正在交易(IsTrading)无直接关系,但具体取决于交易所数据的推送情况。

Q: 这个接口支持期货吗?
A: 支持。对于期货合约,该接口同样返回涨跌停板价格。