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