当前位置: 首页 > news >正文

Backtrader 文档学习-Broker

Backtrader 文档学习-Broker

1.类概述

属于类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是不同的定义方式。

2.参数

broker模拟器
该模拟器支持不同的订单类型,检查提交订单的现金要求与当前现金是否匹配,跟踪每个cerebro迭代的现金和价值,并在不同的数据上保持当前持仓记录。
对于像期货这样的工具,现金在每次迭代中进行调整,因为价格变化在实际broker中意味着增加/减少现金。
支持的订单类型:

  • Market:在下一个K线 的第一个 tick 执行(即开盘价)
  • Close:用于当日交易,订单将在会话的最后一个K线的收盘价执行
  • Limit:如果在会话期间看到给定的限价,则按限价执行
  • Stop:如果达到给定的停止价格,则执行市场订单
  • StopLimit:如果达到给定的limit价格,则启动限价订单

因为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)

    • order订单:显然是正在执行的订单。提供了对数据( ohlc 和 volume 值)、执行类型、剩余大小(order.executed.remsize)和其他内容信息。
      请检查订单文档和参考文献,以获取在 Order 实例内部可用的内容。
    • price价格:是订单将在 ago K线 中执行的价格
    • ago: order.data起使用以提取 ohlc 和 volume 的索引,在大多数情况下是 0,但在 Close 订单成交 的情况下将是 -1,意味着是前一天成交时的交易数据。
      ago通常用于表示某个时间点之前的时间偏移量。这个时间偏移量是以bar(通常是日、小时、分钟等时间单位的交易数据)为单位的。例如,ago(5)通常指的是从当前时间点向前数5个bar。
      为了获取bar的成交量(例如),执行:volume = order.data.volume[ago]
      可调用项必须返回已执行的大小(值 >= 0)
      可调用对象可以是具有与前面提到的签名匹配的call的对象。
      使用默认值 None,None订单将在一次操作中完全执行 。
  • slip_perc(默认值:0.0)应使用绝对项(和正数)的百分比将价格向上/向下滑动以进行买入/卖出订单
    注意:

    • 0.01 是 1%
    • 0.001 是 0.1%
  • 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)可以根据基金价值而不是总净资产价值自动计算回报率

3.方法

  • set_cash(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 信息
  • 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的参考资料
    如果名称为None,则没有其他CommissionInfo方案的资产的默认值
  • addcommissioninfo(comminfo,name = None)
    如果名称为None,则添加CommissionInfo对象,该对象将是所有资产的默认值
  • getposition(data)返回给定数据的当前位置状态(Position实例)
  • get_fundshares()返回基金类模式中的当前股票数量
  • get_fundvalue()返回基金类股票价值
  • add_cash(cash)向系统添加/删除现金(使用负值删除资金)

相关文章:

  • 如何在Raspberry Pi上启用SSH并结合cpolar内网穿透实现公网远程访问本地树莓派
  • 正则表达式与文本三剑客
  • SVM(支持向量机)原理与应用
  • Sentinel 知识总结
  • vue3开发,axios发送请求是携带params参数的避坑
  • Android 12.0 应用中监听系统收到的通知
  • 代码随想录算法训练营第36天 | 435.无重叠区间 + 763.划分字母区间 + 56.合并区间
  • 投标书撰写注意事项
  • HiveSQL题——数据炸裂和数据合并
  • 海外短剧系统国际短剧源码h5多语言版app挂载tiktok油管ins
  • Linux系统-学习
  • LaTeX 文本对齐:ragged2e 宏包
  • 【大厂AI课学习笔记】1.3 人工智能产业发展(4)——泛在的人工智能
  • 提升小波变换的程序演示
  • 什么是系统工程(字幕)13
  • 2017-08-04 前端日报
  • android图片蒙层
  • CentOS6 编译安装 redis-3.2.3
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • exif信息对照
  • Hexo+码云+git快速搭建免费的静态Blog
  • iOS 颜色设置看我就够了
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • Node 版本管理
  • 初探 Vue 生命周期和钩子函数
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 今年的LC3大会没了?
  • 类orAPI - 收藏集 - 掘金
  • 利用DataURL技术在网页上显示图片
  • 配置 PM2 实现代码自动发布
  • 扑朔迷离的属性和特性【彻底弄清】
  • 七牛云假注销小指南
  • 巧用 TypeScript (一)
  • 如何设计一个比特币钱包服务
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 听说你叫Java(二)–Servlet请求
  • 我建了一个叫Hello World的项目
  • Nginx实现动静分离
  • 进程与线程(三)——进程/线程间通信
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (八)c52学习之旅-中断实验
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • .Mobi域名介绍
  • .Net Web窗口页属性
  • .net web项目 调用webService
  • .net 按比例显示图片的缩略图
  • .NET 动态调用WebService + WSE + UsernameToken
  • .NET中的十进制浮点类型,徐汇区网站设计