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

PTrade中set_commission函数在哪个模块可用?为什么在交易模块调用会报错?

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

问题描述

PTrade中set_commission函数在哪个模块可用?

在交易模块调用set_commission设置佣金时报错

解决方案

PTrade 中 set_commission 函数的使用场景

根据 PTrade API 文档规定,set_commission 函数仅在回测模块可用

为什么在交易模块调用会报错?

如果您在交易(实盘/模拟盘)模块中调用了 set_commission,系统会抛出错误。这是因为:

  1. 实盘环境的独立性:在真实的交易环境中,您的交易佣金费率是由您开户的券商在柜台系统中配置好的。策略代码无权也无法修改真实的账户佣金费率。
  2. API 限制:为了防止混淆,PTrade 引擎严格限制了该接口只能在回测环境(用于模拟测试不同费率对策略收益的影响)的 initialize 函数中调用。

正确的使用方法(仅限回测)

在回测环境中,您可以通过该函数自定义佣金费率和最低佣金,以使回测结果更贴近您的实际交易成本。

接口说明:

set_commission(commission_ratio=0.0003, min_commission=5.0, type="STOCK")

参数说明:

  • commission_ratio:佣金费率,默认股票每笔交易的佣金费率是万分之三(0.0003),ETF基金、LOF基金每笔交易的佣金费率是万分之八。
  • min_commission:最低交易佣金,默认每笔交易最低扣5元佣金。
  • type:交易类型,默认为 "STOCK" (目前支持 "STOCK", "ETF", "LOF")。

代码示例(回测环境):

def initialize(context):
    g.security = '600570.SS'
    set_universe(g.security)
    # 将佣金费率设置为万分之三,将最低手续费设置为3元(仅回测生效)
    set_commission(commission_ratio=0.0003, min_commission=3.0)

def handle_data(context, data):
    pass

补充说明:回测手续费是如何计算的?

在 PTrade 回测中,手续费的计算公式为:手续费 = 佣金费 + 经手费

  • 佣金费 = 佣金费率 * 交易总金额(若计算结果小于设置的最低佣金 min_commission,则按最低佣金收取)。
  • 经手费 = 经手费率(固定为万分之0.487) * 交易总金额。

总结:如果您正在编写准备用于实盘交易的策略,请直接删除或注释掉 set_commission 相关的代码,实盘交易会自动按照您账户的实际费率进行扣费。