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

PTrade免设置股票池(set_universe)直接获取历史行情数据指南

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

问题描述

PTrade中如何在不设置股票池的情况下获取历史数据?

不想使用set_universe函数,直接获取数据可以吗

解决方案

在 PTrade 量化交易平台中,完全可以不使用 set_universe 函数而直接获取历史数据

根据 PTrade API 文档,set_universe 的主要作用仅仅是为 get_history 函数设定一个默认的 security_list 入参。如果你在调用获取数据的接口时,显式地传入了股票代码,就可以跳过设置股票池的步骤。

你可以通过以下两个核心接口直接获取数据:

1. 使用 get_history 接口

get_history 接口支持通过 security_list 参数直接传入单只股票代码(字符串)或多只股票代码(列表)。

代码示例:

def initialize(context):
    # 不调用 set_universe
    pass

def handle_data(context, data):
    # 直接传入单只股票代码获取过去5天的收盘价
    his_single = get_history(5, '1d', 'close', security_list='600570.SS')
    log.info("单只股票历史数据:\n%s" % his_single)
    
    # 直接传入多只股票代码获取过去5天的开盘价和收盘价
    his_multi = get_history(5, '1d', ['open', 'close'], security_list=['600570.SS', '000001.SZ'])
    log.info("多只股票历史数据:\n%s" % his_multi)

2. 使用 get_price 接口

get_price 接口本身就需要显式传入 security 参数,因此它天然不需要依赖 set_universe

代码示例:

def initialize(context):
    # 不调用 set_universe
    pass

def handle_data(context, data):
    # 获取单只股票指定时间段的数据
    price_single = get_price('600570.SS', end_date='20231001', frequency='1d', count=10, fields=['open', 'close'])
    log.info("get_price单只股票数据:\n%s" % price_single)
    
    # 获取多只股票指定时间段的数据
    price_multi = get_price(['600570.SS', '000001.SZ'], end_date='20231001', frequency='1d', count=10, fields='close')
    log.info("get_price多只股票数据:\n%s" % price_multi)

总结

  • set_universe 是非必须的:它只是为了方便在全局上下文中维护一个默认的股票列表。
  • 显式传参更灵活:在编写多标的、动态选股策略时,直接在 get_historyget_price 中传入计算好的股票列表(如 security_list=['xxx', 'yyy'])是更常见且推荐的做法。