| | |
| | | import time |
| | | from urllib.parse import parse_qs, urlparse |
| | | |
| | | from convertible_bonds.main import JueJinUtil |
| | | from juejin_core import JueJinApi |
| | | from kpl import kpl_util, kpl_api |
| | | from kpl.kpl_data_manager import KPLLimitUpDataManager |
| | |
| | | |
| | | elif url.startswith("/get_kpl_market_feelings"): |
| | | return cls.__get_kpl_market_feelings() |
| | | elif url.startswith("/get_cb_list"): |
| | | # 获取可转债的列表 |
| | | return cls.get_cb_list() |
| | | |
| | | return None, False |
| | | |
| | |
| | | return json.dumps( |
| | | {"code": 0, "data": fdata}), True |
| | | |
| | | __cb_codes_list = None # 所有可转债数据 |
| | | __pre_price_dict = {} # 昨日收盘价 |
| | | |
| | | # 获取可转债的列表 |
| | | @classmethod |
| | | def get_cb_list(cls): |
| | | # 获取所有可转债列表 |
| | | if not cls.__cb_codes_list: |
| | | cls.__cb_codes_list = JueJinUtil.get_all_convertible_bonds_codes() |
| | | # 获取昨日收盘价 |
| | | symbols = [x[0][0] for x in cls.__cb_codes_list] |
| | | symbols.extend([x[1] for x in cls.__cb_codes_list]) |
| | | # 获取现价 |
| | | results = JueJinApi.get_gp_latest_info(symbols, fields='symbol,pre_close') |
| | | cls.__pre_price_dict = {x['symbol']: x['pre_close'] for x in results} |
| | | |
| | | # 获取涨停列表 |
| | | records = KPLLimitUpDataManager().get_limit_up_history_datas() |
| | | currents = KPLLimitUpDataManager().get_limit_up_current_datas() |
| | | current_codes = [d[0] for d in currents] |
| | | record_codes = [d[0] for d in records] |
| | | record_map = {} |
| | | for r in records: |
| | | record_map[r[0]] = r |
| | | # 格式[([转债代码,转债名称, (现价,涨幅)],[正股代码,正股名称,(现价,涨幅)],正股涨停时间,是否炸板)] |
| | | datas = [] |
| | | for b in cls.__cb_codes_list: |
| | | code = b[1].split(".")[1] |
| | | if code in record_codes: |
| | | if record_map[code][4] != '首板': |
| | | continue |
| | | datas.append( |
| | | [[b[0][0], b[0][1], None], [b[1], record_map[code][1], None], tool.time_format(record_map[code][2]), |
| | | code not in current_codes]) |
| | | # 获取所有的涨幅 |
| | | symbols = [] |
| | | for d in datas: |
| | | symbols.append(d[0][0]) |
| | | symbols.append(d[1][0]) |
| | | # 获取当前 |
| | | current_infos = JueJinApi.get_gp_current_info(symbols, fields='symbol,price') |
| | | rate_dict = {x['symbol']: (x['price'], round( |
| | | (x['price'] - cls.__pre_price_dict[x['symbol']]) * 100 / cls.__pre_price_dict[x['symbol']], 2)) for x in |
| | | current_infos} |
| | | for d in datas: |
| | | d[0][2] = rate_dict[d[0][0]] |
| | | d[1][2] = rate_dict[d[1][0]] |
| | | d[0][0] = d[0][0].split('.')[1] |
| | | d[1][0] = d[1][0].split('.')[1] |
| | | datas.sort(key=lambda x: int(x[2].replace(":","")), reverse=True) |
| | | |
| | | # 获取今日正股涨停的可转债列表 |
| | | return json.dumps( |
| | | {"code": 0, "data": datas}), True |
| | | |
| | | |
| | | if __name__ == "__main__": |
| | | codes = ["002523", "603095"] |
| | | datas = LocalKanPanNetworkDelegate.get_kpl_market_feelings(codes) |
| | | |
| | | datas = LocalKanPanNetworkDelegate.get_cb_list() |
| | | print(datas) |