PTrade 量化 set_universe 函数完整讲解(基础入门篇)
一、函数核心概念策略的「股票关注清单」1. 函数作用set_universe()是 PTrade 量化平台内置函数作用是指定策略需要关注的股票池相当于给策略划定 “观测范围”。类比理解生活场景超市购物清单只采购清单内商品不用遍历全超市量化场景只读取、处理清单内股票的行情数据过滤其余个股大幅减少数据计算量提升策略运行效率。2. 关键底层特性该函数仅用于设定get_history()接口默认的股票列表入参不是策略强制必须调用不设置也能手动传入股票代码获取行情。二、基础语法与调用时机1. 入参规则仅接收股票代码列表作为唯一参数股票代码格式沪市.SS、深市.SZ示例代码片段# 定义股票池列表 stock_list [600036.SS, 601318.SS, 601988.SS] # 设置全局观测股票池 set_universe(stock_list)含义策略仅关注招商银行、中国平安、中国银行 3 只个股。2. 两种常用调用场景initialize 初始化函数最常用策略启动时一次性固定股票池全回测周期股票不变适合长期固定标的策略before_trading_start 盘前函数每个交易日开盘前动态更新股票池适合每日选股、轮动策略。三、实战案例 1固定双股票池基础策略需求说明策略启动后固定观测工商银行、建设银行每根 K 线打印实时收盘价仅处理清单内个股。完整可运行代码def initialize(context): # 1. 全局变量存储股票池工商银行、建设银行 g.my_stocks [601398.SS, 601939.SS] # 设置全局观测股票池 set_universe(g.my_stocks) print(f策略启动关注股票工商银行、建设银行) def handle_data(context, data): # 获取当前时间并格式化输出 current_time context.current_dt.strftime(%H:%M) print(f\n{current_time}的价格) # 遍历预设股票池读取实时收盘价 for stock in g.my_stocks: price data[stock].close # 匹配股票中文名 stock_name 工商银行 if stock 601398.SS else 建设银行 print(f{stock_name}: {price}元)回测日志效果INFO - INFO - 工商银行: 7.5元 INFO - 建设银行: 8.89元 INFO - INFO - 工商银行: 7.46元 INFO - 建设银行: 8.95元 INFO - INFO - 工商银行: 7.63元 INFO - 建设银行: 9.19元 INFO - 正在进行回测统计数据汇总 INFO - 回测统计数据汇总完成 INFO - 回测结束结束类型: 程序结束 策略回测结束代码逻辑解析initialize程序初始化阶段定义股票池调用set_universe锁定观测范围handle_data每根行情 K 线触发循环读取清单内个股收盘价打印优势不会加载全市场数千只股票数据日志简洁、计算速度更快。四、使用注意事项非强制函数不调用set_universe时调用get_history需要手动传入security_list动态选股场景轮动策略推荐放在before_trading_start每日刷新股票池代码规范建议用全局变量g.xxx存储股票列表统一管理方便多处复用代码优化股票池数量越大数据加载耗时越长尽量精简无用标的。五、拓展延伸下一篇将讲解动态轮动场景在before_trading_start中每日更新set_universe股票池结合指标选股实现自动换股策略覆盖多因子、行业轮动等主流量化思路。风险提示回测不代表实盘收益本文代码仅作函数语法教学历史回测结果无法预测未来行情股票存在价格波动、政策、行业等多重风险