如何在PTrade中设置股票池?

PTrade 中,设置股票池(Stock Pool) 是进行量化交易的重要步骤之一。股票池决定了策略可以操作的标的范围,是构建策略、回测和实盘交易的基础。



一、什么是股票池?

股票池是指你希望在量化策略中关注并进行交易的股票集合。你可以通过以下几种方式来设置股票池:

  • 手动添加个股;
  • 使用 set_universe 函数动态设置;
  • 利用 get_Ashares() 获取全 A 股;
  • 通过 get_index_stocks() 获取指数成分股;
  • 通过 get_industry_stocks() 获取行业股票。


二、PTrade 设置股票池的方法

方法1:手动设置单只股票

def initialize(context):
    # 设置单只股票
    set_universe('600570.SS')  # '600570.SS' 是恒生电子的股票代码
️ 注意:股票代码需带后缀,如 .SS 表示上交所,.SZ 表示深交所。


方法2:设置多只股票(列表形式)

def initialize(context):
    # 设置多个股票
    stock_list = ['600570.SS', '600000.SS', '000001.SZ']
    set_universe(stock_list)


方法3:使用 get_Ashares() 获取全 A 股

如果你想要对 全部 A 股 进行筛选或分析,可以使用 get_Ashares() 函数获取所有可交易的 A 股。

def initialize(context):
    # 获取全 A 股
    stock_list = get_Ashares()
    set_universe(stock_list)
️ 说明:该函数仅适用于 A 股市场,不包括港股、美股等。


方法4:获取特定指数的成分股

例如,获取 沪深 300 指数 的成分股:

def initialize(context):
    # 获取沪深300成分股
    stock_list = get_index_stocks('000300.SS')
    set_universe(stock_list)
常用指数代码:| 指数 | 代码 ||------|------|| 沪深300 | 000300.SS || 上证50 | 000016.SS || 中证500 | 000905.SS || 创业板指 | 399006.SZ |


方法5:获取某行业的股票(申万一级行业)

def initialize(context):
    # 获取“医药”行业的股票
    stock_list = get_industry_stocks('801010')  # 申万一级行业代码
    set_universe(stock_list)
常用申万一级行业代码参考:| 行业 | 代码 ||------|------|| 医药 | 801010 || 电子 | 801020 || 计算机 | 801030 || 食品饮料 | 801040 || 传媒 | 801050 |


三、注意事项

  1. 股票代码必须带后缀(如 .SS.SZ),否则可能报错。
  2. 股票池只影响 get_history() 等函数的默认参数,并不限制实际交易。
  3. 设置股票池后,策略只能在该范围内交易,超出部分不会被处理。
  4. 如果你想在实盘中使用某个特定股票池,建议先进行回测验证。


四、完整示例:双均线策略 股票池设置

def initialize(context):
    context.stock = '600570.SS'
    context.n1 = 5
    context.n2 = 20
    # 设置股票池为单只股票
    set_universe(context.stock)

def handle_data(context, data):
    close_prices = data.history(context.stock, 'close', context.n2, '1d')
    ma_short = close_prices[-context.n1:].mean()
    ma_long = close_prices.mean()
    current_price = data.current(context.stock)

    if current_price > ma_short and current_price > ma_long:
        order_target_percent(context.stock, 1)  # 全仓买入
    elif current_price < ma_short and current_price < ma_long:
        order_target_percent(context.stock, 0)  # 清仓卖出


五、总结

方法 说明 适用场景
手动设置 直接指定股票 小规模测试、单一标的
get_Ashares() 获取全 A 股 全市场选股、筛选
get_index_stocks() 获取指数成分股 指数增强、行业聚焦
get_industry_stocks() 获取行业股票 行业轮动、主题投资


如果你是 PTrade 新手,建议从手动设置单只股票开始,逐步掌握更多高级功能。
掌握了股票池设置,你就迈出了量化交易的第一步!股票开户找我!无门槛国债逆回购一折 (百万分之一)!ETF佣金万0.5!融资利率5%以下!优惠多多!免费量化!ptrade&QMT!



温馨提示:投资有风险,选择需谨慎。

相关文章