コード例 #1
0
    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")
コード例 #2
0
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")