pyalgotrade的学习之BacktestingStrategy模块

mac2026-03-16  3

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.结束语

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

最新回复(0)