🚀 AI 一键生成 ptrade 策略代码
立即体验
👉 AI 生成代码 👈

ptrade 平台 get_snapshot 接口支持批量获取多只股票快照吗?

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

问题描述

get_snapshot可以同时获取多只股票的快照吗?

需要同时获取多只股票的实时行情,是否需要循环调用get_snapshot多次?

解决方案

可以同时获取多只股票的快照,不需要循环调用 get_snapshot 多次。

根据 ptrade API 文档,get_snapshot(security) 接口的 security 参数不仅支持单只股票代码(字符串),还支持多只股票代码组成的列表(list)

为什么不建议循环调用?

在量化策略中,网络请求和接口调用通常是比较耗时的操作。如果您有一个包含 100 只股票的股票池,循环调用 100 次 get_snapshot 会极大地拖慢策略的执行速度。直接将这 100 只股票的代码作为一个列表传入 get_snapshot,底层只会进行一次批量查询,效率会高得多。

批量获取的代码示例

当您传入一个列表时,get_snapshot 会返回一个字典(dict),字典的键(key)是股票代码,值(value)是该股票对应的行情快照信息字典。

def initialize(context):
    # 设置包含多只股票的股票池
    g.security_list = ['600570.SS', '000001.SZ', '600000.SS']
    set_universe(g.security_list)

def handle_data(context, data):
    # 直接传入股票列表,一次性获取多只股票的快照
    snapshots = get_snapshot(g.security_list)
    
    # 遍历返回的字典
    for stock_code in g.security_list:
        # 安全地获取单只股票的快照信息,防止某些股票获取失败
        stock_snapshot = snapshots.get(stock_code)
        
        if stock_snapshot is not None:
            # 获取最新价
            last_price = stock_snapshot.get('last_px')
            # 获取涨停价
            up_limit = stock_snapshot.get('up_px')
            
            log.info(f"股票 {stock_code} 的最新价为: {last_price}, 涨停价为: {up_limit}")
        else:
            log.warning(f"未能获取到股票 {stock_code} 的快照信息")

总结

为了保证策略的运行效率,当需要获取多只股票的实时行情时,请务必将股票代码组合成一个 list,然后一次性传入 get_snapshot 接口中。