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

ptrade 一键新股申购函数 ipo_stocks_order 中的 market_type 参数如何对应上证、深证和科创板?

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

问题描述

ptrade 自动化运维:ipo_stocks_order 申购代码所属市场详解
ptrade一键新股申购函数ipo_stocks_order中的market_type参数如何对应上证、深证和科创板?

解决方案

ptrade 自动化运维:ipo_stocks_order 申购代码所属市场详解

在 ptrade 量化交易平台中,实现每日新股、新债自动申购是量化策略自动化运维中非常实用的一环。ptrade 提供了 ipo_stocks_order 接口,支持一键申购当日全部新股与可转债。通过合理配置 market_type 参数,您可以精准控制申购的市场板块。


一、market_type 参数映射关系

ipo_stocks_order(market_type=None, black_stocks=None) 函数中的 market_type 参数用于指定申购代码所属的市场板块。如果不传该参数,默认会申购当日全部可申购的新股和新债。

具体的数值对应关系如下:

market_type 对应申购市场 / 板块 说明
0 上证普通代码 上海证券交易所主板新股
1 上证科创板代码 上海证券交易所科创板新股
2 深证普通代码 深圳证券交易所主板新股
3 深证创业板代码 深圳证券交易所创业板新股
4 可转债代码 沪深两市当日发行的可转债
None (默认) 全部新股与新债 自动申购上述所有板块的标的

二、黑名单过滤参数 black_stocks

在自动化申购时,如果您想避开某些特定的新股或新债,可以使用 black_stocks 参数。该参数支持传入单个股票代码(字符串)或股票代码列表(list)。

  • 注意:传入的黑名单代码必须是申购代码。代码可以是 6 位数字(如 '787001'),也可以带市场尾缀(如 '787001.SS')。

三、自动化新股申购策略示例

以下是一个完整的 ptrade 自动化策略示例。该策略利用 run_daily 定时任务,在每天早盘 09:35 自动执行一键申购,并避开黑名单中的个股。

import time

def initialize(context):
    # 设置一个基础股票池(set_universe 为非必须,但初始化时建议设置)
    g.security = '600570.SS'
    set_universe(g.security)
    
    # 每天 09:35 自动执行新股新债申购
    run_daily(context, auto_ipo_subscription, time='9:35')

def auto_ipo_subscription(context):
    log.info("开始执行每日自动化新股/新债申购...")
    
    # 定义申购黑名单(例如避开某些特定申购代码)
    black_list = ['787001', '371002.SZ']
    
    try:
        # 1. 申购上证主板新股
        res_sh = ipo_stocks_order(market_type=0, black_stocks=black_list)
        log.info(f"上证主板申购结果: {res_sh}")
        time.sleep(2) # 适当延时,减缓柜台压力
        
        # 2. 申购上证科创板新股
        res_kc = ipo_stocks_order(market_type=1, black_stocks=black_list)
        log.info(f"科创板申购结果: {res_kc}")
        time.sleep(2)
        
        # 3. 申购深证主板新股
        res_sz = ipo_stocks_order(market_type=2, black_stocks=black_list)
        log.info(f"深证主板申购结果: {res_sz}")
        time.sleep(2)
        
        # 4. 申购深证创业板新股
        res_cy = ipo_stocks_order(market_type=3, black_stocks=black_list)
        log.info(f"创业板申购结果: {res_cy}")
        time.sleep(2)
        
        # 5. 申购可转债
        res_bond = ipo_stocks_order(market_type=4, black_stocks=black_list)
        log.info(f"可转债申购结果: {res_bond}")
        
    except Exception as e:
        log.error(f"自动申购过程中出现异常: {e}")

def handle_data(context, data):
    # 盘中常规逻辑(此处留空)
    pass

返回数据格式说明

调用 ipo_stocks_order 后,平台会返回一个字典(dict),包含申购委托的详细信息。例如:

# 成功时的返回示例
{
    '787001': {'entrust_no': '123456', 'status': 1, 'amount': 1000},
    '371002': {'entrust_no': '123457', 'status': 1, 'amount': 10}
}
# status 为 1 表示委托成功,0 表示委托失败。