Broker经纪人详细说明 – backtrader中文教程
class backtrader.brokers.BackBroker()
经纪人模拟器
该模拟支持不同的订单类型,根据当前现金检查提交的订单现金需求,跟踪每次迭代的现金和价值,cerebro
并保持不同数据的当前位置。
现金在每次迭代中都会针对诸如futures
for之类的工具进行调整
价格变化意味着在真实经纪人中增加/减少现金。
支持的订单类型:
Market
: 与下一根柱的第一个分时执行(即open
价格)Close
: 指以盘中最后一根柱线的收盘价执行订单的盘中Limit
:如果在会话期间看到给定的限价,则执行Stop
Market
:如果看到给定的止损价格,则执行订单StopLimit
:Limit
如果看到给定的止损价格,则设置一个运动订单
因为代理是由实例化的,Cerebro
并且应该(大部分)没有理由更换代理,所以实例的参数不受用户控制。要改变这一点,有两种选择:
- 使用所需的参数手动创建此类的实例,并用于
cerebro.broker = instance
将实例设置为run
执行的代理 - 使用
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
: 显然是执行顺序。这提供了对数据(以及ohlc和volume值)、 执行类型、剩余大小 (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.01
是1%
0.001
是0.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
)即使价格超出- 范围,也提供滑点。
high
low
coc
(默认:False
)Cheat-On-Close将此设置
True
为set_coc
启用将“市场”订单与发出订单的柱的收盘价匹配。这实际上是*作弊*,因为柱已*关闭*,任何订单都应首先与下一个柱中的价格匹配。
coo
(默认:False
)Cheat-On-Open将此设置
True
为set_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
对象将成为所有资产的默认值 name
None
getposition(data)
返回给定的当前持仓状态的数据(一个Position
实例)
get_fundshares()
以类基金模式返回当前股数
get_fundvalue()
返回类似基金的股票价值
add_cash(cash)
向系统添加/移除现金(使用负值移除)