3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 ptrade 量化平台中,可以使用 ipo_stocks_order 接口实现每日全自动一键申购新股及可转债。该接口支持对不同市场类型(沪市普通、科创板、深市普通、创业板、可转债)进行针对性申购,同时支持通过黑名单过滤机制跳过指定的申购代码。
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 成功)以及委托数量等。以下策略演示了如何在每天盘前(例如 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
09:30 - 11:30 或 13:00 - 15:00),避免盘前行情与柜台申购数据未更新到位。black_stocks 参数需传入打新申购代码,而非正股代码。ipo_stocks_order 会自动根据账户实际拥有的打新额度向柜台提交最大可申购数量,若额度不足系统会自动处理或部分提交。