🚀 AI 一键生成 ptrade 策略代码

ptrade 平台 set_commission 设置 ETF/LOF 费用未生效的解决方法

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

问题描述

设置费用未生效,set_commission(commission_ratio=0.0002, min_commission=0.001)代码为5105**。

/

解决方案

问题原因分析

在 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 回测手续费计算规则

在 ptrade 回测中,总手续费的计算公式如下:

手续费 = 佣金费 + 经手费

  1. 佣金费 = commission_ratio * 交易总金额。(如果计算出的佣金费小于 min_commission,则按 min_commission 收取)。
  2. 经手费 = 经手费率 (固定为万分之 0.487) * 交易总金额。

因此,即使您将佣金设置得很低,最终扣除的费用中依然会包含系统固定的经手费部分,这一点在核对回测资金流水时需要注意。