本文主要是介绍Backtrader 文档学习- Broker - Fillers,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Backtrader 文档学习- Broker - Fillers
1. 概述
当使用交易量进行订单执行时,backtrader的模拟broker具有默认策略:
- 忽略交易量 (默认策略是broker忽略成交量)
基于两个前提条件: - 在流动性充裕的市场中进行交易,以完全可以交易 买入/卖出订单
- 真实的交易量匹配真实的世界
快速示例是Fill 或 Kill 订单。即使到了tick分辨率并且有足够交易量去 fill,backtrader broker无法知道在市场中有多少额外的参与者,以区分此类订单是否应匹配,确定订单 Fill 部分还是 订单被 Kill 。
但是broker可以接受Volume Fillers,filler确定在给定时间点上必须使用多少成交量进行订单匹配。
2.The fillers signature
backtrader生态系统中的filler可以是任何callable,其匹配以下签名:
callable(order, price, ago)
其中:
- order 将要执行的订单是可以访问“data”对象
该对象是操作的目标Data,创建 size/price ,执行 size/price/remain size 和其他详细信息 - price订单将被执行的价格
- ago 是在其中在order中查找成交量和价格值 中的data的索引
在几乎所有情况下,这将是“0”(当前时间点),但在另一个情况下,为了覆盖Close订单,这可能是“-1”,前一天的数值 。
例如访问bar 的交易量,操作:
barvolume = order.data.volume[ago]
callable 是函数,也可以是支持__call__方法的类的实例,如:
class MyFiller(object):def __call__(self, order, price, ago):pass
3.Adding a Filler to the broker
Adding a Filler to the broker
最直接的方法是使用“set_filler”:
import backtrader as btcerebro = Cerebro()
cerebro.broker.set_filler(bt.broker.fillers.FixedSize())
第二个选择是完全替换“broker”,尽管这可能只适用于重写了部分功能的“BrokerBack”的子类:
import backtrader as btcerebro = Cerebro()
filler = bt.broker.fillers.FixedSize()
newbroker = bt.broker.BrokerBack(filler=filler)
cerebro.broker = newbroker
示例
backtrader
源包含一个名为“volumefilling”的示例,该示例允许测试一些集成的“fillers”(最初全部)
参考
类backtrader.fillers.FixedSize()
返回给定订单的执行大小,使用条形图中的百分比。
百分比是使用参数perc设置的
参数:
- size(默认值:无)最大可执行的size。 如果小于size ,则执行时间的实际bar的volume成交量也受限制。
如果此参数的值设置为False,则整个bar的成交量将用于匹配订单
类 backtrader.fillers.FixedBarPerc()
返回给定订单的执行size,使用成交量中的百分比。
此百分比由参数perc设置
参数:
- perc(默认值:100.0)(有效值:0.0-100.0)
用于执行订单bar的成交量百分比
类 backtrader.fillers.BarPointPerc()
返回给定订单的执行size。 使用minmov进行分区,成交量将在高-低范围内均匀分布。
从给定价格的分配成交量中,将使用perc百分比
参数:
- minmov(默认值:0.01)最小价格变动。用于划分高-低区间,在可能的价格之间按比例分配成交量
- perc(默认值:100.0)(有效值:0.0-100.0)用于匹配的订单执行价格的分配成交量的百分比
小结:
当使用交易量进行订单执行时,backtrader的模拟broker具有默认策略: 忽略交易量 ,broker可以接受Volume Fillers,filler确定在给定时间点上必须使用多少成交量进行订单匹配,更符合实际操作时考虑的重要因素。
broker除了考虑价格因素外,还可以考虑volume成交量作为交易的依据,如果达到订单要求的成交量值或比例,才能够成交。
可惜是没有用例测试,演示通过成交量控制order的成交。
这篇关于Backtrader 文档学习- Broker - Fillers的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!