def calculateStats( self, p_market_list, p_exchange, p_interval ): market_stats = [] #pd.DataFrame() error_list = [] market_count = 0 total_markets = len(p_market_list) print("Market count: "+str(total_markets)) for market_name in p_market_list: market_count += 1 mkt = Market(market_name, p_exchange, p_interval) try: print(str(market_count)+" of "+str(total_markets)+" "+mkt.getMarketName() +", " + mkt.getInterval() +" on " + mkt.getExchange()) mkt_data = mkt.readMarketDataCSV() # self.readMarketDataCSV() except IOError: # print("ERROR: Portfolio::calculateStats " + ) self.printException(inspect.currentframe().f_lineno, market_name + " does not exist. "+str(sys.exc_info()[0])) error_list = ["NO FILE: "+market_name] + error_list print(); print(); print() except: self.printException(inspect.currentframe().f_lineno,"ERROR: unknown - "+str(sys.exc_info()[0])) # print(sys.exc_info()[0]) error_list = ["ERROR: "+market_name] + error_list print(); print(); print() else: mstats = MarketStats() mstats.calculateStats( market_name, mkt_data ) market_stats.append(mstats.toDict()) # print(mstats.toDataFrame()) #convert to dataframe return pd.DataFrame.from_records(market_stats, index="market_name")
class MarketStrategy(object): ''' classdocs ''' def __init__(self, p_market, p_strategy, p_start_date, p_end_date): ''' Constructor ''' self.market = Market(p_market) self.result = pd.DataFrame self.start_date = p_start_date self.end_date = p_end_date # dynamically create the strategy name # https://stackoverflow.com/questions/4821104/python-dynamic-instantiation-from-string-name-of-a-class-in-dynamically-imported module = __import__(p_strategy) class_ = getattr(module, p_strategy) self.strategy = class_(p_start_date, p_end_date) def getMarket(self): ''' Getter ''' return self.market def getStrategy(self): ''' Getter ''' return self.strategy def getResult(self): ''' Getter ''' return self.result def getMarketName(self): ''' Getter ''' return self.market.getMarketName() def toPrint(self): ''' Printer ''' return "Market: " + self.market.getMarketName( ) + ", Strategy: " + self.strategy.strategy_name + ", Start: " + self.start_date.strftime( "%B %d, %Y") + " End: " + self.end_date.strftime("%B %d, %Y")