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

PTrade 自动化交易教程:如何使用 ipo_stocks_order 实现一键新股申购与黑名单过滤

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

问题描述

请根据以下 SEO 主题生成完整页面内容:

Title: PTrade 新股申购教程:ipo_stocks_order 黑名单过滤特定新股

Question: PTrade 如何使用 ipo_stocks_order 接口进行一键新股申购,并设置黑名单过滤掉不买的代码?

解决方案

PTrade 新股申购教程:使用 ipo_stocks_order 接口与黑名单过滤

在 PTrade 量化交易系统中,通过内置的 ipo_stocks_order 接口可以轻松实现每天盘前或盘中的一键新股与可转债申购。同时,系统支持通过 black_stocks 参数设置黑名单,帮您自动过滤掉不希望申购的特定新股或新债。


1. 接口函数详解

ipo_stocks_order(market_type=None, black_stocks=None)

  • 适用场景:仅在 PTrade 的交易模块可用(研究和回测阶段不可用)。
  • 参数说明
    • market_type (int,选填):申购代码所属市场类型。若不传参则默认申购当日全部可申购新股及新债。
      • 0:上证普通代码
      • 1:上证科创板代码
      • 2:深证普通代码
      • 3:深证创业板代码
      • 4:可转债代码
    • black_stocks (str/list,选填):黑名单股票/债券代码。可以是单个字符串或列表。支持带后缀(如 '787001.SS')或不带后缀的6位代码(如 '787001')。传入黑名单中的标的将跳过申购。
  • 返回值:返回一个 dict 字典,包含委托代码、委托编号、委托状态(1成功/0失败)、委托数量等响应信息。

2. 完整策略代码示例

下面的策略示例展示了如何在每天盘中(例如 09:35)自动执行一键申购,并配置黑名单排除特定标的:

import time

def initialize(context):
    # 初始化全局标的(可任意设置一个有效标的用于策略运行)
    g.security = '600570.SS'
    set_universe(g.security)
    
    # 设置定时任务:每个交易日 09:35 执行新股申购
    run_daily(context, auto_ipo_job, time='09:35')

def auto_ipo_job(context):
    log.info("开始执行一键新股/新债申购流程...")
    
    # 定义不需要申购的黑名单代码列表(支持带后缀或不带后缀)
    black_list = ['787001', '300001.SZ']
    
    # 1. 申购全部市场的标的(排除黑名单)
    # res = ipo_stocks_order(black_stocks=black_list)
    
    # 2. 分市场指定申购示例(可按需灵活调用):
    # 申购科创板(排除黑名单)
    res_kc = ipo_stocks_order(market_type=1, black_stocks=black_list)
    log.info("科创板申购结果: %s" % res_kc)
    time.sleep(2)
    
    # 申购创业板(排除黑名单)
    res_cy = ipo_stocks_order(market_type=3, black_stocks=black_list)
    log.info("创业板申购结果: %s" % res_cy)
    time.sleep(2)
    
    # 申购可转债(排除黑名单)
    res_cb = ipo_stocks_order(market_type=4, black_stocks=black_list)
    log.info("可转债申购结果: %s" % res_cb)

def handle_data(context, data):
    pass

3. 注意事项与常见问题

  1. 申购时间:建议通过 run_daily 将申购时间指定在交易时间段内(如 09:3111:3013:0015:00),避免因盘前柜台未就绪导致委托失败。
  2. 额度限制:一键申购会自动根据您账户对应的实际配额上限进行申购委托,无需手动计算申购数量。
  3. 多频调用:如果在短时间内连续多次调用 ipo_stocks_order,建议中间使用 time.sleep() 进行适当停顿,防止触发柜台流控限制。