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

ptrade 如何实现全自动新股与可转债一键申购?(附 Python 源码与黑名单过滤)

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

问题描述

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

Title: ptrade 新股一键申购实战:ipo_stocks_order 接口与黑名单过滤

Question: 如何使用 ptrade 实现全自动新股和可转债一键申购?

解决方案

ptrade 如何实现全自动新股与可转债一键申购?

在 ptrade 量化平台中,可以使用 ipo_stocks_order 接口实现每日全自动一键申购新股及可转债。该接口支持对不同市场类型(沪市普通、科创板、深市普通、创业板、可转债)进行针对性申购,同时支持通过黑名单过滤机制跳过指定的申购代码。


1. 核心接口说明

ipo_stocks_order(market_type=None, black_stocks=None)

  • 函数说明:用于一键申购当日全部新股或可转债。
  • 适用场景:仅在实盘/模拟交易模块可用。
  • 主要参数
    • market_type (int):申购代码所属市场,可选值包括:
      • 0:上证普通代码
      • 1:上证科创板代码
      • 2:深证普通代码
      • 3:深证创业板代码
      • 4:可转债代码
      • None:不传时默认申购全部新股及可转债。
    • black_stocks (str/list):申购黑名单,可以是单个代码或列表(支持 6 位代码如 '787001',或带尾缀如 '787001.SS')。名单中的标的将不做申购。
  • 返回值:返回 dict 类型,包含委托代码、委托编号、委托状态(0 失败,1 成功)以及委托数量等。

2. 完整策略源码示例

以下策略演示了如何在每天盘前(例如 9:31)通过 run_daily 定时任务自动触发新股及可转债申购,并演示如何设置黑名单过滤:

import time

def initialize(context):
    # 设置基础交易标的
    g.security = '600570.SS'
    set_universe(g.security)
    
    # 设置每日 09:31 运行打新逻辑
    run_daily(context, auto_ipo_order, time='09:31')

def auto_ipo_order(context):
    log.info("=== 开始执行自动打新程序 ===")
    
    # 定义不需要申购的黑名单代码列表(如特定高风险标的)
    black_list = ['787001', '370001.SZ']
    
    # 方式一:全市场一键申购(含股票和可转债),带黑名单
    # res = ipo_stocks_order(black_stocks=black_list)
    # log.info("全市场申购结果: %s" % res)
    
    # 方式二:分市场细粒度申购(可配合 sleep 避免频繁报单)
    markets = {
        0: "上证主板",
        1: "上证科创板",
        2: "深证主板",
        3: "深证创业板",
        4: "可转债"
    }
    
    for m_type, name in markets.items():
        log.info("正在申购: %s" % name)
        res = ipo_stocks_order(market_type=m_type, black_stocks=black_list)
        log.info("%s 申购委托结果: %s" % (name, res))
        time.sleep(2)  # 适当停顿
        
    log.info("=== 自动打新程序执行完毕 ===")

def handle_data(context, data):
    pass

3. 注意事项与常见问题

  1. 运行时间点:建议将打新运行时间设置在交易日开盘后(如 09:30 - 11:3013:00 - 15:00),避免盘前行情与柜台申购数据未更新到位。
  2. 黑名单代码格式:黑名单 black_stocks 参数需传入打新申购代码,而非正股代码。
  3. 额度限制ipo_stocks_order 会自动根据账户实际拥有的打新额度向柜台提交最大可申购数量,若额度不足系统会自动处理或部分提交。
  4. 撤单与重复下单:新股/可转债申购单报出后一般不支持撤单,请确保黑名单及申购逻辑设置无误后再上线实盘运行。