3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 ptrade 量化交易平台中,实现每日新股、新债自动申购是量化策略自动化运维中非常实用的一环。ptrade 提供了 ipo_stocks_order 接口,支持一键申购当日全部新股与可转债。通过合理配置 market_type 参数,您可以精准控制申购的市场板块。
ipo_stocks_order(market_type=None, black_stocks=None) 函数中的 market_type 参数用于指定申购代码所属的市场板块。如果不传该参数,默认会申购当日全部可申购的新股和新债。
具体的数值对应关系如下:
market_type 值 |
对应申购市场 / 板块 | 说明 |
|---|---|---|
0 |
上证普通代码 | 上海证券交易所主板新股 |
1 |
上证科创板代码 | 上海证券交易所科创板新股 |
2 |
深证普通代码 | 深圳证券交易所主板新股 |
3 |
深证创业板代码 | 深圳证券交易所创业板新股 |
4 |
可转债代码 | 沪深两市当日发行的可转债 |
None (默认) |
全部新股与新债 | 自动申购上述所有板块的标的 |
在自动化申购时,如果您想避开某些特定的新股或新债,可以使用 black_stocks 参数。该参数支持传入单个股票代码(字符串)或股票代码列表(list)。
'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 表示委托失败。