backtrader经纪商模拟在使用volume运行订单时具有缺省策略:
- 忽略 volume
这是基于2个前提:
-
在市场中交易的流动性足以一次性完全吸收买入/卖出订单
-
真正的 volume 匹配需要真正的狼
一个简单的例子是
Fill or Kill
订单。即使到了价格变动分辨率,并且有足够的 volume 来填充, backtrader 经纪人也无法知道市场上碰巧有多少额外的参与者来区分这样的订单是否会匹配以粘附在零件上Fill
,或者订单是否应该Kill
但是经纪人可以接受 Volume 填充物,这些填充物决定了在给定时间点必须使用多少 volume 用于订单匹配。
填料签名
backtrader生态系统中的填充物可以是与以下签名匹配的任何可调用的填充物:
callable(order, price, ago)
哪里:
-
order
是将要运行的订单此对象允许访问
data
作为操作目标的对象,创建大小/价格,运行价格/大小/剩余大小和其他详细信息 -
price
订单的运行时间 -
ago
是按顺序查找volume和价格元素的索引data
在几乎所有情况下,这将是
0
(当前时间点),但在角落情况下,为了涵盖Close
订单,这可能是-1
例如,要访问栏 volume 运行以下操作:
barvolume = order.data.volume[ago]
可调用可以是函数,也可以是支持该__call__
方法的类的实例,例如:
class MyFiller(object): def __call__(self, order, price, ago): pass
向代理添加填充程序
最直接的set_filler
方法是使用:
import backtrader as bt cerebro = Cerebro() cerebro.broker.set_filler(bt.broker.fillers.FixedSize())
第二种选择是完全替换 ,broker
尽管这可能仅适用于已重写部分功能的 BrokerBack
子类:
import backtrader as bt cerebro = Cerebro() filler = bt.broker.fillers.FixedSize() newbroker = bt.broker.BrokerBack(filler=filler) cerebro.broker = newbroker
示例
backtrader源包含一个名为样本的样本,该样本volumefilling
允许测试一些集成的fillers
(最初全部)
参考
类 backtrader.fillers.固定大小()
使用柱中 volume 百分比返回给定订单的运行大小。
此百分比通过参数设置perc
参数:
-
size
(默认值:None
)要运行的最大大小。如果小于大小,则运行时柱的实际 volume 也是一个限制如果此参数的值计算结果为 False,则柱的整个 volume 将用于匹配订单
类 backtrader.fillers.FixedBarPerc()
使用柱中 volume 百分比返回给定订单的运行大小。
此百分比通过参数设置perc
参数:
-
perc
(默认值:100.0
)(评估值:0.0 - 100.0
)用于运行订单的 volume 柱的百分比
类 backtrader.fillers.BarPointPerc()
返回给定订单的运行大小。 volume 将均匀分布在 high范围内 -low 用于minmov
分区。
从给定价格的分配 volume 中perc
,将使用百分比
参数:
-
minmov
(默认值:0.01
)最小价格变动。用于划分范围high-low在可能的价格之间按比例分配volume
-
perc
(默认值:100.0
)(评估值:0.0 - 100.0
)分配给订单运行价格以用于匹配的 volume 百分比