🚀 AI 一键生成 ptrade 策略代码

PTrade 回测技巧:如何设置最低 5 元的交易手续费?

ptrade | 发布时间: 2025/12/24
以下内容由 EasyQuant 生成。

问题描述

回测时如何设置最低 5 元的手续费?

解决方案

在 PTrade 回测环境中,您可以使用 set_commission 函数来设置交易佣金和最低手续费。

该函数通常在 initialize 初始化函数中调用。

代码实现

以下是设置股票交易佣金为万分之三,且最低手续费为 5 元的代码示例:

def initialize(context):
    # 设置回测标的(示例)
    g.security = '600570.SS'
    set_universe(g.security)
    
    # 设置手续费
    # commission_ratio: 佣金比例,这里设为万分之三 (0.0003)
    # min_commission: 最低手续费,这里设为 5 元
    # type: 交易类型,默认为 'STOCK' (股票)
    set_commission(commission_ratio=0.0003, min_commission=5.0, type='STOCK')

def handle_data(context, data):
    # 示例交易逻辑
    pass

参数说明

  • commission_ratio (float): 交易佣金费率。例如 0.0003 代表万分之三。
  • min_commission (float): 最低交易佣金。即单笔交易计算出的佣金如果低于该值,则按该值收取。您要求的“最低 5 元”即通过此参数设置。
  • type (str): 交易品种类型。支持 'STOCK' (股票), 'ETF' (ETF基金), 'LOF' (LOF基金)。如果不传,默认为 'STOCK'

注意事项

  1. 仅限回测set_commission 函数仅在回测模块中有效。实盘交易的手续费由券商柜台实际费率决定,策略代码无法修改。
  2. 费用构成:在 PTrade 回测中,总手续费 = 佣金费 + 经手费。
    • 佣金费max(成交金额 * commission_ratio, min_commission)
    • 经手费:固定为成交金额的万分之 0.487(框架自动计算,无需额外设置)。
  3. 多品种设置:如果您同时交易股票和 ETF,建议分别设置。例如:
    # 设置股票最低 5 元
    set_commission(commission_ratio=0.0003, min_commission=5.0, type='STOCK')
    # 设置 ETF 最低 5 元 (ETF通常费率较低,如万分之 0.5)
    set_commission(commission_ratio=0.00005, min_commission=5.0, type='ETF')
    

Q&A

Q: 如果我不调用 set_commission,默认的手续费是多少?
A: 如果不显式调用该函数,PTrade 回测默认的股票佣金费率为万分之三(0.0003),最低佣金默认为 5 元。ETF 和 LOF 的默认费率为万分之八。

Q: set_commission 可以放在 handle_data 里吗?
A: 不建议。通常手续费是策略运行的基础环境配置,应当在 initialize 中一次性设置完成。虽然技术上可能不报错,但在盘中频繁重置费率不符合逻辑且消耗资源。

Q: 这个设置会影响印花税吗?
A: 不会。set_commission 仅控制券商佣金。印花税(目前卖出方收取)由系统根据交易所规则自动计算扣除。