完整教程见这里。

一篮子订单并非一个单一订单,而是三个订单组合起来的,其中一个是主订单,另外两个一是针对主订单的止损保护单,二是针对主订单的获利了结单。

我们考虑一个做多的场景:这种场景下,我们想买入股票(创建买单),但是又希望在股价下跌时通过止损卖单限制损失,并且希望股价上升到目标价后卖出股票获利了结。因此,当下达一个主买单后,同时下达一个止损卖单保护自己,再同时下达一个获利了结卖单保护利润,说明如下:

  • 一个主买单buy,默认是限价单Limit,要设置主限制价price(相当于进入市场价格)。此单称为main单。
  • 一个子卖单sell,默认为停损单Stop,限制损失,要设置子停损价stopprice。此单称为stop单。
  • 再一个子卖单sell,默认为限价单Limit,以获利离场,要设置子限制价(即获利了结价)limitprice。此单称为limit单。

以上三个价格的关系是:stopprice(止损价)<price(进入价)<limitprice(获利了结价)。

这3个订单一起提交,主订单执行后,两个子订单才激活(激活前不执行)。若主单取消,则子单自动取消。激活的子单中任意一个执行或取消将导致另一个自动取消。

以下是代码例子:

brackets = self.buy_bracket(limitprice=14.00, price=13.50, stopprice=13.00)

返回值brackets 是一个列表[main, stop, limit],记录了三个订单的引用。

该方法的签名如下:

buy_bracket(self, data=None, size=None, price=None, plimit=None,# 主买单设置exectype=bt.Order.Limit, valid=None, tradeid=0,trailamount=None, trailpercent=None, oargs={},stopprice=None, stopexec=bt.Order.Stop, stopargs={},# 止损卖单设置limitprice=None, limitexec=bt.Order.Limit, limitargs={},# 获利了结卖单设置**kwargs):

如果是做空的场景,那么命令是self.sell_bracket(),它用于发布一个主卖单,一个止损保护买单和一个获利了结买单,此时三个价格的关系是:

stopprice(止损价)>price(进入价)>limitprice(获利了结价),例子如下:

self.sell_bracket(limitprice=short_tp, price=entry, stopprice=short_stop, exectype=bt.Order.Limit)
该方法的签名如下:
sell_bracket(self, data=None,size=None, price=None, plimit=None,# 主卖单设置exectype=bt.Order.Limit, valid=None, tradeid=0,trailamount=None, trailpercent=None,oargs={},stopprice=None, stopexec=bt.Order.Stop, stopargs={},# 止损买单设置limitprice=None, limitexec=bt.Order.Limit, limitargs={},# 获利了结买单设置**kwargs):

如果你想看详细的使用案例代码,参考这里。

backtrader FAQ:什么是一篮子订单Bracket Orders optMaster相关推荐

  1. Backtrader(十四)- Order订单 - 订单有效期与涨停跌停

    关于订单有效期 buy/sell/close 方法有个参数 valid 控制订单的有效期,也就是到哪一天(含)之前订单都有效 但是,有效期对市价单和收盘价单是不起作用的,这两种订单肯定会在下一个实际b ...

  2. Backtrader(十六)- Order订单 - order_target_xxx

    方法枚举 1.order_target_size 2.order_target_value 3.order_target_percent 注意:此类方法的参数与 buy / sell 完全相同 方法详 ...

  3. 0、本专栏的预计更新的内容与更新时间表(2022-05-07更新目录排版)

    最近专栏增加了咨询服务,凡是以299元购买专栏的,提供三次免费的咨询服务.咨询服务是提供问题解决方向及解决方法(比如关于backtrader某方面的使用问题,量化投资相关的问题),并不是代写策略及根据 ...

  4. 62、backtrader的一些高级技巧---如何基于日线实现尾盘选股第二日卖出(各种订单的综合使用)?

    要想实现日内交易,最方便准确度也最高的方法是使用分钟数据,比如一分钟数据或者五分钟数据. 但是假如我们只有日线数据,想要实现尾盘选股,即 满足一定条件的情况下(本策略假设bar的数量为100整数的时候 ...

  5. 量化投资之工具篇一:Backtrader从入门到精通(8)-交易系统代码详解

    本文将介绍Backtrader的交易系统,包括Order.Broker.Trade和Sizer等和交易相关关键类. Order(订单) 这个有翻译为订单,也有翻译为委托单的,后续统一为订单. 如之前文 ...

  6. backtrader回测框架实例

    backtrader是基于Python的量化回测框架,功能丰富,操作方便.其优点是运行速度快,支持pandas的矢量运算:内置多种技术指标计算,还支持股票分析技术指标库talib:支持参数自动寻优运算 ...

  7. ASP.NET MVC3书店--第九节 注册与下订单(第一部分)(转)

    http://blog.sina.com.cn/s/blog_6ad539a90100rag1.html 在本节中,我们将要创建一个下订单控制器,该控制器将获取购买者的收货地址与付款信息.在下订单之前 ...

  8. hibernate的一对多双向关联映射----客户和订单关系

    客户和订单关系:客户是一的一方,订单是多的一方. customer表: CREATE TABLE `customer` ( `ID` int(4) NOT NULL AUTO_INCREMENT , ...

  9. Blanket PO(总括订单)

    1. 总括订单是个什么东东? 2. 我们为什么需要总括订单(SAP为什么会设计总括订单的目的)? 3. 总括订单中的各项要素是如何协调最终达成我们使用总括订单的目的? 接下来就开始本次的课程,希望大家 ...

最新文章

  1. Java项目:抽奖点名神器(HTML+可自定义抽选)
  2. the resource is not on the build path of a java project
  3. python【蓝桥杯vip练习题库】ADV-356字符串的操作
  4. 实现小数据量和海量数据的通用分页显示存储过程
  5. Java 源码学习系列(三)——Integer
  6. delphi5开发人员指南_非设计人员的网页设计开发人员指南
  7. “新一代互联网安全(BII)管理:理论与实践研讨会”在西安交通大学成功举办...
  8. 关系数据库还是NoSQL数据库
  9. bzoj 1052: [HAOI2007]覆盖问题(二分+贪心)
  10. Oracle中的within,oracle中within group的用法
  11. 杭电oj1257最少拦截系统(贪心)
  12. javaee加密部署,tomcat使用自己的classloader解密
  13. 反向传播算法BP公式推导
  14. 内网群PING的shell
  15. 微信公众号订阅号与微信服务号区别
  16. iOS 强制屏幕旋转
  17. ansi编码_刨根究底字符编码之零——前言
  18. 基于ISO27001的数据中心信息安全管理体系
  19. 立创开源 | 基于Blinker点灯的智能物联网开关-给你的电器升级
  20. react 打包体积过大_create-react-app andt 打包的 js 文件过大

热门文章

  1. 修改Exchange2010 OWA登录时的企业logo
  2. AiMesh/Merlin(梅林)开源固件的DNS使用
  3. 动规 - 最大子矩阵问题
  4. 雷达感应模块技术,在智能家电中的应用,智能传感器
  5. 用Python实现斗地主游戏(终端版)
  6. 一个程序员的成长进阶路径
  7. 中国大学生三天连夜做的AI特效小游戏,一天暴涨800万用户!
  8. unicode中文数字与阿拉伯数字转换
  9. 用python玩转数据作业答案_大学mooc2020年用Python玩转数据作业答案
  10. android备份:apk安装过程及原理,备份已安装应用的apk包技术实现方案