def dump(self): if self.data: path = os.path.join(conf.get("SYS_HOME",""),conf.get("REPORTER_DATA_PATH",REPORTER_DATA_PATH),self.date+SUFFIX) Dumper.dump(path = path , data = report.data) logging.info("Reporter result : %s" % str(report)) else: logging.warning("Reporter run fail.")
def collect(self,strategic = None ,statisticsProjectPath = None): """ 对于整体数据,缓存之前计算。对于指定策略,暂时只收集15日内数据,反映短期内变动情况。 收集统计数据 >> statistics.stock == testCase['stock'] >> statistics.collect() 收集指定策略统计数据 >> statistics.stock == testCase['stock'] >> statistics.collect(strategic = testCase['collectStrategic']) @param {list} strategic 符合策略的code list """ conf={} conf.update(self.conf) isCache = False data={} if strategic: #计算指定策略统计 allCode = strategic #符合指定策略的 code 可通过strategic[date][strategicName]读出 allDate = [] for i in range(0,conf.get("MIN_DATA_NUM",MIN_DATA_NUM)): date=Date.getDate(0-i,conf.get('date',Date.getDate())) allDate.append(date) else: #计算整体统计 isCache = True allDate = self.stock.allDate allCode = self.stock.allCode if isCache: #读取之前统计缓存 data = Reader.read(path = self.getDataPath(dataType = "cache")) for date in allDate: if date in data and date in allDate: allDate.remove(date) conf.update({ "date":self.date, "stock":self.stock, "allCode":allCode }) expression=Expression(conf) statisticsProjectPath = statisticsProjectPath or os.path.join(conf.get("SYS_HOME"),conf.get("STATISTICS_PROJECT_PATH")) expressions = expression.load(path = statisticsProjectPath) for date in allDate: result={} #初始化result变量,让result能在公式里直接使用,并且result[name]也能使用 for code in allCode: result[code]={} expression.execute(expression= conf.get("expressions",expressions), context = {"result":result,"date":date}) if not result: break; data[date]=result if isCache: Dumper.dump(path = self.getDataPath(dataType = "cache"),data =data) return data
def dump(self): """ 保存所有日期的统计结果,不保存各策略短期结果。 """ dataPath = self.getDataPath() Dumper.dump(path = dataPath , data =self.data)
def dump(self,data,path = None): if not path: path = os.path.join(self.conf.get("SYS_HOME"),self.conf.get("STRATEGIC_DATA_PATH",STRATEGIC_DATA_PATH),self.date+SUFFIX) Dumper.dump(path = path,data = data) return True