def JsonDataToFinance(data): financeData = None for i in range(1, 5): if i == 1: finance = data['finance1'] announcement = data['announcement1'] elif i == 2: finance = data['finance2'] announcement = data['announcement2'] elif i == 3: finance = data['finance3'] announcement = data['announcement3'] elif i == 4: finance = data['finance4'] announcement = data['announcement4'] if not finance or not announcement or not JSComplierHelper.IsNumber( announcement['year']) or not JSComplierHelper.IsNumber( announcement['quarter']): continue date = data['date'] if financeData: # 如果存在1天公布多个报告期数据 只取最新的一个公告期数据 if financeData.Announcement['year'] < announcement['year']: financeData = FinanceData(date, finance=finance, announcement=announcement) else: financeData = FinanceData(date, finance=finance, announcement=announcement) return financeData
def CalculateDividendYield(self, cashData, marketValue): if not marketValue: return [] dataLen, cashLen = len(self.Data), len(cashData) dividendYield = [] j = 0 for i in range(dataLen): day = self.Data.Data[i] market = marketValue.MarketValue[i] if not day or not market: continue item = SingleData() item.Date = day.Date item.Value = 0 if (j + 1 < cashLen): if (cashData[j].Date < day.Date and cashData[j + 1].Date <= day.Date): j += 1 i -= 1 if (j < cashLen): cash = cashData[j] endDate = cash.Date + 10000 # 1年有效 if (day.Date >= cash.Date and day.Date <= endDate and JSComplierHelper.IsDivideNumber(market.Value) and JSComplierHelper.IsNumber(cash.Value)): item.Value = cash.Value / market.Value * 100 dividendYield.append(item) return dividendYield