一文读懂常见订单类型及backtrader支持情况

这篇具有很好参考价值的文章主要介绍了一文读懂常见订单类型及backtrader支持情况。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介

订单反映的是投资者的决策,表明投资者想以什么价格买入/卖出对应的投资标的,订单价格对最后的投资结果影响非常大,懂得都懂。

投资者常用的订单类型包括市价单、限价单、止损/止盈单、移动止损/止盈单、附加订单等,然而交易所却只有市价单和限价单两种基本订单类型,其他的订单类型则是由券商的系统提供的。 券商的软件系统会帮助监控价格,达到触发条件后就转为市价单和限价单下发给交易所执行。

Backtrader 支持多种交易订单类型,用以满足不同的交易需求,投资者常用的几种订单类型backtrader基本都支持。backtrader通过调用Strategy的buy()、sell()、close()方法来创建订单。

常见订单类型

1. 市价单(Market)

市价单指以市场价格买进或卖出的委托单,不需要自己设定价格

  • 优点:保证立即达成交易,防止踏空或尽快止盈/止损
  • 缺点:无法准确控制成交价格。当市场快速变化或流动性不足时,成交价格与下单时的价格可能相差很远,也就是滑点很大
  • backtrader Order.Market类型**:** 按下一个 Bar 的开盘价来执行成交。 使用示例: self.buy(exectype=bt.Order.Market),backtrader默认是市价单
  • backtrader Order.Close类型**:**按下一个 Bar 的收盘价来执行成交。 使用示例: self.buy(exectype=bt.Order.Close)

2. 限价单(Limit)

限价单指的是只有达到指定价格(limit Price)或有更好价格时才会执行委托单,即以指定价或低于指点价买入,以指点价或更高指定价卖出

  • 优点:能明确知道成交价格
  • 缺点:无法保证成交速度,可能无法成交
  • backtrader Order.Limit类型**:**在订单生成后,通过比较 limit Price 与之后 Bar 的 open/high/low/close 行情数据来判断订单是否成交。如果下一个 Bar 的 open 触及到指定价格 limit Price,则订单在这个 Bar 的开始时以 open 价成交;如果下一个 Bar 的 open 未触及限价,但限价位于这个 bar 的high/low价格之间,就以 limit Price 成交。如果仍然不在范围内,则继续检测之后的Bar。使用示例:self.buy(exectype=bt.Order.Limit, price=price, valid=valid) 。其中valid表示订单有效期,可选取值有:None 表示订单在完成成交或被撤销之前一直都有效; datetime实例、date 实例、数值形式的日期,表示订单在设置的 date 之前有效;Order.DAY 、0 、imedelta(),表示订单当日有效

3. 市价止盈/止损单(Stop)

市价止盈/止损单指的是当最新价达到设定的止盈/止损价格(Stop Price)时,将以市价单形式下单

  • 优点:在价格到达止盈/止损点后立即以市价单下单
  • 缺点:无法准确控制成交价
  • backtrader Order.Stop类型**:**通过比较 Stop Price 与之后 Bar 的 open/high/low/close 行情数据来判断订单是否成交。如果下一个 Bar 的 open 触及到指定价格 limit Price,则订单在这个 Bar 的开始时以 open 价成交;如果下一个 Bar 的 open 未触及限价,但限价位于这个 bar 的high/low价格之间,就以 stop Price 成交。 使用示例:self.buy(exectype=bt.Order.Stop, price=price, valid=valid)

4. 限价止盈/止损单(Stop-Limit)

限价止盈/止损单指的是一旦股价达到设置的止损价格,将以限价单的方式下单,需要指定止损价格和限价

  • 优点:在价格到达止盈/止损点后提交限价单,能准确知道成交价格
  • 缺点:无法保证成交速度,可能无法成交
  • backtrader Order.StopLimit类型**:**在下一个 Bar,按 Order.Stop 的逻辑触发订单,然后以 Order.Limit 的逻辑执行订单。使用示例:self.buy(exectype=bt.Order.StopLimit, price=price, valid=valid, plimit=plimit)

5. 移动止损单(Stop-Trailing)

移动止损单是一种止损价格会自动调整的止损单,调整范围通过设置止损价格和市场价格之间的差价来确定在市场价格上升时,止损价格会随之上升;若股价触及止损价格时,会以市价单的形式执行订单;若市场价格下降或保持不变,止损价格会保持不变

  • 优点:通过移动止盈/止损,提前锁定利润或者防止亏损扩大
  • 缺点:差价太小,很容易被波动震出,只能吃到很小一部分利润;差价太大,则起不到移动止盈/止损的效果
  • backtrader Order.StopTrail类型**:**使用示例:self.buy(exectype=bt.Order.StopTrail, price=xxx, trailamount=xxx),差价即可以用金额 trailamount 表示,也可以用市价的百分比 trailpercent 表示
  • backtrader Order.StopTrailLimit类型**:**跟踪止损限价单,是一种止损价格会自动调整的止损限价单,订单中的限价 Limit Price 不会发生变动,止损价会发生变动。 使用示例:self.buy(exectype=bt.Order.StopTrailLimit, plimit=xxx, trailamount=xxx)

6. 附加订单

附加订单是指附加在一笔普通的开仓订单之上用户平仓的订单,附加订单会在父订单完全成交并达到触发价格之后提交,帮主订单起到止盈或止损效果,最终完成平仓。附加订单类型有止盈单、止损单、括号订单、关联取消订单等

  • 止盈单是一笔特殊的限价单,其代码、数量与父订单一致,方向与父订单相反,订单价格为止盈价。在父订单完全成交后,达到了止盈价的止盈单将被提交
  • 止损单是一笔特殊的止损市价单,其代码和数量与父订单一致,方向与父订单相反,订单触发价为止损价。在父订单完全成交后,达到了止损价的止损单将被提交

6**.1 括号订单(Bracket)**

括号单由一笔止盈单和一笔止损单共同组成。在父订单完全成交后,先达到触发价的订单会被提交,另外一笔订单将被系统自动撤单。 当分别设置止盈和止损订单时,它们是“相互独立”的,譬如触发了止损,止盈单不会自动取消,需要手动取消

  • 想要创建会“自动取消”的止盈止损单,一种是下主定单(建仓/开仓)时,同时添加上“括号定单(附加定单)”,主定单未成交则附加定单不激活,主定单成交后,附加订单处于激活状态
  • 括号定单可以同时设止盈和止损,触发了止盈后,止损单会自动取消
  • 无论是市价主订单附加止盈止损订单还是限价主订单附加止盈止损订单,都可以在市价母定单在传递到交易所之前,设置好止盈止损括号单。如果忘记了添加,只要限价单未成交(市价单会马上成交),都可以继续添加上括号单,成交之后就不能添加括号单了
  • backtrader在Strategy类中提供了2种方法来操作括号订单:buy_bracket and sell_bracket

6.2 关联取消订单(One Cancel Others)

OCO指的是一个订单的执行、取消或到期,会自动取消其他相关联的订单。backtrader的buy函数参数oco 用来指定oco 订单组

def next(self):
    ...
    o1 = self.buy(...)
    ...
    o2 = self.buy(..., oco=o1)
    ...
    o3 = self.buy(..., oco=o1)

上面代码形成一个oco订单组,其中o1是组长。组中任何一个订单的执行、取消或到期,都会自动取消组中其他相关联的订单

6.3 一取消全(One-Cancels-All)

OCA指的是客户下达多个等待成交的订单,并对它们进行编组,只要这一组中有一个订单成交,则其他订单立即全部取消。其实括号订单、OCO也属于一取消全订单

结论&交流

关注v:诸葛说talk,获取更多内容。同时还能获取邀请加入量化投资研讨群, 与众多从业者、技术大牛一起交流、切磋,名额有限,不要错过。

写文章不易,觉得本文对你有帮助的话,帮忙点赞转发赞赏,让笔者有坚持写好文章的动力。文章来源地址https://www.toymoban.com/news/detail-555730.html

参考

  • https://www.backtrader.com/docu/order-creation-execution/order-creation-execution/#order-management
  • https://www.backtrader.com/docu/order_target/order_target/
  • https://www.backtrader.com/docu/order-creation-execution/trail/stoptrail/

到了这里,关于一文读懂常见订单类型及backtrader支持情况的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【ACM竞赛入门】001.一文读懂常见的ACM题型输入输出格式

    本文通过各种类型的A+B题目来帮助大家快速了解ACM题目中常见的输入输出格式,帮助大家快速上手 时间限制: 1s 内存限制: 64MB 题目描述 Your task is to Calculate a + b. Too easy?! Of course! I specially designed the problem for acm beginners. You must have found that some problems have the same titles with this one,

    2024年02月07日
    浏览(51)
  • 一文读懂火山引擎A/B测试的实验类型(1)——编程实验

    编程实验:指的是通过代码编程进行AB实验,广泛使用于前端优化、策略优化和后端算法优化多种实验场景,包含客户端和服务端实验。 前置条件 :接入客户端SDK或者服务端SDK,详见:应用接入 如何选择实验类型?适用场景是什么? 服务端实验 :指通过服务端获取实验分组

    2024年02月09日
    浏览(52)
  • 一文读懂ElasticSearch中字符串keyword和text类型区别_elasticsearch text和keyword

    可以看到,这里的数据被ES分为了4个词分别是“广” ,“东”,“深”,“圳”。同样,第二条数据也被分为了“广” ,“西”,“南”,“宁”。这里可以理解为 keyword类型存储的数据为“广东深圳”(存储未分词的原始数据) text类型存储的数据为“广” ,“东”,“深

    2024年04月16日
    浏览(42)
  • Python中的弱引用与基础类型支持情况探究

    最近有一个业务场景需要用Python自行实现一个简单的LRU cache,不可避免的接触到了弱引用这一概念,这里记录一下。 Python内存回收由垃圾回收器自动管理,当一个对象的引用计数归0时,其内存就可能被回收掉,而引用计数器的数值其实就是代表有多少个强引用指向该对象,

    2024年02月16日
    浏览(38)
  • 一文读懂Embedding

    “Embedding”直译是 嵌入式、嵌入层 。 简单来说,我们常见的 地图 就是对于 现实地理的Embedding ,现实的地理地形的信息其实远远超过三维,但是地图通过颜色和等高线等来最大化表现现实的地理 信息 。 通过它,我们在现实世界里的文字、图片、语言、视频就能转化为计算

    2024年02月11日
    浏览(42)
  • 一文读懂Websocket

    提示:通过本章节的学习,你想深入了解什么是websocket。 提示:这里可以添加本文要记录的大概内容: 例如:websocket是html5新增的全双工通讯协议,基于Tcp协议,属于应用层协议。 提示:以下是本篇文章正文内容,下面案例可供参考 WebSocket 是一种在单个 TCP 连接上进行全双

    2024年02月16日
    浏览(43)
  • 一文读懂 MySQL 锁

    1.1 什么是锁 锁是计算机用以协调多个进程间并发访问同一共享资源的一种机制。MySQL中为了保证数据访问的一致性与有效性等功能,实现了锁机制,MySQL中的锁是在服务器层或者存储引擎层实现的。 1.2 锁用来解决什么问题 锁是用来解决并发事务的访问问题,我们已经知道事

    2024年02月08日
    浏览(68)
  • 一文读懂HTML

    HTML(HyperText Markup Language)的历史可以追溯到20世纪90年代早期,它是互联网发展的重要里程碑之一。以下是HTML的历史概述: 早期阶段(1980年代末 - 1990年代初):在互联网的早期阶段,人们开始意识到需要一种标记语言来创建和共享文档。这导致了Tim Berners-Lee在1989年至1991年

    2024年02月13日
    浏览(38)
  • 一文读懂ThreadLocal

    目录 ThreadLocal 有什么用? 如何使用 ThreadLocal? ThreadLocal 原理了解吗? ThreadLocal 有什么用? 通常情况下,我们创建的变量是可以被任何一个线程访问并修改的。 如果想实现每一个线程都有自己的专属本地变量该如何解决呢? JDK 中自带的 ThreadLocal 类正是为了解决这样的问题

    2024年02月13日
    浏览(31)
  • 一文读懂LockSupport

    阅读本文前,需要储备的知识点如下,点击链接直接跳转。 java线程详解 Java不能操作内存?Unsafe了解一下 搞java开发的基本都知道J.U.C并发包(即java.util.concurrent包),所有并发相关的类基本都来自于这个包下,这个包是JDK1.5以后由祖师爷Doug Lea写的, LockSupport 也是在这时诞生

    2024年02月12日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包