From 96dc1a4cc38b588f39387b5a85b9677100e357f1 Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期四, 23 三月 2023 23:55:40 +0800 Subject: [PATCH] 首板买入打分机制 --- third_data/hot_block_data_process.py | 108 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 106 insertions(+), 2 deletions(-) diff --git a/third_data/hot_block_data_process.py b/third_data/hot_block_data_process.py index b7af45a..11afd89 100644 --- a/third_data/hot_block_data_process.py +++ b/third_data/hot_block_data_process.py @@ -5,6 +5,7 @@ import tool from db import redis_manager +from db import mysql_data __redisManager = redis_manager.RedisManager(0) @@ -13,8 +14,109 @@ return __redisManager.getRedis() +class XGBHotBlockDataManager: + total_datas = [] + __last_datas={} + + @classmethod + def save(cls,day, datas): + mysqldb = mysql_data.Mysqldb() + # 缁熻浠g爜鎵�灞炴澘鍧� + code_block_dict = {} + for data in datas: + for code_info in data[2]: + code = code_info[0].split(".")[0] + if not code_block_dict.get(code): + code_block_dict[code] = set() + code_block_dict[code].add(data[0]) + + for data in datas: + for code_info in data[2]: + code = code_info[0].split(".")[0] + _id = f"{day}_{data[0]}_{code}" + + result = mysqldb.select_one("select count(*) from xgb_hot_block where _id='{}'".format(_id)) + if not result[0]: + mysqldb.execute( + f"insert into xgb_hot_block(_id,_day,_block_name,_code,_limit_up_time,_price,_rate,_update_time) values('{_id}','{day}','{data[0]}','{code}','{code_info[4]}','{code_info[2]}','{code_info[3]}',now())") + else: + # 濡傛灉涓婃鐨勬暟鎹拰杩欐涓�鏍峰氨涓嶆洿鏂帮紝鍚﹀垯闇�瑕佹洿鏂版暟鎹� + if cls.__last_datas.get(_id) != code_info: + # 鏇存柊 + mysqldb.execute(f"update xgb_hot_block set _limit_up_time='{code_info[4]}',_price='{code_info[2]}',_rate='{code_info[3]}' where _id='{_id}'") + cls.__last_datas[_id] = code_info + # 鑾峰彇鍘熸潵鐨勪唬鐮佹墍灞炴澘鍧�,鍒犻櫎涔嬪墠閿欒鐨勬澘鍧� + old_datas = XGBHotBlockDataManager.list_by_code(code, day) + if old_datas: + for d in old_datas: + if d[2] not in code_block_dict[code]: + mysqldb.execute(f"delete from xgb_hot_block where _id='{d[0]}'") + # 灏嗕粖鏃ユ暟鎹鍏ュ埌鍐呭瓨涓� + XGBHotBlockDataManager.total_datas = XGBHotBlockDataManager.list_all(tool.get_now_date_str()) + + @staticmethod + def list_all(day): + mysqldb = mysql_data.Mysqldb() + return mysqldb.select_all(f"select * from xgb_hot_block where _day='{day}'") + + @staticmethod + def list_by_code(code, day): + mysqldb = mysql_data.Mysqldb() + return mysqldb.select_all(f"select * from xgb_hot_block where _code='{code}' and _day='{day}'") + + @staticmethod + def list_by_block(block_name, day): + mysqldb = mysql_data.Mysqldb() + return mysqldb.select_all(f"select * from xgb_hot_block where _block_name='{block_name}' and _day='{day}'") + + +# 鑾峰彇浠g爜鎵�鍦ㄦ澘鍧椾俊鎭� +def get_info(code): + blocks = get_code_blocks(code) + + target_block = None + if blocks: + for block in blocks: + if block == '鍏憡' or block == '鍏朵粬': + continue + target_block = block + break + if not target_block: + return None + + limit_up_codes_set = set() + for block in latest_datas: + if block[0] == target_block: + for code_data in block[2]: + if len(code_data[4]) > 6: + limit_up_codes_set.add(code_data[0].split('.')[0]) + limit_up_codes_set.discard(code) + limit_up_count = len(limit_up_codes_set) + + total_datas = XGBHotBlockDataManager.total_datas + codes = set() + for data in total_datas: + block = data[2] + if block != target_block: + continue + code = data[3] + limit_up_time = data[4] + if len(limit_up_time) > 6: + codes.add(code) + codes.discard(code) + codes.difference(limit_up_codes_set) + # 鐐告澘涓暟 + break_size = len(codes) + return (limit_up_count,break_size) + + +latest_datas = [] + + # 淇濆瓨鏁版嵁 -def save_datas(datas): +def save_datas(day, datas): + latest_datas = datas + XGBHotBlockDataManager.save(day, datas) code_block_dict = {} block_codes_dict = {} for block in datas: @@ -63,5 +165,7 @@ block_codes.get(block) return None + if __name__ == "__main__": - print(get_code_blocks("600468")) \ No newline at end of file + XGBHotBlockDataManager.total_datas=XGBHotBlockDataManager.list_all("2023-03-23") + get_info('002230') -- Gitblit v1.8.0