pyalgotrade的学习之BacktestingStrategy模块

2 篇文章 0 订阅
1 篇文章 0 订阅

pyalgotrade的学习之BacktestingStrategy模块

0.前言

1.类的继承关系

类的继承关系如下所示,BaseStrategy是BacktestingStrategy父类。
在这里插入图片描述

2.类的成员

该类的成员如下所示:
__barFeed: barfeed类,提供回测数据。
__broker: backtesting.broker类,经纪类,提供订单撮合功能。
__activePositions:状态类的集合,set
__orderToPosition:订单状态字典
__barsProcessedEvent
__analyzers:
__namedAnalyzers:
__resampledBarFeeds
__dispatcher: dispatcher.Dispatcher调度器类,主要提供策略运行过程中的功能调度。
__useAdjustedValues: 是否使用用复权调整的价格,布尔类。
__logger: 日志类,提供日志功能

3.类的方法

该类的方法如下所示:
 1.def _setBroker(self, broker):
  函数说明
   设置经纪类
  输入
   broker:backtesting.broker类
  输出
   无

 2.def setUseEventDateTimeInLogs(self, useEventDateTime):
  函数说明
   日志中设置是否使用事件日期。
  输入
   useEventDateTime:布尔类,代表是否使用事件日期
  输出
   无

 3.def getLogger(self):
  函数说明
   返回成员__logger
  输入
   无
  输出
   成员__logger

 4.def getActivePositions(self):
  函数说明
   返回成员__activePositions,获得有效状态类。
  输入
   无
  输出
   成员__activePositions

 5.def getOrderToPosition(self):
  函数说明
   返回成员__orderToPosition ,获得订单有效状态类。
  输入
   无
  输出
   成员__orderToPosition

 6.def getDispatcher(self):
  函数说明
   返回成员__dispatcher,获得类的调度器。
  输入
   无
  输出
   成员__dispatcher

 7.def getResult(self):
  函数说明
   返回策略总的价值(包括现金和证券)
  输入
   无
  输出
   策略总的价值(包括现金和证券),浮点数

 8.def getBarsProcessedEvent(self):
  函数说明
   返回成员__barsProcessedEvent类,即bar处理事件类
  输入
   无
  输出
   返回成员__barsProcessedEvent类

 9.def getUseAdjustedValues(self):
  函数说明
   返回False;需要扩展
  输入
   无
  输出
   False,布尔值

 10.def registerPositionOrder(self, position, order):
  函数说明
   注册订单和状态,首先将状态加入集合__activePositions中;__orderToPosition中的关键字为order.id的值设置为position。
  输入
   position:状态类, order:订单类
  输出
   无

 11.def unregisterPositionOrder(self, position, order):
  函数说明
   注销订单和状态,从成员__orderToPosition中删除关键字为order.id的值。
  输入
   position:状态类, order:订单类
  输出
   无

 12.def unregisterPosition(self, position):
  函数说明
   注销状态,首先将状态position从集合__activePositions中移除。
  输入
   position:状态类
  输出
   无

 13.def __notifyAnalyzers(self, lambdaExpression):
  函数说明
   注册订单和状态,首先将状态加入集合__activePositions中;__orderToPosition中的关键字为order.id的值设置为position。
  输入
   position:状态类, order:订单类
  输出
   无

 14.def attachAnalyzerEx(self, strategyAnalyzer, name=None):
  函数说明
   获取新的策略分析类,先判断策略分析strategyAnalyzer是否在
  输入
   strategyAnalyzer:策略分析类, name:名字
  输出
   无

 15.def getLastPrice(self, instrument):
  函数说明
   获取该交易日的交易价格(原代码是收盘价,现要改成开盘价)
  输入
   instrument:证券号
  输出
   ret:获取该交易日的交易价格(原代码是收盘价,现要改成开盘价)

 16.def getFeed(self):
  函数说明
   获取成員类__barFeed的数据
  输入
   无
  输出
   ret:__barFeed的数据,数据种子类

 17.def getBroker(self):
  函数说明
   获取经纪类__broker的数据
  输入
   无
  输出
   ret:经纪类成员__broker

 18.def getCurrentDateTime(self):
  函数说明
   从成员类__barFeed中获取现在时间
  输入
    无
  输出
   ret:获取现在时间

 19.def marketOrder(self, instrument, quantity, onClose=False, goodTillCanceled=False, allOrNone=False):
  函数说明
   返回一张市价单的类
  输入
   instrument:证券号, quantity:数量, onClose:以收盘价成交, goodTillCanceled:直到指令来了才成交, allOrNone:是否一次性成交
  输出
   ret:ret:pyalgotrade.broker.MarketOrder市价单类

 20.def limitOrder(self, instrument, limitPrice, quantity, goodTillCanceled=False, allOrNone=False):
  函数说明
   返回一张限价单的类
  输入
    instrument:证券号, quantity:数量, limitPrice:限价价格, goodTillCanceled:直到指令来了才成交, allOrNone:是否一次性成交
  输出
   ret:ret:pyalgotrade.broker.limitOrder限价单类

 21.def stopOrder(self, instrument, stopPrice, quantity, goodTillCanceled=False, allOrNone=False):
  函数说明
   返回一张止损单的类
  输入
    instrument:证券号, quantity:数量, stopPrice:止损价格, goodTillCanceled:直到指令来了才成交, allOrNone:是否一次性成交
  输出
   ret:pyalgotrade.broker.stopOrder止损单类

 22.def stopLimitOrder(self, instrument, stopPrice, limitPrice, quantity, goodTillCanceled=False, allOrNone=False):
  函数说明
   返回一张限价止损单的类
  输入
    instrument:证券号, quantity:数量, stopPrice:止损价格, limitPrice:限价价格,goodTillCanceled:直到指令来了才成交, allOrNone:是否一次性成交
  输出
   ret:pyalgotrade.broker.stopLimitOrder止损单类

 23.def enterLong(self, instrument, quantity, goodTillCanceled=False, allOrNone=False):
  函数说明
   返回一张市价做多的类(通过输入不同的参数完成)
  输入
    instrument:证券号, quantity:数量,goodTillCanceled:直到指令来了才成交, allOrNone:是否一次性成交
  输出
   ret:pyalgotrade.strategy.position.Position做多类

 24.def enterShort(self, instrument, quantity, goodTillCanceled=False, allOrNone=False):
  函数说明
   返回一张市价做空的类(通过输入不同的参数完成)
  输入
    instrument:证券号, quantity:数量,goodTillCanceled:直到指令来了才成交, allOrNone:是否一次性成交
  输出
   ret:pyalgotrade.strategy.position.Position做空类

 25.def enterLongLimit(self, instrument, limitPrice, quantity, goodTillCanceled=False, allOrNone=False):
  函数说明
   返回一张限价做多的类(通过输入不同的参数完成)
  输入
    instrument:证券号, quantity:数量,limitPrice:限价价格,goodTillCanceled:直到指令来了才成交, allOrNone:是否一次性成交
  输出
   ret:pyalgotrade.strategy.position.Position限价做多的类

 26.def enterShortLimit(self, instrument, limitPrice, quantity, goodTillCanceled=False, allOrNone=False):
  函数说明
   返回一张限价做空的类(通过输入不同的参数完成)
  输入
    instrument:证券号, quantity:数量,limitPrice:限价价格,goodTillCanceled:直到指令来了才成交, allOrNone:是否一次性成交
  输出
   ret:pyalgotrade.strategy.position.Position限价做空的类

 25.def enterLongStop(self, instrument, stopPrice, quantity, goodTillCanceled=False, allOrNone=False):
  函数说明
   返回一张止损做多的类
  输入
    instrument:证券号, quantity:数量,stopPrice:止损价格,goodTillCanceled:直到指令来了才成交, allOrNone:是否一次性成交
  输出
   ret:pyalgotrade.strategy.position.Position止损做多的类

 26.def enterShortStop(self, instrument, stopPrice, quantity, goodTillCanceled=False, allOrNone=False):
  函数说明
   返回一张止损做空的类
  输入
    instrument:证券号, quantity:数量,stopPrice:止损价格,goodTillCanceled:直到指令来了才成交, allOrNone:是否一次性成交
  输出
   ret:pyalgotrade.strategy.position.Position止损做空的类

 27.def enterLongStopLimit(self, instrument, stopPrice, limitPrice, quantity, goodTillCanceled=False, allOrNone=False):
  函数说明
   返回一张限价止损做多的类
  输入
    instrument:证券号, quantity:数量,stopPrice:止损价格, limitPrice:限价价格,goodTillCanceled:直到指令来了才成交, allOrNone:是否一次性成交
  输出
   ret:pyalgotrade.strategy.position.Position限价止损做多的类

 28.def enterShortStopLimit(self, instrument, stopPrice, limitPrice, quantity, goodTillCanceled=False, allOrNone=False):
  函数说明
   返回一张限价止损做空的类
  输入
    instrument:证券号, quantity:数量,stopPrice:止损价格, limitPrice:限价价格,goodTillCanceled:直到指令来了才成交, allOrNone:是否一次性成交
  输出
   ret:pyalgotrade.strategy.position.Position限价止损做空的类

 29.def onEnterOk(self, position):
  函数说明
   用户自定义函数,当有订单被成交提交时触发的回调函数
  输入
    position:pyalgotrade.strategy.position.Position做多做空类
  输出
   无

 30.def onEnterCanceled(self, position):
  函数说明
   用户自定义函数,当有订单被取消提交时触发的回调函数
  输入
    position:pyalgotrade.strategy.position.Position做多做空类
  输出
   无

 31.def onExitOk(self, position):
  函数说明
   用户自定义函数,当有订单被提交完成时触发的回调函数
  输入
    position:pyalgotrade.strategy.position.Position做多做空类
  输出
   无

 32.def onExitCanceled(self, position):
  函数说明
   用户自定义函数,当有订单被取消完成时触发的回调函数
  输入
    position:pyalgotrade.strategy.position.Position做多做空类
  输出
   无

 33.def onStart(self):
  函数说明
   用户自定义函数,当有策略开始时触发
  输入
    无
  输出
   无

 34.def onFinish(self, bars):
  函数说明
   用户自定义函数,当有策略结束时触发
  输入
    bars:数据bar
  输出
   无

 35.def onIdle(self):
  函数说明
   用户自定义函数,当有没有事件时触发
  输入
    无
  输出
   无

 36.def onBar(self):抽象类

 37.def onOrderUpdated(self, order):
  函数说明
   用户自定义函数,当有订单更新时触发
  输入
    order:订单类
  输出
   无

 38.def __onIdle(self):
  函数说明
   强制检查采样,防止依赖底层资产
  输入
    无
  输出
   无

 39.def onOrderEvent(self, broker, orderEvent):
  函数说明
   从orderEvent类中获取订单号,并且调用函数(自定义)通知函数被调用了,接着找到该订单的多空类,并且调用多空类的onOrderEvent。
  输入
    broker
:经纪类, orderEvent:订单事件类
  输出
   无

 40.def __onBars(self, dateTime, bars):
  函数说明
   每一bar的私有操作,首先通知分析器,送入分析器中各个onbar执行前的操作;执行onbar,然后通知bar被处理了。
  输入
    dateTime:交易时间, bars:该交易日的数据类
  输出
   无

 41.def run(self):
  函数说明
   策略开始运行,首先运行调度器;检查barFeed是否为空否则报错
  输入
    无
  输出
   无

 42.def stop(self):
  函数说明
   调度器停止
  输入
    无
  输出
   无

 43.def attachAnalyzer(self, strategyAnalyzer):
  函数说明
   调用attachAnalyzerEx函数增加分析类
  输入
    strategyAnalyzer:策略分析器
  输出
   无

 44.def getNamedAnalyzer(self, name):
  函数说明
   调用名字叫name的分析器
  输入
    name:分析器名字
  输出
   strategyAnalyzer:策略分析器

 45.def debug(self, msg):
  函数说明
   日志中打印一条debug信息
  输入
    smsg:信息,字符串
  输出
   无

 46.def info(self, msg):
  函数说明
   日志中打印一条info信息
  输入
    msg:信息,字符串
  输出
   无

 47.def warning(self, msg):
  函数说明
   日志中打印一条warning信息
  输入
    msg:信息,字符串
  输出
   无

 48.def error(self, msg):
  函数说明
   日志中打印一条error信息
  输入
    msg:信息,字符串
  输出
   无

 49.def critical(self, msg):
  函数说明
   日志中打印一条critical信息,关键警告
  输入
    msg:信息,字符串
  输出
   无

 50.def resampleBarFeed(self, frequency, callback):
  函数说明
   重采样生成新的类,在调度器中增加任务,并且 在事件成员中订阅回调函数。
  输入
    frequency频率, callback回调函数
  输出
   ret:重采样生成新的类

 51.def getUseAdjustedValues(self):
  函数说明
   获取类成员__UseAdjustedValues
  输入
    无
  输出
   类成员__UseAdjustedValues

 52.def setUseAdjustedValues(self, useAdjusted):
  函数说明
   设置类成员__UseAdjustedValues
  输入
    useAdjusted是否使用复权价格
  输出
   无

 53.def setDebugMode(self, debugOn):
  函数说明
   设置日志为debug模式
  输入
    debugOn 模式开关
  输出
   ret:无

4.结束语

基础策略模块的主要任务是调度各种资源进行回测交易,是个中枢调度类,下一章学习各种订单类。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值