| | |
| | | from db import redis_manager_delegate as redis_manager |
| | | from db.redis_manager_delegate import RedisUtils |
| | | |
| | | |
| | | from utils import tool |
| | | from utils.kpl_data_db_util import KPLLimitUpDataUtil |
| | | |
| | | # 用于计算激进买开1的板数:{"代码":(几版,{板块})} |
| | | open_limit_up_code_dict_for_radical_buy = None |
| | | |
| | |
| | | __limit_up_reasons_dict = {} |
| | | # 涨停推荐原因 |
| | | __limit_up_recommend_reasons_dict = {} |
| | | # 激进买的原因 |
| | | __radical_buy_reasons_dict = {} |
| | | |
| | | __instance = None |
| | | |
| | |
| | | for code in limit_up_recommend_block_dict: |
| | | cls.__limit_up_recommend_reasons_dict[code] = set(limit_up_recommend_block_dict[code]) |
| | | |
| | | # 加载为扫入买匹配的代码板块 |
| | | kpl_results = KPLLimitUpDataUtil.get_latest_block_infos(min_day=tool.date_sub(tool.get_now_date_str(), 365)) |
| | | kpl_block_dict = {} |
| | | for r in kpl_results: |
| | | if r[2] in constant.KPL_INVALID_BLOCKS: |
| | | continue |
| | | code = r[0] |
| | | if code not in kpl_block_dict: |
| | | kpl_block_dict[code] = [] |
| | | kpl_block_dict[code].append((r[2], r[1])) # (板块, 时间) |
| | | for code in kpl_block_dict: |
| | | block_infos = kpl_block_dict.get(code) |
| | | block_infos.sort(key=lambda x: x[1], reverse=True) |
| | | temp_dict = {} # {"板块":[出现次数, 最近出现时间]} |
| | | for b in block_infos: |
| | | if b[0] not in temp_dict: |
| | | temp_dict[b[0]] = [0, b[1]] |
| | | temp_dict[b[0]][0] += 1 |
| | | temp_list = [(k, temp_dict[k][0], temp_dict[k][1]) for k in temp_dict] |
| | | # 按照涨停次数与最近涨停时间排序 |
| | | temp_list.sort(key=lambda x: (x[1], x[2]), reverse=True) |
| | | blocks = {temp_list[0][0]} |
| | | if len(temp_list) > 1: |
| | | if temp_list[1][1] >= 2: |
| | | blocks.add(temp_list[1][0]) |
| | | cls.__radical_buy_reasons_dict[code] = blocks |
| | | |
| | | |
| | | |
| | | def get_limit_up_reasons(self, code): |
| | | """ |
| | | 获取涨停原因 |
| | |
| | | blocks |= self.__limit_up_recommend_reasons_dict[code] |
| | | return blocks |
| | | |
| | | def get_radical_buy_blocks(self, code): |
| | | """ |
| | | 获取涨停买判断的板块 |
| | | @param code: |
| | | @return: |
| | | """ |
| | | return self.__radical_buy_reasons_dict.get(code) |
| | | |
| | | |
| | | class TodayLimitUpReasonChangeManager: |
| | | """ |