开源量化框架backtrader FAQ:filler,让订单执行数量与总成交量相关

完整backtrader技术教程看这里

默认情况下,backtrader中发出的订单,如果要成交,会成交全部数量,而与成交那根bar的总成交量(volumn)无关。

比如,在当前bar结束时,创建如下市价买单:

self.buy(size=100)

那么,到下一根bar,会以开盘价全部成交100股,即使下一根bar总成交量是50股也不影响该订单成交100股。

那么,我们能不能改变这种默认行为,让订单成交量与bar的总成交量挂钩呢?至少不要超过总成交量。方法是有的,那就是使用订单履行对象filler。有三种filler,以下分别介绍。

 

(1)固定数量filler:FixedSize

使用方法如下(假设在策略里创建了100股买单self.buy(size=100),后面2根bar的总成交量分别为90、80):

...
filler = bt.broker.fillers.FixedSize(size=70)
cerebro.broker.set_filler(filler)
cerebro.run()

那么在某bar上订单实际成交数量(不管买单还是卖单)=min(size,bar的总成交量,订单剩余数量)

在这种情况下,订单可能会被分开几次执行完。订单会在第一根bar成交70股

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

扫地僧量化

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值