class backtrader.brokers.BackBroker()

经纪人模拟器

该模拟支持不同的订单类型,根据当前现金检查提交的订单现金需求,跟踪每次迭代的现金和价值,cerebro并保持不同数据的当前位置。

现金在每次迭代中都会针对诸如futuresfor之类的工具进行调整

价格变化意味着在真实经纪人中增加/减少现金。

支持的订单类型:

  • Market: 与下一根柱的第一个分时执行open价格)
  • Close: 指以盘中最后一根柱线的收盘价执行订单的盘中
  • Limit:如果在会话期间看到给定的限价,则执行
  • StopMarket:如果看到给定的止损价格,则执行订单
  • StopLimitLimit如果看到给定的止损价格,则设置一个运动订单

因为代理是由实例化的,Cerebro并且应该(大部分)没有理由更换代理,所以实例的参数不受用户控制。要改变这一点,有两种选择:

  1. 使用所需的参数手动创建此类的实例,并用于cerebro.broker = instance将实例设置为run执行的代理
  2. 使用set_xxx来设置值, cerebro.broker.set_xxx其中\xxx` 代表要设置的参数的名称

Tips: cerebro.broker 是 Cerebro 的 getbroker 和 setbroker 方法支持的属性

参数:

  • cash(默认: 10000): 起始现金
  • commission(默认值:CommInfoBase(percabs=True))适用于所有资产的基本佣金方案
  • checksubmit(默认:True)在接受订单进入系统之前检查保证金/现金
  • eosbar(默认值:False):对于盘中柱,将与会话结束相同的柱视为time会话结束。通常情况并非如此,因为在会话结束后的几分钟内,许多交易所为许多产品制作了一些柱(最终拍卖)
  • eosbar(默认值:False):对于盘中柱,将与会话结束相同的柱视为time会话结束。通常情况并非如此,因为在会话结束后的几分钟内,许多交易所为许多产品制作了一些柱(最终拍卖)
  • filler(默认:None

    带有签名的可调用对象:callable(order, price, ago)

    • order: 显然是执行顺序。这提供了对数据(以及ohlcvolume值)、 执行类型、剩余大小 ( order.executed.remsize) 等的访问。

      请检查Order文档和参考以了解Order实例中可用的内容

    • price订单将在ago柱中执行的价格
    • ago: 用于order.data提取ohlc数量价格的指数。在大多数情况下,这将是0但在订单的角落情况Close下,这将是-1.

      为了获得条形量(例如),请执行以下操作:volume = order.data.voluume[ago]

    可调用对象必须返回执行的大小(值 >= 0)

    可调用对象当然可以是与__call__上述签名匹配的对象

    使用默认None订单将一次性完全执行

  • slip_perc(默认值:0.0)绝对值(和正数)的百分比,应该用于在买入/卖出订单中向上/向下滑动价格

    笔记:

    • 0.011%
    • 0.0010.1%
  • slip_fixed(默认值:0.0)单位百分比(和正数)应该用于在买入/卖出订单中向上/向下滑动价格

    注意:如果slip_perc不为零,则优先于此。

  • slip_open(默认: False) 是否为订单执行滑动价格,该价格将专门使用下一根柱的开盘价。一个示例Market是使用下一个可用分时执行的订单,即:柱的开盘价。

    这也适用于其他一些执行,因为当移动到新柱时,逻辑会尝试检测开盘价是否与请求的价格/执行类型匹配。

  • slip_match(默认:True

    如果True经纪人将通过在价格上限制滑点来提供匹配 high/low,以防它们被超过。

    如果False经纪人不会将订单与当前价格匹配,并将在下一次迭代中尝试执行

  • slip_limit(默认:True

    Limit给定请求的精确匹配价格,即使slip_match是,订单也会被匹配False

    此选项控制该行为。

    如果True, 则Limit订单将通过将价格限制为limit/high/low价格来匹配

    如果False和滑点超过上限,则不匹配

  • slip_out(默认:False

    即使价格超出- 范围,也提供滑点。highlow

  • coc(默认:False

    Cheat-On-Close将此设置Trueset_coc启用

    将“市场”订单与发出订单的柱的收盘价匹配。这实际上是*作弊*,因为柱已*关闭*,任何订单都应首先与下一个柱中的价格匹配。

  • coo(默认:False

    Cheat-On-Open将此设置Trueset_coo启用

    将“市场”订单与开盘价匹配,例如使用将“作弊”设置为“真”的计时器,因为这样的计时器经纪人评估之前执行。

  • int2pnl(默认:True

    将产生的利息(如果有的话)分配给减少头寸(无论是多头还是空头)的操作的损益。在某些情况下,这是不希望的,因为不同的策略是相互竞争的,并且利益将在不确定的基础上分配给它们中的任何一个。

  • shortcash(默认:True

    如果为 True,那么当股票类资产被卖空时,现金将增加,并且该资产的计算值为负数。

    如果False那么现金将作为运营成本扣除,计算值将为正,最终得到相同的金额

  • fundstartval(默认:100.0

    该参数控制以类似基金的方式衡量业绩的起始值,即:可以增加和减少现金增加股份数量。业绩不是用投资组合的资产净值来衡量的,而是用基金的价值来衡量的

  • fundmode(默认:False

    如果将其设置为True分析器,TimeReturn则可以根据基金价值而不是总资产净值自动计算回报

set_cash(现金)

设置现金参数(别名:setcash

get_cash()

返回当前现金(别名:getcash

get_value(datas=None, mkt=False, lever=False)

返回给定数据的投资组合价值(如果数据是None,那么将返回投资组合的总价值(别名:getvalue

set_eosbar(eosbar)

设置 eosbar 参数(别名:seteosbar)

set_checksubmit(checksubmit)

设置 checksubmit 参数

set_filler(filler)

为体积填充执行设置体积填充器

set_coc(coc)

配置 Cheat-On-Close 方法以购买收盘价

set_coo(coo)

配置 Cheat-On-Open 方法以购买收盘价

set_int2pnl(int2pnl)

配置利益分配到损益

set_fundstartval(fundstartval)

设置类基金业绩跟踪器的起始值

set_slippage_perc(perc, slip_open=True, slip_limit=True, slip_match=True, slip_out=False)

将滑点配置为基于百分比

set_slippage_fixed(fixed, slip_open=True,slip_limit=True,slip_match=True,slip_out=False)

将滑点配置为基于固定点

get_orders_open(safe=False)

返回一个带有仍然打开的订单的可迭代对象(未执行或部分执行)

不得触摸退回的订单。

如果需要订单操作,请将参数设置safe为 True

getcommissioninfo(data)

检索CommissionInfo与给定关联的方案 data

setcommission(commission=0.0, margin=None, mult=1.0, commtype=None, percabs=True, stocklike=False, interest=0.0, interest_long=False, leverage=1.0, automargin=False, name=None)

此方法使用参数为代理中管理的资产设置一个“CommissionInfo”对象。查阅参考资料 CommInfoBase

如果 name 是None,这将是找不到其他CommissionInfo方案的资产的默认值

addcommissioninfo(comminfo, name=None)

添加一个对象,如果是,该CommissionInfo对象将成为所有资产的默认值 nameNone

getposition(data)

返回给定的当前持仓状态的数据(一个Position实例)

get_fundshares()

以类基金模式返回当前股数

get_fundvalue()

返回类似基金的股票价值

add_cash(cash)

向系统添加/移除现金(使用负值移除)