问题描述
交易模块调用set_volume_ratio时报错
解决方案
在 PTrade 量化交易平台中,set_volume_ratio 函数的使用场景仅限于回测模块。
为什么在交易模块调用会报错?
因为 set_volume_ratio 的设计初衷是用于设置回测中单笔委托的成交比例,使得盘口流动性方面的设置尽量逼近真实交易场景。在真实的实盘交易(交易模块)中,成交比例是由市场真实的买卖盘流动性决定的,无法由策略人为设定。因此,PTrade 引擎在交易模块中不支持该函数,如果在交易模块(实盘或模拟盘)中调用它,就会引发报错。
接口说明与正确用法
- 接口名称:
set_volume_ratio(volume_ratio=0.25) - 使用场景:仅在回测模块可用。
- 参数说明:
volume_ratio(float类型),默认值为 0.25。即指本周期最大成交数量为本周期市场可成交总量的四分之一。 - 注意事项:假如委托下单数量大于成交比例计算后的数量,系统会按成交比例计算后的数量撮合,差额部分委托数量不会继续挂单。
代码示例(仅限回测)
def initialize(context):
g.security = '600570.SS'
set_universe(g.security)
# 将最大成交数量设置为本周期可成交总量的二分之一
# 注意:此代码仅在回测环境中有效,实盘交易请删除或注释掉此行
set_volume_ratio(volume_ratio = 0.5)
def handle_data(context, data):
pass
解决方案
如果您正在将回测策略迁移到实盘交易环境,请务必在 initialize 函数中删除或注释掉 set_volume_ratio 以及其他仅限回测使用的设置函数(如 set_slippage, set_commission 等),以确保交易策略能够正常启动运行。