Backtrader教程:经纪人 - 体积灌装 - 灌装机

  |  

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 分区。

从给定价格的分配 volumeperc ,将使用百分比

参数:

  • minmov (默认值: 0.01

    最小价格变动。用于划分范围high-low在可能的价格之间按比例分配volume

  • perc (默认值: 100.0)(评估值: 0.0 - 100.0

    分配给订单运行价格以用于匹配的 volume 百分比

推荐阅读

相关文章

Backtrader向 OHLC 提供买入价/卖出价数据

最近,backtrader通过实现line覆盖来运行从 ohlc-land 逃逸,这允许重新定义整个层次结构,例如,具有仅具有 bid,ask 和 datetime lines的data feeds。

Backtrader期货展期

并非每个供应商都为可以交易的工具提供连续的未来。有时提供的数据是仍然有效的到期日期的数据,即:仍在交易的日期 这在回溯测试方面并不是很有帮助,因为数据分散在几个不同的仪器上,这些仪器另外...时间重叠。 能够正确地将这些仪器的数据从过去连接到连续的流中,可以减轻疼痛。

Backtrader在同一轴上打印

上一篇文章期货和现货补偿,在同一空间上绘制原始数据和略微(随机)修改的数据,但不是在同一轴上。 从该帖子中恢复第 1张图片。 人们可以看到: 图表的左侧和右侧有不同的刻度 当查看在原始数据周围振荡+- 50点的旋转红line(随机数据)时,这一点最为明显。

Backtrader同步不同市场

使用次数越多, backtrader 必须面对的想法和意外场景的混合就越多。对于每个新平台,一个挑战是要看看平台是否能够达到开发开始时设置的期望,灵活性和易用性是目标,Python被选为基石。 工单#76 提出了一个问题,即是否可以完成具有不同交易日历的同步市场。

Backtrader教程:数据馈送 - 扩展(Extending DataFeed)

GitHub 中的问题实际上是在推动文档部分的完成,或者説明我了解我是否backtrader 具有我从一开始就设想的易用性和灵活性以及在此过程中做出的决定。 在本例中为问题 #9。

Backtrader教程:数据馈送

backtrader 附带一组 Data Feed 解析器(在编写所有基于CSV时),可让您从不同的来源加载数据。

Backtrader跨越数字

《backtrader》的发布1.9.27.105纠正了一个疏忽。这是一个疏忽,因为拼图的所有部分都已到位,但启动并不是在所有角落都进行的。 该机制使用一个名为的属性_mindatas,因此让我们将其称为: mindatas。 社区问了这个问题,答案并不是很到位。

Backtrader节省内存

1.3.1.92版本已经重新设计并完全实现了以前到位的内存节省方案,尽管没有太多的吹捧和使用。

Backtrader教程:尺寸调整器

智能质押 策略提供了交易方法,即:buy和 sell close。

Backtrader熊猫数据馈送

在一些小的增强功能和一些OrderDict调整中,以获得更好的Python 2.6支持, backtrader 的最新版本增加了对分析Pandas Dataframe或Time Series数据的支持。