【答读者问29】如何在backtrader的策略下不同的订单?
作者:yunjinqi   类别:    日期:2021-12-23 18:11:10    阅读:1716 次   消耗积分:0 分    

在前面的backtrader的使用教程中,已经更新了好几篇关于order及backtrader如何下单的问题。但是还是有读者问一些基本的订单的问题,本文就尝试梳理下,如何下单这个话题。

18、backtrader的一些基本概念—order包含哪些信息(1)?

19、backtrader的一些基本概念—order有哪些类型(2)?

20、backtrader的一些基本概念—创建订单的时候使用到的参数?

21、backtrader的一些基本概念—市价单(market order)的创建和撮合逻辑

24、backtrader的一些基本概念—限价单(limit order)的创建和撮合逻辑

26、backtrader的一些基本概念-市价止损单(stop_order)与限价止损单(stop limit order)的创建和撮合逻辑

27、backtrader的一些基本概念—收盘价订单(close order)的创建和撮合逻辑

28、backtrader的一些基本概念—目标订单(target order)的创建和撮合逻辑

29、backtrader的一些基本概念—成交一个取消其他订单(OCO order)的创建和撮合逻辑

32、backtrader的一些基本概念—一篮子订单(Bracket Orders)的创建和撮合机制

33、backtrader的一些基本概念—跟踪止损订单(StopTrail)的创建及撮合机制

44、backtrader的一些基本概念—Cheat-On-Open的使用方法

50、backtrader的一些基本概念—如何设置每次下单的大小?

【答读者问5】如何实现以当天收盘价交易?

【答读者问4】如何实现all-in(每次下单使用全部资金)

一个完整的交易流程,涉及到在哪个资产上交易,在什么样的条件下买或者卖,条件变化的时候是否止盈止损。本文就尝试从这三个方面梳理下,如何下单的问题。

在哪个资产上进行交易

backtrader的常用的下单函数主要有三个:

# 用于做多或者平空self.buy(data,size=lots)# 用于做空或者平多self.sell(data,size=lots)# 用于平多或者平空self.close(data)

这三个函数,第一个参数data就是交易的资产,如果没有指定data,那就是在加载到cerebro中的第一个资产上进行交易。

backtrader的position的模式和mt5类似,使用净持仓模式,同一个资产,不能同时多空共存。

对于个人客户来说,可能不是那么习惯,有一些违反直觉。但是如果资产比较多,策略比较多的情况下,这种模式是存在很大优势的。

什么条件下买卖

  • 市价单就是立即成交,不论是什么价格,直到涨跌停板。上面也讲过,市价单是特殊类型的限价单。

  • 限价单就是限定价格成交,买单一般挂在当前卖一价格的下方,卖单一般挂在当前买一价格的上方,这种限价单不会立即成交,需要等待,如果挂的价格比较远,甚至可能很久都不成交。

  • 市价止损单或者限价止损单,就是现在不触发交易,当价格达到或者超过限定价格的时候触发一个市价单或者限价单。这种可以用于止损,也可以用于行情达到一定价格后进行买入。

  • 还有一个额外的因素是希望订单多久有效。市价单就无所谓了,基本上下了就立即成交。限价单、止损单和止盈单,都要考虑这个问题。默认的订单有效期是一直有效,可以通过在下单的时候增加一个参数:valid进行控制

    ————————————————
    版权声明:本文为CSDN博主「云金杞」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_26948675/article/details/111500298

    • None: 直到自己取消或者交易所取消,如果没有成交的话,这个订单会一直有效。

      - ``datetime.datetime`` or ``datetime.date`` instance: 到时间前有效
      
      - ``Order.DAY`` or ``0`` or ``timedelta()``: 当日有效
      
      - ``numeric value``: 用数字代表时间,到时间前有效

是否止盈止损

止盈可以直接使用限价单来实现,止损有两种方案,一种是使用跟踪止损(StopTrail),一种是直接的止损(Stop Order).如果下单之后,同时使用止盈止损,那么,可以考虑下一个oco订单,一个成交了之后或者取消了之后,会把另一个也取消。

如何取消order

除了使用时间控制之外,在策略里面还可以直接使用self.cancel(order)来直接取消这个订单。

有些策略,可能需要经常变换止损止盈的价格,在这种情况下,可以考虑设定订单的有效期,到有效期之后,重新下一个止盈止损单;或者在特定的条件下,主动取消订单,然后下一个新的。


版权所有,转载本站文章请注明出处:云子量化, http://www.woniunote.com/article/57
上一篇:【答读者问28】关于backtrader实盘的时候实时更新行情的几个问题
下一篇:【答读者问30】关于backtrader计算的指标与其他平台不一致的若干问题