3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 ptrade 量化回测中,为了使回测结果更贴近真实的实盘交易成本,我们需要对不同的交易品种设置不同的手续费率。ptrade 提供了 set_commission 接口,支持通过 type 参数分别对 STOCK(股票)、ETF 基金 和 LOF 基金 进行差异化的佣金与最低扣费设置。
set_commission(commission_ratio=0.0003, min_commission=5.0, type="STOCK")
"STOCK"、"ETF"、"LOF"。注意:
- 该接口仅在回测模块可用,且必须在
initialize(context)初始化函数中调用。- 回测总手续费 = 佣金费 + 经手费。其中经手费率固定为万分之 0.487。
- 若计算出的佣金费小于
min_commission,则按min_commission收取。
以下代码展示了如何在 initialize 中,同时为股票(万三,最低 5 元)、ETF(万零点五,免五)和 LOF(万一,最低 1 元)设置不同的佣金规则:
def initialize(context):
# 1. 设置股票池
g.security = ['600570.SS', '510050.SS', '162605.SZ']
set_universe(g.security)
# 2. 差异化佣金设置
# 股票:佣金万分之三,单笔最低 5 元
set_commission(commission_ratio=0.0003, min_commission=5.0, type="STOCK")
# ETF 基金:佣金万分之零点五,无最低佣金限制(免五)
set_commission(commission_ratio=0.00005, min_commission=0.0, type="ETF")
# LOF 基金:佣金万分之一,单笔最低 1 元
set_commission(commission_ratio=0.0001, min_commission=1.0, type="LOF")
log.info("--- 股票、ETF、LOF 差异化佣金设置成功 ---")
def handle_data(context, data):
# 策略盘中逻辑
pass
min_commission 设为 0.0。set_commission 主要支持 STOCK、ETF、LOF。若涉及期货,需使用 set_future_commission 接口进行设置。