1. 程式人生 > 其它 >pyalgotrade原始碼分析3--PyAlgoTrade技術指標

pyalgotrade原始碼分析3--PyAlgoTrade技術指標

前面對PyAlgoTrade的流程進行梳理,今天讓我們一起看看技術指標的計算的過程。
PyAlgoTrade總技術指標的計算過程大致如下:
其父類為dataseries.SequenceDataSeries當初始化時

def __init__(self, dataSeries, eventWindow, maxLen=None):

super(EventBasedFilter, self).__init__(maxLen)
self.__dataSeries = dataSeries
self.__dataSeries.getNewValueEvent().subscribe(self.__onNewValue)
self.__eventWindow = eventWindow


前面說過的,PyAlgoTrade是基於事件驅動的回測框架,技術指標的計算就是就是基於事件驅動的,並不是剛開始的時候就進行計算,而是在需要的時候再進行計算。
在這裡getNewValueEvent()得到的event為事件分發器
subscribe()將監聽器註冊到事件分發器中
self.__onNewValue 承擔監聽器的角色,只不過在這裡直接註冊了具體的方法,沒有註冊監聽器當事件分發器分發事件時,直接執行該方法。
還記得在分析流程的過程中提到過的self.getNextValuesAndUpdateDS()方法,當getNextValues時觸發事件,呼叫__onNewValue進行技術指標的計算。
通過上述程式碼以及事件驅動模型的理解,我們可以自行定義新的指標,只需要定義__onNewValue方法,並將該方法註冊到事件分發器中,就可以完成新指標的計算。
在本專案中technical檔案中的計算均基於該中模型進行開發,在後續過程中,個人可以根據自己的具體需求進行相應的技術指標開發。