You are here:  Home » 量化交易与机器学习 » backtrader » 订单 – backtrader中文教程

Orders

Cerebro是关键控制系统在backtraderStrategy(一子类)是最终用户的关键控制点。后者需要一个链接方法对系统的其它部分而这也正是orders起到关键role.

OrdersStrategy成翻译由逻辑作出的决定消息适于Broker以执行一个动作。这是通过做:

  • Creation

    通过策略的方法:buy\``,sellandclose(Strategy) which return anorder`实例作为reference

  • Cancellation

    Through战略的方法:cancel(策略),其接受一个订单实例操作on

And的orders也用作通信方法返回给用户,以通知事情是如何在broker.

  • Notification

    To战略方法运行:notify_order(战略),它会报告orderinstance

Order creation

When调用buy, sellclose以下参数申请创建:

  • data(默认值:None

    对于该数据的顺序必须被创建。如果None然后系统中的第一数据,self.datas[0] or self.data0(又名self.data)将被used

  • size(默认值:None

    尺寸使用(正)的数据的单位要用于order.

    IfNonesizer例如经由getsizer检索将被用来确定size.

  • price(默认:None

    价格使用(现场经纪人可以将限制实际如果它不符合最小报价单位要求的格式)

    None有效期为MarketClose订单(市场决定价格)

    对于Limit, StopStopLimit的订单此值确定触发点(在Limit的触发的情况下显然是在该价位的顺序应该匹配)

  • plimit(默认:None

    只适用于StopLimit订单。这是价格在这设置隐Limit秩序,一旦Stop一直触发(对于该price已使用)

  • exectype(默认值:None

    可能的值:

    • Order.MarketNone。A股市场的订单将被执行下一个可用的价格。在回测这将是接下来bar
    • Order.Limit。这只能在给定的执行的顺序price或better
    • Order.Stop。这是在’触发的命令price和像Order.Marketorder
    • Order.StopLimit执行。这是在’触发的命令price和作为隐式Limit以便与价格由下式给出执行pricelimit
  • valid(默认值:None

    可能的值:

    • None:这产生将不会过期(又名的顺序Good till cancel),并留在市场,直到匹配或取消。在现实中,经纪人倾向于强加时间限制,但这通常是让远在时间考虑不expiring
    • datetime.datetimedatetime.date比如:日期将被用来生成有效订单,直到给定日期时间(又名good till date
    • Order.DAY0timedelta():天有效期至在End of the Session(又名day顺序)将被generated
    • numeric value:这被假定为对应的值在`日期时间matplotlib编码(由所使用的一个backtrader),并且将用于产生顺序有效的,直到那个时候(good till date
  • tradeid(默认:0

    这是通过施加一个内部值backtrader跟踪对同一资产重叠交易。这tradeid是发送回strategy通知更改的状态时,orders.

  • **kwargs:额外的经纪人实现可能支持额外的参数。backtrader将通过kwargs倒在创建的订单objects

    Example:如果4顺序执行的类型直接支撑backtrader是不够的,在例如的情况下Interactive Brokers因为可以通过下面的kwargs

    orderType="LIT", lmtPrice=10.0, auxPrice=9.8
    

    这将覆盖由`创建的设置backtrader和产生LIMIT IF TOUCHED以便与touched的9.8价和limit10.0.

Note

The的价格close方法将检查的当前位置和相应地使用buysell有效的close位置。size也将自动除非计算参数是来自用户的输入,在这种情况下的局部closereversal可achieved

Order notification

To接收通知的notify_order方法具有在被覆盖用户子类Strategy(默认行为是什么都不做)。该以下适用于那些通知:

  • 之前发布的战略的next方法是called
  • May(并将)发生若干次相同的order具有相同或同样的nextcycle.

    Anorder在不同的状态可能会被提交到broker而且是accepted其执行completed之前next将again.

    In这种情况下至少3个通知将用下面的发生被调用status值:

    • Order.Submitted因为订单被送到了broker
    • Order.Accepted因为订单是采取的broker和等待潜在execution
    • Order.Completed因为例如它很快就匹配,完全填充(其可以是的情况下,通常为Market订单)

通知可能发生,甚至几次在相同的情况下状态Order.Partial。这种状态不会在backtesting经纪人(匹配时不考虑体积),但它会为务必设置真正brokers.

房地产经纪人可以更新位置之前发出一个或多个处决,以及这组执行的将弥补一个Order.Partialnotification.

Actual执行数据在属性:order.executed这是一个种类型的目标OrderData(参见下面的参考)中,用通常的场如sizeprice

在创建时的值存储在order.created哪一个仍然在整个生命周期不变的order

我的订单状态values

The如下定义:

  • Order.Created:设置当Order实例被创建。从未被由最终用户看到除非order手动创建,而实例不是通过buy, sellclose
  • Order.Submitted:设置当order例如已发送到broker。这仅仅意味着它已经sent。在backtesting模式,这将是一个立即采取行动,但可能需要实际的time用真正的经纪人,其可接收订单,当它只有先通知被转发到一个exchange
  • Order.Accepted:所述broker已采取的顺序,它是在系统(或已经在交换)等待执行根据所设置的参数,如执行类型,尺寸,价格和validity
  • Order.Partial:所述order已被部分执行。order.executed包含当前充满size和平均price.

    order.executed.exbits包含了ExecutionBits的完整列表详细介绍了部分fillings

  • Order.Complete:中order已完全上满平均price.
  • Order.Rejected:中broker拒绝了订单。一个参数(像例如valid,以确定其寿命)可能不被接受由brokerorder不能accepted.

    The原因将在通过的notify_store方法所通知的strategy。虽然这可能看起来别扭,原因是现实生活经纪人将通知此以上的事件,其可以是或可以不是照片直接相关订单。但是从经纪人的通知,仍可看到notify_store.

    这个状态不会在backtestingbroker

  • Order.Margin可以看出:订单执行将暗示追加保证金通知和先前接受的订单已取出的system
  • Order.Cancelled(或Order.Canceled):该用户的确认请求的cancellation

    It必须考虑到的请求的cancel的通过顺序cancel战略的方法是没有取消的保证。该为了可能已经执行,但这样的执行可能还没有由经纪人通知和/或通知可能至今尚未传递到strategy

  • Order.Expired:先前接受order它有一个时间有效性已经过期,被撤下,system

Reference:订单和相关classes

These对象是一般类的backtrader生态系统。他们可能会被延长和/或包含具有运行时额外的嵌入信息其他经纪人。请参阅相应broker

class backtrader.order.Order(的参考)

类,其保持创建/执行数据和oder.

The顺序的类型可以具有以下状态:

  • 提交:发送给代理,并等待confirmation
  • Accepted:接受了broker
  • Partial:部分executed
  • Completed:完全exexcuted
  • 取消/取消:取消由user
  • Expired:expired
  • Margin:没有足够的现金来执行order.
  • Rejected:由拒绝broker

    This可以订单提交过程中发生(因此订货会没有达到接受状态)或每一个新的酒吧在执行前价格,因为现金已被其他来源的(未来状仪器可能会降低现金​​或订单的订单可能已经执行)

成员属性:

  • 裁判:唯一的订单identifier
  • 创建:OrderData拿着创作data
  • executed:OrderData控股执行data
  • info:越过方法addinfo()自定义信息。它保持在OrderedDict的形式,其已被子类,以便键” 还可以使用notation

User方法指定:

  • isbuy():返回BOOL指示该顺序buys
  • issell():返回BOOL指示是否为了sells
  • alive():返回布尔如果顺序在状态部分或Accepted

class backtrader.order.OrderData(DT =无,大小= 0,价格= 0.0,pricelimit = 0.0,remsize = 0,函数,pclose = 0.0,trailamount = 0.0,trailpercent = 0.0)

存放用于创建和Execution.

In要求而作出创作的情况下和在所述情况下的实际顺序数据执行的实际outcome.

Member属性:

  • exbits:迭代OrderExecutionBits此OrderData
  • dt的:日期时间(浮点)创建/执行time
  • size:要求/执行size
  • 价格:执行价格注:如果没有给出价格,并没有pricelimite给出,收盘价格在时间或订单创建将被用来作为reference
  • pricelimit:保持用于StopLimit(其具有触发第一)pricelimit
  • trailamount:在尾随stops
  • 绝对价格距离市值整个位size
  • comm:佣金整个位execution
  • pnl:trailpercent:在尾随stops
  • value个价格距离PNL通过该位产生(如果有些东西是封闭的)
  • 保证金:通过订单支付(如果有的话)
  • 保证金psize:当前打开的位置size
  • pprice:当前打开的位置price

类backtrader.order.OrderExecutionBit(DT =无,大小= 0,价格= 0.0,关闭= 0,closedvalue = 0.0,closedcomm = 0.0,打开= 0,openedvalue = 0.0,openedcomm = 0.0,PNL = 0.0,psize = 0,pprice = 0.0)

意图保持约顺序执行的信息。A“位”不确定订单已全部/部分执行,它只是持有information.

成员属性:

  • DT:日期时间(浮动)执行time
  • size:多少是executed
  • price:执行price
  • closed:多少执行关闭一个现有的postion
  • opened:多大的执行开辟了新的position
  • openedvalue:市值:的“打开” part
  • closedvalue市场价值“封闭” part
  • closedcomm:佣金为“关闭” part
  • openedcomm:佣金为“打开” part
  • value:市值整个位大小
  • 通讯:PNL通过该位产生的(如果有些东西是封闭的)
  • psize:佣金整个位execution
  • pnl当前打开的位置size
  • pprice:当前打开的位置price

评论被关闭。