Я пытаюсь запустить профилировщик событий pyalgotrade. Я с помощью пользовательских данных, он работает, когда я запускаю его с stratergy по умолчанию/предиката «BuyOnGap» однако, когда я пытаюсь запустить его с помощью простого пользовательского стратегии это бросить ошибку:NotImplementedError() Что это значит, event profiler pyalgotrade
Traceback (most recent call last):
File "C:\Users\David\Desktop\Python\Coursera\Computational Finance\Week2\PyAlgoTrade\Bitfinex\FCT\FCT_single_event_test.py", line 43, in <module>
main(True)
File "C:\Users\David\Desktop\Python\Coursera\Computational Finance\Week2\PyAlgoTrade\Bitfinex\FCT\FCT_single_event_test.py", line 35, in main
eventProfiler.run(feed, True)
File "C:\Python27\lib\site-packages\pyalgotrade\eventprofiler.py", line 215, in run
disp.run()
File "C:\Python27\lib\site-packages\pyalgotrade\dispatcher.py", line 102, in run
eof, eventsDispatched = self.__dispatch()
File "C:\Python27\lib\site-packages\pyalgotrade\dispatcher.py", line 90, in __dispatch
if self.__dispatchSubject(subject, smallestDateTime):
File "C:\Python27\lib\site-packages\pyalgotrade\dispatcher.py", line 68, in __dispatchSubject
ret = subject.dispatch() is True
File "C:\Python27\lib\site-packages\pyalgotrade\feed\__init__.py", line 105, in dispatch
self.__event.emit(dateTime, values)
File "C:\Python27\lib\site-packages\pyalgotrade\observer.py", line 59, in emit
handler(*args, **kwargs)
File "C:\Python27\lib\site-packages\pyalgotrade\eventprofiler.py", line 172, in __onBars
eventOccurred = self.__predicate.eventOccurred(instrument, self.__feed[instrument])
File "C:\Python27\lib\site-packages\pyalgotrade\eventprofiler.py", line 89, in eventOccurred
raise NotImplementedError()
NotImplementedError
Мой код:
from pyalgotrade import eventprofiler
from pyalgotrade.technical import stats
from pyalgotrade.technical import roc
from pyalgotrade.technical import ma
from pyalgotrade.barfeed import csvfeed
class single_event_strat(eventprofiler.Predicate):
def __init__(self,feed):
self.__returns = {} # CLASS ATTR
for inst in feed.getRegisteredInstruments():
priceDS = feed[inst].getAdjCloseDataSeries() # STORE: priceDS (a temporary representation)
self.__returns[inst] = roc.RateOfChange(priceDS, 1)
# CALC: ATTR <- Returns over the adjusted close values, consumed priceDS
#(could be expressed as self.__returns[inst] = roc.RateOfChange((feed[inst].getAdjCloseDataSeries()), 1),
#but would be less readable
def eventOccoured(self, instrument, aBarDS):
if (aBarDS[-1].getVolume() > 10 and aBarDS[-1].getClose() > 5):
return True
else:
return False
def main(plot):
feed = csvfeed.GenericBarFeed(0)
feed.addBarsFromCSV('FCT', "FCT_daily_converted.csv")
predicate = single_event_strat(feed)
eventProfiler = eventprofiler.Profiler(predicate, 5, 5)
eventProfiler.run(feed, True)
results = eventProfiler.getResults()
print "%d events found" % (results.getEventCount())
if plot:
eventprofiler.plot(results)
if __name__ == "__main__":
main(True)
Что означает эта ошибка?
Кто-нибудь знает, что случилось, и как это исправить?
Вот ссылка на код eventprofiler:
В качестве бонуса Кто-нибудь знает, где я могу найти примеры профилировщика используются? другой, что пример pyalgotrade дает, seen here
'NotImplementedError' предназначен для суперкласса, чтобы определить методы, которые подклассы должны определять сами. Таким образом, он возникает, когда подкласс наследует метод автоматически, но не предоставляет для него инструкций. Я не знаком с библиотеками, которые вы используете, поэтому я не уверен, что это то, что вы должны были сделать (вы не подклассифицировали их материал должным образом), или они должны были сделать (это не должно быть на их устойчивой ветви). –