# 设置交易费用
如果init里面没有设置费用参数,默认给回测引擎送的默认参数open_tax=0.0,close_tax=0.0005, open_commission=0.0003,close_commission=0.0003,min_commission=5.0;如果回测希望不收取费用可以显示设置如下。
set_commission(
open_tax=0.0,
close_tax=0,
open_commission=0,
close_commission=0,
min_commission=0,
)
2
3
4
5
6
7
默认参设置
set_commission(
open_tax=0.0,
close_tax=0.001,
open_commission=0.0003,
close_commission=0.0003,
min_commission=5.0,
)
2
3
4
5
6
7
注意过户费默认万分之0.1双边怎么设置都会有,已经内置好无法修改和去掉。
参数:
| 参数 | 说明 |
|---|---|
open_tax | 买入印花税 |
close_tax | 卖出印花税 |
open_commission | 买入佣金 |
close_commission | 卖出佣金 |
min_commission | 单笔最低佣金 |
兼容对象:
set_commission(PerShare(type="stock", cost=0.0003, min_trade_cost=5.0))
set_commission(PerTrade(type="stock", cost=5.0))
2
| 对象 | 说明 |
|---|---|
PerShare(type="stock", cost=0.0003, min_trade_cost=5.0) | 按成交金额比例收取佣金。type="stock" 时卖出侧默认保留 A 股印花税。 |
PerTrade(type="stock", cost=5.0) | 按笔固定费用兼容对象。当前底层成本模型按最低佣金近似表达固定每笔费用。 |
示例1:不设置用默认
def init(context):
context.stock = ["000001.SZ"]
set_benchmark("000300.SH")
set_execution("close")
def handle_bar(context, bar_dict):
for sym in context.stock:
order_target_percent(sym,0.2)
2
3
4
5
6
7
示例1说明:

100万初始资金的设置,调整股票目标仓位到总资产的20% 首次下单如图。没有设置费用,按照默认设置收取费用。
万三佣金:11.11180003/10000=59.994
万0.1的过户费11.11180000.1/10000=1.9998
两个合起来 59.994+ 1.9998=61.9938
买入手续费验证完成。
示例2:按成交额比例收佣(万一,免5)
def init(context):
context.stock = "000001.SZ"
# 方式一:按成交额比例收佣(万一,免5)
set_commission(PerShare(type="stock", cost=0.0001, min_trade_cost=0.0))
# 方式二:按笔固定费用(每笔5元)
# set_commission(PerTrade(type="stock", cost=5.0))
def handle_bar(context, bar_dict):
order_target_percent(context.stock, 0.2)
2
3
4
5
6
7
8
9
示例2说明:

100万初始资金的设置,调整股票目标仓位到总资产的20% 首次下单如图。没有设置费用,按照默认设置收取费用。
万一佣金:11.20180001/10000=20.16
万0.1的过户费11.20180000.1/10000=2.016
两个合起来 20.16+ 2.016=22.176
默认次日开盘下单手续费验证完成。
示例3:按笔固定费用(每笔5元)
def init(context):
context.stock = "000001.SZ"
# 方式一:按成交额比例收佣(万一,免5)
# set_commission(PerShare(type="stock", cost=0.0001, min_trade_cost=0.0))
# 方式二:按笔固定费用(每笔5元)
set_commission(PerTrade(type="stock", cost=5.0))
def handle_bar(context, bar_dict):
order_target_percent(context.stock, 0.2)
2
3
4
5
6
7
8
9
示例3说明

100万初始资金的设置,调整股票目标仓位到总资产的20% 首次下单如图。没有设置费用,按照默认设置收取费用。
佣金:固定5元
万0.1的过户费11.20180000.1/10000=2.016
两个合起来 5+ 2.016=7.016
默认次日开盘价下单手续费验证完成。
示例4:按成交额比例收佣(万一,最小收固定5)
def init(context):
context.stock = "000001.SZ"
# 方式一:按成交额比例收佣(万一,免5)
set_commission(PerShare(type="stock", cost=0.0001, min_trade_cost=5))
# 方式二:按笔固定费用(每笔5元)
# set_commission(PerTrade(type="stock", cost=5.0))
def handle_bar(context, bar_dict):
order_target_percent(context.stock, 0.2)
2
3
4
5
6
7
8
9


买入金额很小时收取固定费用5元和万分之0.1的的过户费
买入金额导致按照佣金率大于5元之后按照佣金率计算。
默认次日开盘价下单手续费验证完成。