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

ptrade 平台如何实现每日可转债一键申购?(附 Python 自动化脚本)

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

问题描述

ptrade 自动化运维:使用 ipo_stocks_order 实现每日可转债一键申购
怎么在 ptrade 里写一个每天早上自动打新债(可转债申购)的脚本?

解决方案

在 ptrade 量化交易平台中,实现每日可转债自动申购(打新债)非常简单。平台专门提供了 ipo_stocks_order 接口,支持一键申购当日全部新股或新债。

以下是为您编写的完整自动化申购脚本及详细配置说明:

1. 核心接口介绍

  • 接口名称ipo_stocks_order(market_type=None, black_stocks=None)
  • 参数说明
    • market_type: 申购代码所属市场。对于可转债,该参数固定传入 4
    • black_stocks: 申购黑名单。如果您有不想申购的转债,可以将其代码(如 '123456''123456.SZ')以字符串或列表形式传入。
  • 返回值:返回一个字典,包含委托代码、委托编号、委托状态(0 失败,1 成功)及委托数量等信息。

2. 完整策略源码

# -*- coding: utf-8 -*-

def initialize(context):
    # 设置一个基础股票池(非必须,但为初始化规范)
    g.security = '600570.SS'
    set_universe(g.security)
    
    # 使用 run_daily 定时任务,在每个交易日的 09:35 自动执行申购函数
    # 建议避开 9:30 刚开盘时的行情拥堵,选择 9:35 - 10:30 之间执行
    run_daily(context, auto_subscribe_cb, time='09:35')

def before_trading_start(context, data):
    # 每日开盘前初始化执行状态标识
    g.has_ordered = False
    log.info("每日盘前准备:重置可转债申购状态")

def auto_subscribe_cb(context):
    """
    自动申购可转债函数
    """
    if not g.has_ordered:
        log.info("开始执行每日可转债一键申购...")
        try:
            # 调用一键申购接口,market_type=4 代表可转债
            # 如果有黑名单,可以设置如 black_stocks=['123xxx.SZ']
            result = ipo_stocks_order(market_type=4)
            
            log.info("柜台返回申购结果: %s" % str(result))
            g.has_ordered = True
            log.info("每日可转债自动申购流程结束。")
        except Exception as e:
            log.error("可转债自动申购出现异常: %s" % str(e))

def handle_data(context, data):
    # 盘中主回调函数,此处保持为空即可
    pass

3. 运行与注意事项

  1. 运行环境:此脚本仅在**交易模块(模拟盘或实盘)**有效,回测环境不支持新股新债申购业务。
  2. 执行时间:通过 run_daily(context, auto_subscribe_cb, time='09:35') 设置在 9:35 执行。请确保您的 ptrade 客户端在此时段处于开启并登录交易状态。
  3. 额度与资金:申购可转债无需提前冻结资金,中签后才需确保账户内有足够资金(通常每中签一签需 1000 元)。