3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 JoinQuant(聚宽)量化回测与模拟交易中,真实的手续费设置对策略收益(尤其是高频或短线策略)有极大的影响。系统默认的股票手续费为买入万三,卖出万三加千一印花税,最低佣金 5 元。但在实际实盘交易中,许多投资者拥有“免五”(取消最低 5 元限制)或特殊的费率优惠。本文将详细介绍如何在 JoinQuant 中使用 set_order_cost 实现精细化手续费配置。
set_order_cost通过调用 set_order_cost 函数,可以为股票、基金、期货等不同标的指定具体的费率规则。
OrderCost 对象参数说明open_tax:买入印花税(仅股票类收取,基金与期货不收)close_tax:卖出印花税(仅股票类收取,2023年8月起A股减半按 0.0005 收取,此前为 0.001)open_commission:买入佣金费率(如万分之三填写 0.0003)close_commission:卖出佣金费率close_today_commission:平今仓佣金(主要用于期货交易)min_commission:最低佣金单笔扣除金额(默认 5 元,若要设置“免五”则设为 0)def initialize(context):
# 开启动态复权模式
set_option('use_real_price', True)
# 设置股票费率:买入佣金万1.5,卖出佣金万1.5,印花税千0.5,最低佣金为 0(即免五)
set_order_cost(
OrderCost(
open_tax=0,
close_tax=0.0005,
open_commission=0.00015,
close_commission=0.00015,
close_today_commission=0,
min_commission=0
),
type='stock'
)
场内基金(ETF/LOF)交易免征印花税,通常佣金也更低(如万一):
# 设置场内基金费率:无印花税,买卖佣金万一,无最低佣金限制
set_order_cost(
OrderCost(
open_tax=0,
close_tax=0,
open_commission=0.0001,
close_commission=0.0001,
min_commission=0
),
type='fund'
)
通过 ref 参数可以对特定的股票、基金或期货合约进行单独定制:
# 针对平安银行(000001.XSHE)单独设置更优惠的佣金
set_order_cost(
OrderCost(
open_tax=0,
close_tax=0.0005,
open_commission=0.0001,
close_commission=0.0001,
min_commission=0
),
type='stock',
ref='000001.XSHE'
)
set_order_cost 建议在策略的 initialize(context) 初始化函数中设置。type 参数(如 'stock', 'fund', 'futures', 'index_futures')。如果设置了 ref 参数,type 必须与该标的的类型保持一致。