属于类class backtrader.brokers.BackBroker()
看一下类属性和方法:
b = bt.brokers.BackBroker()
broker_attribute = ''
for i in dir(b) :
if i[:1] != '_' :
broker_attribute += i + ', '
print(broker_attribute)
输出:
BrokerBase, add_cash, add_order_history, addcommissioninfo, buy, cancel, cash, check_submitted, comminfo, d_credit, frompackages, fundmode, fundshares, fundvalue, get_cash, get_fundmode, get_fundshares, get_fundvalue, get_leverage, get_notification, get_orders_open, get_value, get_value_lever, getcash, getcommissioninfo, getposition, getvalue, init, next, notifs, notify, orders, orderstatus, p, packages, params, pending, positions, sell, set_cash, set_checksubmit, set_coc, set_coo, set_eosbar, set_filler, set_fund_history, set_fundmode, set_fundstartval, set_int2pnl, set_shortcash, set_slippage_fixed, set_slippage_perc, setcash, setcommission, seteosbar, start, startingcash, stop, submit, submit_accept, submitted, transmit,
backtrader.brokers.BackBroker()其实就是cerebro初始化的时候,设置broker :
b = cerebro.broker
broker_attribute = ''
for i in dir(b) :
if i[:1] != '_' :
broker_attribute += i + ', '
print(broker_attribute)
输出的方法和属性是一样的。
所以,broker是不同的定义方式。
broker模拟器
该模拟器支持不同的订单类型,检查提交订单的现金要求与当前现金是否匹配,跟踪每个cerebro迭代的现金和价值,并在不同的数据上保持当前持仓记录。
对于像期货这样的工具,现金在每次迭代中进行调整,因为价格变化在实际broker中意味着增加/减少现金。
支持的订单类型:
因为broker由 Cerebro 实例化,而且没有理由替换broker(大多数情况下),所以实例的参数不受用户控制。要更改此设置,有两个选项:
1.手动创建具有所需参数的此类的实例,并使用 cerebro.broker = instance 将实例设置为run执行的broker 。
2.使用 set_xxx 使用 cerebro.broker.set_xxx 设置值,其中 xxx 代表要设置的参数的名称
cerebro.broker是cerebro的getbroker和setbroker方法支持的属性
参数:
cash现金(默认值:10000):起始现金
commission佣金(默认值:CommInfoBase(percabs = True))适用于所有资产的基本佣金方案
checksubmit(默认值:True)在接受订单进入系统之前检查保证金/现金
eosbar(默认值:False,end of session bar):对于日内bar,会话结束时间和bar结束时间视为相同,单通常不是这种情况,因为一些bar(最终拍卖)由许多交易所为许多产品在会话结束后的几分钟内生成
filler填充器(默认值:None)具有签名的可调用项:可调用(order,price,ago)
slip_perc(默认值:0.0)应使用绝对项(和正数)的百分比将价格向上/向下滑动以进行买入/卖出订单
注意:
slip_fixed(默认值:0.0)应使用单位(和正数)的百分比将价格向上/向下滑动以进行买入/卖出订单
注意:如果 slip_perc 不为零,则slip_perc 参数优先于slip_fixed参数。
slip_open(默认值:False)是否为订单执行滑动价格,该价格将专门使用下一个bar K线 的开盘价。例如,Market订单将使用下一个可用 tick(即 K线 的开盘价)执行。
同样适用于一些其他操作,因为逻辑尝试检测当移动到新的 bar 时,开盘价是否与请求的价格/执行价格 匹配。
slip_match(默认值:True)如果为 True,则broker将通过在超出高/低价格的情况下限制滑动来提供匹配。
如果为 False,则经纪人将不匹配当前价格的订单,并在下一个next 迭代中执行 。
slip_limit(默认值: True) Limit订单,给定请求的精确匹配价格,即使 slip_match 为 False,也将匹配成交。
这个配置项控制这种行为。
如果是True,那么limit订单将通过将价格限制在 limit / high/low 价格上来匹配
如果是False,并且滑点超过了上限,就不会匹配
slip_out(默认值:False)即使价格超出 high - low 范围,也提供滑点。
coc(默认值:False)收盘价作弊,在set_coc启用此选项后
将匹配Market订单与发出订单的bar收盘价格。实际上是作弊,因为该bar已经关闭,任何订单都应首先与下一条bar的价格匹配。即出现匹配价格后,立刻用当前的收盘价进行交易,实际上在市场上是不存在的场景。
coo(默认值:False)开盘价作弊,在set_coo启用此选项后
将匹配Market订单与开盘价,例如使用将计时器设置为“True”的计时器,因为计时器在broker评估之前就会执行。不明白 ??
int2pnl(默认值:True)
将生成的利息(如果有)分配给减少头寸(无论是多头还是空头)的操作的利润和损失。可能存不确定的情况,因为不同的策略竞争,利息将在不确定的基础上分配给它们中的任何一个。
shortcash(默认值:True)
如果为True,则在对股票类的资产进行空头交易,并计算出资产的价值为负时,将增加现金。
如果为False,则将现金作为操作成本扣除,并将计算出的值设为正值,以获得相同的金额
fundstartval(默认值:100.0)
此参数控制以类基金的方式测量绩效的起始值,即:可以添加和扣除现金以增加股份的数量。绩效不是使用投资组合的净资产价值来衡量的,而是使用基金的价值来衡量。
fundmode(默认值:False)
如果将其设置为True,则分析器(如TimeReturn)可以根据基金价值而不是总净资产价值自动计算回报率