2016-05-25 8 views
1

Я пытаюсь запустить профилировщик событий 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:

http://pastebin.com/QD220VQb

В качестве бонуса Кто-нибудь знает, где я могу найти примеры профилировщика используются? другой, что пример pyalgotrade дает, seen here

+2

'NotImplementedError' предназначен для суперкласса, чтобы определить методы, которые подклассы должны определять сами. Таким образом, он возникает, когда подкласс наследует метод автоматически, но не предоставляет для него инструкций. Я не знаком с библиотеками, которые вы используете, поэтому я не уверен, что это то, что вы должны были сделать (вы не подклассифицировали их материал должным образом), или они должны были сделать (это не должно быть на их устойчивой ветви). –

ответ

4

Я думаю, что вы только что сделали орфографическую ошибку в определении метода eventOccurred

def eventOccoured(self, instrument, aBarDS): 

следует заменить

def eventOccurred(self, instrument, aBarDS): 
+1

Бог dammit дислексия. Спасибо многому мужу, Иисус провел дни, пытаясь понять это –