3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 PTrade 量化回测环境中,set_volume_ratio 函数用于设置单笔委托的成交比例,以模拟真实交易场景中的盘口流动性限制。
根据 PTrade 官方文档的规定:假如委托下单数量大于成交比例计算后的数量,系统会按成交比例计算后的数量进行撮合成交,而差额部分(即未成交的委托数量)不会继续挂单,会被直接废弃。
这意味着,在回测中,你的单笔订单不会因为数量过大而一直处于等待成交的状态,超出流动性限制的部分会被直接取消。
set_volume_ratio(volume_ratio) 函数中的 volume_ratio 参数定义了本周期最大成交数量占本周期市场可成交总量的比例(默认值为 0.25,即四分之一)。
它们之间的关系可以通过以下公式理解:
volume_ratio具体撮合逻辑如下:
假设你设置了 set_volume_ratio(0.2)(即最大成交比例为 20%),在某个分钟周期内,某只股票的市场总成交量为 10,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)
总结:设置成交比例是为了防止回测中出现“用极大的资金买入流动性极差的股票却能瞬间全部成交”的不合理现象,使回测结果更贴近实盘。