🚀 AI 一键生成 joinquant 策略代码
立即体验

joinquant 实时风控:如何使用 get_current_data 获取涨跌停价与停牌状态?

joinquant | 发布时间: 2026/7/25
以下内容由 EasyQuant 生成。

问题描述

请根据以下 SEO 主题生成完整页面内容:

Title: joinquant 实时风控:使用 get_current_data 获取涨跌停价与停牌状态

Question: 如何在 joinquant 策略中盘中实时获取股票的涨跌停价格和停牌状态?

解决方案

joinquant 实时风控:使用 get_current_data 获取涨跌停价与停牌状态

在 JoinQuant(聚宽)量化交易平台中,传统的行情获取 API(如 historyattribute_history)通常获取的是前一个单位时间(天或分钟)的历史数据。为了在盘中实时获取当前最新价、涨停价、跌停价、是否停牌等信息并进行风控拦截,我们需要使用 get_current_data() API。


一、get_current_data API 概述

get_current_data() 用于获取当前单位时间(当天/当前分钟)的快照信息。

返回对象属性

调用 get_current_data() 会返回一个字典(dict),key 为标的代码,value 为包含以下常用属性的对象:

  • high_limit:当日涨停价(float
  • low_limit:当日跌停价(float
  • paused:是否停牌或暂停交易(bool),若停牌、未上市或已退市返回 True
  • last_price:最新价格(09:30前返回昨日收盘价)
  • day_open:当日开盘价(至少09:27后可获取)
  • is_st:是否为 ST 或 *ST 股票(bool
  • name:股票当前名称

注意事项:

  1. 返回的数据仅在当前交易日/当前时间点有效,切勿跨日缓存。
  2. 数据采用按需加载机制,调用 current_data[security] 时才会实时加载该标的数据。

二、核心代码示例

以下示例展示了如何在 handle_data 或定时任务中,通过 get_current_data() 进行买卖前的安全检查:避免对停牌股或即将封涨停/跌停的股票盲目下单。

import jqdata

def initialize(context):
    g.security = '000001.XSHE'
    set_benchmark('000300.XSHG')
    set_option('use_real_price', True)
    # 设定定时运行任务
    run_daily(market_open, time='every_bar')

def market_open(context):
    security = g.security
    
    # 获取当前快照数据
    current_data = get_current_data()
    stock_info = current_data[security]
    
    # 1. 检查是否停牌
    if stock_info.paused:
        log.info("标的 %s 当前处于停牌状态,跳过交易" % security)
        return
    
    # 2. 获取当前价、涨停价、跌停价
    last_price = stock_info.last_price
    high_limit = stock_info.high_limit
    low_limit = stock_info.low_limit
    
    log.info("标的: %s, 当前价: %.2f, 涨停价: %.2f, 跌停价: %.2f" % 
             (security, last_price, high_limit, low_limit))
    
    # 3. 风控拦截逻辑示例:不追涨停,跌停不上买单
    if last_price >= high_limit:
        log.warn("标的 %s 已触及涨停,放弃买入" % security)
        return
    elif last_price <= low_limit:
        log.warn("标的 %s 已触及跌停,放弃买入" % security)
        return
        
    # 执行正常下单逻辑
    cash = context.portfolio.available_cash
    if cash > 0 and security not in context.portfolio.positions:
        order_value(security, cash)
        log.info("成功下单买入 %s" % security)

三、常见实用场景

  1. 避开停牌股票:多股票轮动策略中,过滤 stock_info.paused == True 的标的,防止废单。
  2. 跌停平仓保护:在卖出股票前检查是否跌停(last_price <= low_limit),跌停时市价卖单会被系统自动撤销。
  3. 过滤 ST 股票:利用 stock_info.is_st 或检查 stock_info.name 中是否包含 ST,及时剔除高风险标的。