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

ptrade 平台如何进行盘后固定价交易?(附 after_trading_order 申报与撤单 Python 源码)

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

问题描述

ptrade 盘后固定价交易:上交所与深交所盘后委托精细化控制
请问 ptrade 支持哪些市场的盘后固定价委托?如何使用 after_trading_order 进行申报与撤单?

解决方案

ptrade 盘后固定价交易精细化控制指南

在 A 股市场中,盘后固定价交易是避开盘中剧烈波动、以收盘价进行大额或特定交易的重要手段。ptrade 平台提供了专属的 API 接口,支持对沪深两市的股票进行盘后固定价委托与撤单控制。


一、 ptrade 支持的盘后固定价市场与时间规则

  1. 支持市场
    • 上海证券交易所(XSHG / SS):支持科创板及普通股票的盘后固定价交易。
    • 深圳证券交易所(XSHE / SZ):支持创业板及普通股票的盘后固定价交易。
  2. 委托申报时间
    • 盘后固定价委托申报时间为:9:30 ~ 11:30 以及 13:00 ~ 15:30
    • 实际撮合成交时间为:15:05 ~ 15:30(半小时内按时间优先原则撮合成交)。
  3. 注意事项
    • 盘后固定价委托仅支持股票交易,不支持可转债等其他品种。
    • 必须传入明确的委托价格(entrust_price),通常为当日收盘价或指定价格。
    • 该功能仅支持 PTrade 客户端 且在 股票交易模块 中可用。

二、 核心 API 接口介绍

1. 盘后固定价委托:after_trading_order

after_trading_order(security, amount, entrust_price)
  • 参数
    • security (str): 股票代码(如 '300001.SZ')。
    • amount (int): 交易数量。正数表示买入,负数表示卖出。
    • entrust_price (float): 委托价格(必传)。
  • 返回:创建订单成功返回 order_id (str),失败返回 None

2. 盘后固定价撤单:after_trading_cancel_order

after_trading_cancel_order(order_param)
  • 参数
    • order_param (str/Order): Order 对象或者 order_id

三、 盘后固定价委托与撤单 Python 源码示例

以下示例展示了如何在每日 15:15(盘后固定价交易时间内)获取股票最新快照价格,并进行盘后固定价委托,随后在 5 秒后执行撤单的精细化控制逻辑:

# -*- coding: utf-8 -*-
import time

def initialize(context):
    # 初始化策略,设置操作的股票(以创业板特锐德为例)
    g.security = "300001.SZ"
    set_universe(g.security)
    
    # 注册定时任务:在 15:15 执行盘后固定价交易逻辑
    run_daily(context, post_market_trade, time="15:15")
    g.has_run = False

def post_market_trade(context):
    log.info("开始执行盘后固定价交易逻辑...")
    # 获取目标股票的最新行情快照
    snapshot = get_snapshot(g.security)
    
    if snapshot is not None and g.security in snapshot:
        # 获取最新成交价作为盘后固定价委托价
        last_px = snapshot[g.security].get("last_px", 0)
        
        if last_px > 0:
            log.info("当前最新价为: %s,准备进行盘后固定价买入申报..." % last_px)
            # 1. 申报:买入 200 股
            order_id = after_trading_order(g.security, 200, float(last_px))
            
            if order_id:
                log.info("盘后固定价委托成功,订单编号: %s" % order_id)
                
                # 模拟等待 5 秒后进行撤单控制
                time.sleep(5)
                log.info("开始对订单 %s 进行盘后撤单申报..." % order_id)
                
                # 2. 撤单
                after_trading_cancel_order(order_id)
                log.info("盘后撤单指令已发送。")
            else:
                log.error("盘后固定价委托失败!")
        else:
            log.warning("未获取到有效的最新价格,无法申报。")
    else:
        log.warning("获取行情快照失败。")

def handle_data(context, data):
    # 盘中 handle_data 保持空置,所有逻辑由 15:15 的定时任务触发
    pass