类的继承关系如下所示,BaseStrategy是BacktestingStrategy父类。
该类的成员如下所示:
__barFeed: barfeed类,提供回测数据。
__broker: backtesting.broker类,经纪类,提供订单撮合功能。
__activePositions:状态类的集合,set
__orderToPosition:订单状态字典
__barsProcessedEvent
__analyzers:
__namedAnalyzers:
__resampledBarFeeds
__dispatcher: dispatcher.Dispatcher调度器类,主要提供策略运行过程中的功能调度。
__useAdjustedValues: 是否使用用复权调整的价格,布尔类。
__logger: 日志类,提供日志功能
该类的方法如下所示:
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:无
基础策略模块的主要任务是调度各种资源进行回测交易,是个中枢调度类,下一章学习各种订单类。