pyalgotrade的学习之Position模块

pyalgotrade的学习之Position模块

0.前言

pyalgotrade是一款成熟的事件驱动的量化回测系统,特点是灵活且回测速度快,支持tick,秒,分钟,日频及以上的回测,可扩展性较强,本文主要分析postion模块的具体组成和功能作用,作为自我学习和借鉴作用,是一篇学习日志。
postion 是更高级别的下单抽象,该类是主导订单下单-成交的类,并且允许追踪收益和PNL。

1.继承关系

下图是模块之间的继承关系:
在这里插入图片描述

1.1 PositionState类:

1.1.1 成员:

1.2.1 方法:

 1.def onEnter(self, position):抽象类需要填充

 2.def canSubmitOrder(self, position, order):抽象类需要填充

 3.def onOrderEvent(self, position, orderEvent):抽象类需要填充

 4.def isOpen(self, position):抽象类需要填充

 5.def exit(self, position, stopPrice=None, limitPrice=None, goodTillCanceled=None):抽象类需要填充

1.2 OpenState类:

1.2.1成员:

1.2.2 方法:

 1.def onEnter(self, position):
  函数说明
   从position中获取该提交订单的交易日期时间,并设置position自己的交易日期时间
  参数
   position:Position类
  返回
   

 2.def canSubmitOrder(self, position, order):
  函数说明
   退出单判断是否是提交单
  参数
   position:Position类, order:订单类,包括市价,限价,止损单等等。
  返回
   无

 3.def onOrderEvent(self, position, orderEvent):
  函数说明
   订单事件驱动方法;如果订单是部分成交或者完全成交,则将状态切换为OpenState;否则将状态切换成ClosedState,并调用回调函数。
  参数
    position:状态类, orderEvent:订单事件类
  返回
   无

 4.def isOpen(self, position):
  函数说明
   是否是开放的状态
  参数
   position::Position类
  返回
   True

 5.def exit(self, position, stopPrice=None, limitPrice=None, goodTillCanceled=None):
  函数说明
   1.首先清空订单事件类,如果position类中有退出单和并且与订单事件中的ID相同
  参数
   position:Position类, stopPrice:止损价格 ;limitPrice限价价格; goodTillCanceled:是否等待直到取消。
  返回
   无

1.3 ClosedState类:

1.3.1 成员:

1.3.2 方法:

 1.def onEnter(self, position):
  函数说明
   进入的运行状态,状态解注册状态。
  参数
   position:状态类
  返回
   无

 2.def canSubmitOrder(self, position, order):
  函数说明
   不存在的类方法,报错
  参数
   position:状态类, order:订单类
  返回
   无

 3.def onOrderEvent(self, position, orderEvent):
  函数说明
   不存在的类方法,报错
  参数
   position:状态类, order:订单类
  返回
   无

 4.def isOpen(self, position):
  函数说明
   是否是开市状态
  参数
   position::Position类
  返回
   False

 5.def exit(self, position, stopPrice=None, limitPrice=None, goodTillCanceled=None):
  函数说明
   退出操作
  参数
   position状态类, stopPrice:止损价格, limitPrice:限制价格, goodTillCanceled 等待直达成交
  返回
   无

1.3 WaitingEntryState类:

1.3.1 成员:

1.3.2 方法:

 1.def canSubmitOrder(self, position, order):
  函数说明
   测试单子是否可提交订单
  参数
   position:状态类,order:订单类
  返回
   

 2.def onOrderEvent(self, position, orderEvent):
  函数说明
   订单事件驱动方法;如果订单是部分成交或者完全成交,则将状态切换为OpenState;否则将状态切换成ClosedState,并调用回调函数。
  参数
   position:状态类,orderEvent:订单事件类
  返回
   无

 3.def isOpen(self, position):
  函数说明
   是否是开市状态
  参数
   position::Position类
  返回
   True

 4.def exit(self, position, stopPrice=None, limitPrice=None, goodTillCanceled=None):
  函数说明
   状态的进入单设置为取消单
  参数
   position:状态类, stopPrice止损价格, limitPrice:限价价格, goodTillCanceled等待直到取消
  返回
   无

2.类成员

__state:状态成员
__activeOrders:活跃订单成员
__shares:购买股票数成员
__strategy:所属策略成员
__entryOrder:进入订单类成员
__entryDateTime:进入该状态的时间成员
__exitOrder:退出订单类成员
__exitDateTime:退出该状态的时间成员
__posTracker: 状态追踪器类成员
__allOrNone:全部成交或者全部不成交选项成员

3.类方法

 1.def __submitAndRegisterOrder(self, order):
  函数说明
   提交和注册订单方法;首先在状态成员__state中设置订单order为可提交订单,然后在经纪类中提交订单,最后将单子放入__activeOrders的字典中,并在策略中注册订单状态。
  参数
   order: 订单类
  返回
   无

 2.def setEntryDateTime(self, dateTime):
  函数说明
   设置类成员__entryDateTime的数值。
  参数
   dateTime:时间日期类
  返回
   无

 3.def setExitDateTime(self, dateTime):
  函数说明
   设置类成员__exitDateTime的数值。
  参数
   dateTime:时间日期类
  返回
   无

 4.def switchState(self, newState):
  函数说明
   设置类成员__state的值,并运行相应的onEnter函数。
  参数
   newState:position类
  返回
   无

 5.def getStrategy(self):
  函数说明
   返回该状态所属策略__strategy。
  参数
   无
  返回
   __strategy:所属策略

 6.def getLastPrice(self):
  函数说明
   获取最后的订单价格。
  参数
   无
  返回
   ret:最后的订单价格

 7.def getActiveOrders(self):
  函数说明
   返回类成员__activeOrders的列表表达。
  参数
   无
  返回
   __activeOrders的列表表达

 8.def getShares(self):
  函数说明
   返回类成员__shares。
  参数
   无
  返回
   __shares:股票数

 9.def entryActive(self):
  函数说明
   判断进入的订单是否活跃
  参数
   无
  返回
   ret:判断进入的订单是否活跃

 10.def entryFilled(self):
  函数说明
   判断进入的订单是否成交
  参数
   无
  返回
   ret:判断进入的订单是否成交

 11.def exitActive(self):
  函数说明
   判断退出的订单是否活跃
  参数
   无
  返回
   ret:判断退出的订单是否成交

 12.def exitFilled(self):
  函数说明
   判断退出的订单是否成交
  参数
   无
  返回
   ret:判断退出的订单是否成交

 13.def getEntryOrder(self):
  函数说明
   获取类成员__entryOrder(进入订单)
  参数
   无
  返回
   获取类成员__entryOrder(进入订单)

 14.def getExitOrder(self):
  函数说明
   获取类成员__exitOrder(退出订单)
  参数
   无
  返回
   获取类成员__exitOrder(退出订单)

 15.def getInstrument(self):
  函数说明
   返回进入订单的机构号
  参数
   无
  返回
   ret:返回进入订单的机构号

 16.def getReturn(self, includeCommissions=True):
  函数说明
   获取最后的价格,并放入状态追踪器中计算收益。
  参数
   includeCommissions:是否使用交易模型
  返回
   ret:该状态的累计收益

 17.def getPnL(self, includeCommissions=True):
  函数说明
   获取最后的价格,并放入状态追踪器中计算损益。
  参数
   includeCommissions:是否使用交易模型
  返回
   ret:该状态的累计损益

 18.def cancelEntry(self):
  函数说明
   取消进入订单
  参数
   无
  返回
   无

 19.def cancelExit(self):
  函数说明
   取消退出订单
  参数
   无
  返回
   无

 20.def exitMarket(self, goodTillCanceled=None):
  函数说明
   提交市价单并关闭状态。
  参数
   goodTillCanceled:直达成交或取消标志
  返回
   无

 21.def exitLimit(self, limitPrice, goodTillCanceled=None):
  函数说明
   提交限价单并关闭状态。
  参数
    limitPrice:限价价格, goodTillCanceled:直达成交或取消标志
  返回
   无

 22.def exitStop(self, stopPrice, goodTillCanceled=None):
  函数说明
   提交限价单并关闭状态。
  参数
    limitPrice:限价价格, goodTillCanceled:直达成交或取消标志
  返回
   无

 23.def exitStopLimit(self, stopPrice, limitPrice, goodTillCanceled=None):
  函数说明
   提交限价止损单并关闭状态。
  参数
   stopPrice:止损价格, limitPrice:限价价格, goodTillCanceled:直达成交或取消标志
  返回
   无

 24.def _submitExitOrder(self, stopPrice, limitPrice, goodTillCanceled):
  函数说明
   提交退出订单;首先创建退出订单;设置goodTillCanceled和__allOrNone的标志位;然后提交和注册订单,并将__exitorder设置为该订单
  参数
    stopPrice:止损价格, limitPrice:限价价格, goodTillCanceled:直达成交或取消标志
  返回
   无

 25.def onOrderEvent(self, orderEvent):
  函数说明
   更新订单事件的订单;如果订单事件类是活跃的加入类成员__activeOrders中,同时修改self.__share类股票数;最后调用self.__state的onOrderEvent函数。
  参数
   orderEvent:订单事件类
  返回
   

 26.def __updatePosTracker(self, orderEvent):
  函数说明
   更新追踪器的状态;首先判断订单是否是成交或者部分成交,接着讲订单的价格,费率和成交量写进追踪器中。
  参数
   orderEvent:订单事件类
  返回
   无

 27.def buildExitOrder(self, stopPrice, limitPrice):抽象类自定义

 28.def isOpen(self):
  函数说明
   获取类成员__state的状态是否是开盘状态
  参数
   无
  返回
   ret:获取类成员__state的状态是否是开盘状态

 29.def getAge(self):
  函数说明
   获取开盘状态的久期
  参数
   无
  返回
   ret:开盘时间到现在(或者结束时间(该状态已经关闭))的时间。

4.子类情况

4.1 LongPosition类

4.1.1 成员

除父类继承外无

4.1.2 方法

 1.def buildExitOrder(self, stopPrice, limitPrice):
  函数说明
   创建退出订单
  参数
   stopPrice:止损价格, limitPrice:限价价格,
  返回
   ret:order订单类

4.2 ShortPosition类

4.2.1 成员

除父类继承外无

4.2.2 方法

 1.def buildExitOrder(self, stopPrice, limitPrice):
  函数说明
   创建退出订单
  参数
   stopPrice:止损价格, limitPrice:限价价格,
  返回
   ret:order订单类

4.结束语

Position类是订单类的更加高级的封装,在整个回测系统中占用显著地位。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值