🚀 AI 一键生成 ptrade 策略代码

ptrade量化平台获取集合竞价行情数据指南

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

问题描述

怎样获取集合竞价的行情?

/

解决方案

在ptrade量化平台中,获取集合竞价行情数据主要有两种方式:使用专门的 get_trend_data 接口获取集中竞价期间的数据,或者在盘前特定时间点使用 get_snapshot 获取行情快照。

1. 使用 get_trend_data 获取集中竞价数据

get_trend_data 接口专门用于获取集中竞价期间的代码数据。该接口在研究、回测、交易模块均可用。

接口说明:

get_trend_data(date=None, stocks=None, market=None)

参数:

  • date:日期(格式为:YYYYmmdd)(str)
  • stocks:股票代码(str/list[str])
  • market:市场(str/list[str])

注意:不传参数时,默认返回当日XSHE,XSHG市场所有代码的数据;stocks和market不能同时入参。

返回数据包含:

  • time_stamp: 时间戳(int)
  • hq_px: 价格(float)
  • wavg_px: 加权价格(float)
  • business_amount: 总成交量(int)
  • business_balance: 总成交额(int)
  • amount: 持仓量(int)

示例代码:

def initialize(context):
    g.security = '600570.SS'
    set_universe(g.security)

def handle_data(context, data):
    # 获取单只股票的集中竞价数据
    trend_data = get_trend_data(stocks='600570.SS')
    log.info(trend_data)

2. 使用 get_snapshot 获取集合竞价快照

在交易模块中,你可以通过定时任务(如 run_daily)在集合竞价期间(例如 9:23)调用 get_snapshot 接口,获取当时的最新价、涨跌停价等快照信息。

集合竞价追涨停策略示例:

以下是一个利用集合竞价快照数据进行追涨停的策略示例:

def initialize(context):
    # 初始化此策略
    # 设置我们要操作的股票池, 这里我们只操作一支股票
    g.security = '600570.SS'
    set_universe(g.security)
    # 每天9:23分运行集合竞价处理函数
    run_daily(context, aggregate_auction_func, time='9:23')  

def aggregate_auction_func(context):
    stock = g.security
    # 获取最新行情快照
    snapshot = get_snapshot(stock)
    if snapshot and stock in snapshot:
        # 最新价
        price = snapshot[stock].get('last_px', 0)
        # 涨停价
        up_limit = snapshot[stock].get('up_px', 0)
        
        # 如果最新价不小于涨停价,买入
        if float(price) >= float(up_limit) and float(up_limit) > 0:
            order(g.security, 100, limit_price=up_limit)
            log.info(f"集合竞价触发涨停买入: {stock}, 价格: {up_limit}")
    
def handle_data(context, data):
    pass

总结

  • 如果你需要分析集中竞价的量价细节(如加权价格、总成交量等),推荐使用 get_trend_data
  • 如果你需要在盘前集合竞价阶段(如9:25前)根据最新撮合价格进行交易决策(如下单追涨停),推荐结合 run_dailyget_snapshot 来实现。