问题描述
刚开始学习ptrade,不确定是否需要设置股票池
解决方案
在 PTrade 量化平台中,set_universe 函数不是必须定义的。
set_universe 的实际作用
根据 PTrade API 文档的说明,在股票策略中,set_universe 函数的主要作用是设定 get_history 函数的默认 security_list 入参。除此之外,它并没有其他强制性的系统级用途。
这意味着:
- 如果你在策略中调用
get_history获取历史行情时,每次都显式地传入了security_list参数,那么你完全可以不使用set_universe。 - 如果你希望简化代码,让
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 函数中使用它来统一管理你的目标交易标的(股票池)。这样不仅能让代码结构更清晰,也有利于后续策略的扩展和维护。