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

PTrade量化平台中set_universe函数是必须定义的吗?

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

问题描述

PTrade中set_universe函数是否必须定义?

刚开始学习ptrade,不确定是否需要设置股票池

解决方案

在 PTrade 量化平台中,set_universe 函数不是必须定义的。

set_universe 的实际作用

根据 PTrade API 文档的说明,在股票策略中,set_universe 函数的主要作用是设定 get_history 函数的默认 security_list 入参。除此之外,它并没有其他强制性的系统级用途。

这意味着:

  1. 如果你在策略中调用 get_history 获取历史行情时,每次都显式地传入了 security_list 参数,那么你完全可以不使用 set_universe
  2. 如果你希望简化代码,让 get_history 默认获取某一组股票的数据,那么在 initialize 函数中使用 set_universe 设置股票池会非常方便。

示例说明

使用 set_universe 的情况:

def initialize(context):
    g.security = ['600570.SS', '600571.SS']
    # 将g.security中的股票设置为股票池
    set_universe(g.security)

def handle_data(context, data):
    # 获取初始化设定的股票池行情数据,不需要再传入 security_list
    his = get_history(5, '1d', 'close', security_list=None)

不使用 set_universe 的情况:

def initialize(context):
    # 不设置股票池
    pass

def handle_data(context, data):
    # 每次获取数据时显式指定股票代码
    his = get_history(5, '1d', 'close', security_list=['600570.SS', '600571.SS'])
    # 下单时也直接指定代码
    order('600570.SS', 100)

总结

对于刚开始学习 PTrade 的新手来说,虽然 set_universe 不是强制必须的,但强烈建议initialize 函数中使用它来统一管理你的目标交易标的(股票池)。这样不仅能让代码结构更清晰,也有利于后续策略的扩展和维护。