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

PTrade中委托数量大于成交比例计算后的数量会怎样?

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

问题描述

PTrade中如果委托数量大于成交比例计算后的数量会怎样?

下单数量和成交比例的关系是什么

解决方案

在 PTrade 量化回测环境中,set_volume_ratio 函数用于设置单笔委托的成交比例,以模拟真实交易场景中的盘口流动性限制。

1. 委托数量大于成交比例计算数量时的处理机制

根据 PTrade 官方文档的规定:假如委托下单数量大于成交比例计算后的数量,系统会按成交比例计算后的数量进行撮合成交,而差额部分(即未成交的委托数量)不会继续挂单,会被直接废弃。

这意味着,在回测中,你的单笔订单不会因为数量过大而一直处于等待成交的状态,超出流动性限制的部分会被直接取消。

2. 下单数量与成交比例的关系

set_volume_ratio(volume_ratio) 函数中的 volume_ratio 参数定义了本周期最大成交数量占本周期市场可成交总量的比例(默认值为 0.25,即四分之一)。

它们之间的关系可以通过以下公式理解:

  • 本周期最大允许成交量 = 本周期市场实际总成交量 × volume_ratio

具体撮合逻辑如下:

  • 情况 A(下单量较小):如果 你的下单数量 $\le$ 本周期最大允许成交量,那么你的订单将全部成交
  • 情况 B(下单量过大):如果 你的下单数量 $>$ 本周期最大允许成交量,那么你的订单将部分成交(成交量 = 本周期最大允许成交量),剩余未成交的部分将不再挂单

示例说明

假设你设置了 set_volume_ratio(0.2)(即最大成交比例为 20%),在某个分钟周期内,某只股票的市场总成交量为 10,000 股。

  • 本周期最大允许成交量 = 10,000 × 0.2 = 2,000 股。
  • 如果你下单买入 1,500 股,因为 1,500 < 2,000,你的订单会全部成交 1,500 股
  • 如果你下单买入 3,000 股,因为 3,000 > 2,000,你的订单只会成交 2,000 股,剩下的 1,000 股会被直接取消,不会顺延到下一个周期。

代码示例

def initialize(context):
    g.security = '600570.SS'
    set_universe(g.security)
    # 将最大成交数量设置为本周期可成交总量的二分之一 (50%)
    set_volume_ratio(volume_ratio=0.5)

def handle_data(context, data):
    # 假设下单量极大,系统会根据 50% 的比例截断成交,超出部分不挂单
    order(g.security, 1000000)

总结:设置成交比例是为了防止回测中出现“用极大的资金买入流动性极差的股票却能瞬间全部成交”的不合理现象,使回测结果更贴近实盘。