在前面的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的一些基本概念—如何设置每次下单的大小?
一个完整的交易流程,涉及到在哪个资产上交易,在什么样的条件下买或者卖,条件变化的时候是否止盈止损。本文就尝试从这三个方面梳理下,如何下单的问题。
在哪个资产上进行交易
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/111500298None
: 直到自己取消或者交易所取消,如果没有成交的话,这个订单会一直有效。- ``datetime.datetime`` or ``datetime.date`` instance: 到时间前有效 - ``Order.DAY`` or ``0`` or ``timedelta()``: 当日有效 - ``numeric value``: 用数字代表时间,到时间前有效
是否止盈止损
止盈可以直接使用限价单来实现,止损有两种方案,一种是使用跟踪止损(StopTrail),一种是直接的止损(Stop Order).如果下单之后,同时使用止盈止损,那么,可以考虑下一个oco订单,一个成交了之后或者取消了之后,会把另一个也取消。
如何取消order
除了使用时间控制之外,在策略里面还可以直接使用self.cancel(order)来直接取消这个订单。
有些策略,可能需要经常变换止损止盈的价格,在这种情况下,可以考虑设定订单的有效期,到有效期之后,重新下一个止盈止损单;或者在特定的条件下,主动取消订单,然后下一个新的。