3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 ptrade 量化平台中,您遇到的 set_commission 设置未生效的问题,是因为没有指定交易类型(type)。
根据 ptrade API 文档,set_commission 函数的默认参数中,type 默认为 "STOCK"(普通股票)。当您使用 set_commission(commission_ratio=0.0002, min_commission=0.001) 时,系统实际上只修改了股票的佣金费率。
而您交易的代码 5105** 属于 ETF 基金。由于您没有专门为 ETF 设置费率,系统在回测撮合时会使用 ETF 的默认费率(默认 ETF/LOF 每笔交易的佣金费率是万分之八)。
要为 ETF 设置特定的佣金费率,您需要在调用 set_commission 时,显式地传入 type="ETF" 参数。
正确的代码写法如下:
def initialize(context):
# 设置 ETF 的佣金费率为万分之二,最低佣金为 0.001 元
set_commission(commission_ratio=0.0002, min_commission=0.001, type="ETF")
# 如果您的策略同时交易股票,建议也把股票的费率设置好
set_commission(commission_ratio=0.0002, min_commission=5.0, type="STOCK")
g.security = '510500.SS'
set_universe(g.security)
set_commission 接口详解set_commission(commission_ratio=0.0003, min_commission=5.0, type="STOCK")
commission_ratio (float):佣金费率。默认股票是万分之三(0.0003),ETF/LOF 默认是万分之八(0.0008)。min_commission (float):最低交易佣金。默认每笔交易最低扣 5 元。type (str):交易类型。不传参默认为 "STOCK"。目前支持 "STOCK"(股票)、"ETF"、"LOF"。在 ptrade 回测中,总手续费的计算公式如下:
手续费 = 佣金费 + 经手费
commission_ratio * 交易总金额。(如果计算出的佣金费小于 min_commission,则按 min_commission 收取)。因此,即使您将佣金设置得很低,最终扣除的费用中依然会包含系统固定的经手费部分,这一点在核对回测资金流水时需要注意。