以字典形式返回分级A数据 :param fields:利率范围,形如['+3.0%', '6.0%'] :param min_volume:最小交易量,单位万元 :param min_discount:最小折价率, 单位% :param ignore_nodown:是否忽略无下折品种,默认 False :param forever: 是否选择永续品种,默认 False
(self, fields=[], min_volume=0, min_discount=0, ignore_nodown=False, forever=False)
| 129 | return float(per.strip('%')) / 100. |
| 130 | |
| 131 | def funda(self, fields=[], min_volume=0, min_discount=0, ignore_nodown=False, forever=False): |
| 132 | """以字典形式返回分级A数据 |
| 133 | :param fields:利率范围,形如['+3.0%', '6.0%'] |
| 134 | :param min_volume:最小交易量,单位万元 |
| 135 | :param min_discount:最小折价率, 单位% |
| 136 | :param ignore_nodown:是否忽略无下折品种,默认 False |
| 137 | :param forever: 是否选择永续品种,默认 False |
| 138 | """ |
| 139 | # 添加当前的ctime |
| 140 | self.__funda_url = self.__funda_url.format(ctime=int(time.time())) |
| 141 | # 请求数据 |
| 142 | rep = requests.get(self.__funda_url) |
| 143 | # 获取返回的json字符串 |
| 144 | fundajson = json.loads(rep.text) |
| 145 | # 格式化返回的json字符串 |
| 146 | data = self.formatfundajson(fundajson) |
| 147 | # 过滤小于指定交易量的数据 |
| 148 | if min_volume: |
| 149 | data = {k: data[k] for k in data if float(data[k]['funda_volume']) > min_volume} |
| 150 | if len(fields): |
| 151 | data = {k: data[k] for k in data if data[k]['coupon_descr_s'] in ''.join(fields)} |
| 152 | if ignore_nodown: |
| 153 | data = {k: data[k] for k in data if data[k]['fund_descr'].find('无下折') == -1} |
| 154 | if forever: |
| 155 | data = {k: data[k] for k in data if data[k]['funda_left_year'].find('永续') != -1} |
| 156 | if min_discount: |
| 157 | data = {k: data[k] for k in data if float(data[k]['funda_discount_rt'][:-1]) > min_discount} |
| 158 | |
| 159 | self.__funda = data |
| 160 | return self.__funda |
| 161 | |
| 162 | def fundm(self): |
| 163 | """以字典形式返回分级母基数据 |
nothing calls this directly
no test coverage detected