| | |
| | | |
| | | self.__kplDataManager.save_data(type_, result_list) |
| | | elif type_ == KPLDataType.LIMIT_UP.value: |
| | | result_list = kpl_util.parseDaBanData(data["data"], kpl_util.DABAN_TYPE_LIMIT_UP) |
| | | result_list = kpl_util.parseLimitUpData(data["data"]) |
| | | self.__data_process_thread_pool.submit(lambda: do_limit_up(result_list)) |
| | | # 记录涨停日志 |
| | | logger_kpl_limit_up.info(result_list) |
| | |
| | | import requests |
| | | |
| | | import constant |
| | | from third_data import kpl_util |
| | | from utils import middle_api_protocol |
| | | |
| | | # 竞价 |
| | |
| | | |
| | | |
| | | def daBanList(pidType, page_size=50, index=0): |
| | | data = f"Order=1&a=DaBanList&st={page_size}&c=HomeDingPan&PhoneOSNew=1&DeviceID=a38adabd-99ef-3116-8bb9-6d893c846e23" \ |
| | | data = f"Order=1&a=DaBanList&st={page_size}&c=HomeDingPan&PhoneOSNew=1&DeviceID=a38adabd-99ef-3116-8bb9-6d893c846e24" \ |
| | | f"&VerSion=5.8.0.2&Index={index}&Is_st=1&PidType={pidType}&apiv=w32&Type=4&FilterMotherboard=0&Filter=0&FilterTIB=0" \ |
| | | "&FilterGem=0" |
| | | result = __base_request("https://apphq.longhuvip.com/w1/api/index.php", data=data) |
| | | return result |
| | | |
| | | |
| | | def __getLimitUpInfo(pidType, page, pageSize): |
| | | data = f"Order=0&a=DailyLimitPerformance&st={pageSize}&apiv=w35&Type=4&c=HomeDingPan&PhoneOSNew=1&DeviceID=a38adabd-99ef-3116-8bb9-6d893c846e23&VerSion=5.13.0.0&Index={(page - 1) * pageSize}&PidType={pidType}&" |
| | | result = __base_request("https://apphq.longhuvip.com/w1/api/index.php", data=data) |
| | | return result |
| | | |
| | | |
| | | def getLimitUpInfoNew(): |
| | | pids = [(1, "首板"), (2, "2连板"), (3, "3连板"), (4, "4连板"), (5, "")] |
| | | fresults = [] |
| | | for pid_info in pids: |
| | | results = [] |
| | | for i in range(10): |
| | | result = __getLimitUpInfo(pid_info[0], i + 1, 20) |
| | | result = json.loads(result) |
| | | datas = result["info"][0] |
| | | results.extend(datas) |
| | | day = result["info"][1] |
| | | print(datas) |
| | | if len(datas) < 20: |
| | | break |
| | | for r in results: |
| | | if not r[18] and pid_info[1]: |
| | | r[18] = pid_info[1] |
| | | fresults.extend(results) |
| | | |
| | | return json.dumps({"errcode": 0, "list": fresults}) |
| | | |
| | | |
| | | def getLimitUpInfo(): |
| | | list_ = [] |
| | | page_size = 50 |
| | | page_size = 20 |
| | | MAX_SIZE = 150 |
| | | for i in range(0, 10): |
| | | result_str = daBanList(DABAN_TYPE_LIMIT_UP, page_size=page_size, index=len(list_)) |
| | |
| | | |
| | | |
| | | if __name__ == "__main__": |
| | | results = getHistoryLimitUpInfo("2023-12-26") |
| | | results = kpl_util.parseLimitUpData(getLimitUpInfoNew()) |
| | | print(results) |
| | | |
| | |
| | | while True: |
| | | if tool.is_trade_time(): |
| | | try: |
| | | results = kpl_api.getLimitUpInfo() |
| | | results = kpl_api.getLimitUpInfoNew() |
| | | result = json.loads(results) |
| | | start_time = time.time() |
| | | __upload_data("limit_up", result) |
| | |
| | | if type == DABAN_TYPE_BIDDING: |
| | | return data[0], data[1], data[18], data[11], data[22], data[15] |
| | | elif type == DABAN_TYPE_LIMIT_UP: |
| | | # (代码, 名称, 首次涨停时间, 最近涨停时间, 几板, 涨停原因, 板块, 实际流通, 主力净额, 涨停原因代码, 涨停原因代码数量) |
| | | return data[0], data[1], data[6], data[25], data[9], data[16], data[11], data[15], data[12], data[26], data[27] |
| | | elif type == DABAN_TYPE_OPEN_LIMIT_UP: |
| | | return data[0], data[1], data[4], data[11], data[15] |
| | |
| | | return data[0], data[1], data[11], data[15] |
| | | elif type == DABAN_TYPE_EVER_LIMIT_DOWN: |
| | | return data[0], data[1], data[4], data[11], data[15] |
| | | |
| | | return None |
| | | |
| | | |
| | | def __parseLimitUpItemData(data): |
| | | # (代码, 名称, 首次涨停时间, 最近涨停时间, 几板, 涨停原因, 板块, 实际流通, 主力净额, 涨停原因代码, 涨停原因代码数量) |
| | | return data[0], data[1], data[4], data[4], data[18], data[5], data[12], data[13], data[8], data[19], data[20] |
| | | |
| | | |
| | | # 最强风口 |
| | |
| | | return fresult_ |
| | | |
| | | |
| | | def parseLimitUpData(data): |
| | | if type(data) == str: |
| | | data = json.loads(data) |
| | | if int(data["errcode"]) != 0: |
| | | raise Exception(f"解析数据出错,errcode:{data['errcode']}") |
| | | list_ = data["list"] |
| | | fresult_ = [] |
| | | for d in list_: |
| | | pdata = __parseLimitUpItemData(d) |
| | | if pdata: |
| | | fresult_.append(pdata) |
| | | return fresult_ |
| | | |
| | | |
| | | def parseFengKou(data): |
| | | if type(data) == str: |
| | | data = json.loads(data) |
| | |
| | | # 9:25-9:30之间获取 |
| | | if int("092500") < int(tool.get_now_time_str().replace(":", "")) < int("092955"): |
| | | try: |
| | | limit_up_data_str = kpl_api.getLimitUpInfo() |
| | | limit_up_data_str = kpl_api.getLimitUpInfoNew() |
| | | limit_up_datas = json.loads(limit_up_data_str) |
| | | limit_up_datas = limit_up_datas["list"] |
| | | for d in limit_up_datas: |