| | |
| | | |
| | | from db.mysql_data_delegate import Mysqldb |
| | | from utils import middle_api_protocol |
| | | from utils.kpl_data_db_util import KPLLimitUpDataUtil |
| | | from utils.ths_industry_util import ThsCodeIndustryManager |
| | | |
| | | SOURCE_TYPE_KPL = 1 # 东方财富 |
| | | SOURCE_TYPE_KPL = 1 # 开盘啦 |
| | | SOURCE_TYPE_TDX = 2 # 通达信 |
| | | SOURCE_TYPE_THS = 3 # 同花顺 |
| | | SOURCE_TYPE_EASTMONEY = 4 # 东方财富 |
| | | SOURCE_TYPE_KPL_RECORD = 5 # 开盘啦历史数据 |
| | | |
| | | |
| | | class CodeThirdBlocksManager: |
| | |
| | | cls.__code_source_blocks_dict_origin[result[0]] = {} |
| | | blocks = set(result[2].split("、")) |
| | | if result[1] == SOURCE_TYPE_THS: |
| | | # 同花顺加入2级分类 |
| | | industry = cls.__ths_industry.get_industry(result[0]) |
| | | if industry: |
| | | blocks.add(industry) |
| | | |
| | | cls.__code_source_blocks_dict_origin[result[0]][result[1]] = blocks |
| | | cls.__code_source_blocks_dict[result[0]][result[1]] = BlockMapManager().filter_blocks(blocks) |
| | | # 加载开盘啦历史涨停原因 |
| | | kpl_results = KPLLimitUpDataUtil.get_latest_block_infos() |
| | | code_blocks = {} |
| | | for r in kpl_results: |
| | | if r[0] not in code_blocks: |
| | | code_blocks[r[0]] = set() |
| | | code_blocks[r[0]].add(r[2]) |
| | | if r[3]: |
| | | code_blocks[r[0]] |= set(r[3].split("、")) |
| | | for code in code_blocks: |
| | | if code not in cls.__code_source_blocks_dict: |
| | | cls.__code_source_blocks_dict[code] = {} |
| | | cls.__code_source_blocks_dict_origin[code] = {} |
| | | blocks = code_blocks[code] |
| | | cls.__code_source_blocks_dict_origin[code][SOURCE_TYPE_KPL_RECORD] = blocks |
| | | cls.__code_source_blocks_dict[code][SOURCE_TYPE_KPL_RECORD] = BlockMapManager().filter_blocks(blocks) |
| | | |
| | | |
| | | def get_source_blocks(self, code): |
| | | """ |
| | |
| | | """ |
| | | return self.__code_source_blocks_dict_origin.get(code) |
| | | |
| | | def get_intersection_blocks_info(self, code, blocks): |
| | | def get_intersection_blocks_info(self, code, blocks, same_count=2): |
| | | # 获取交集 |
| | | bs = [] |
| | | b1 = BlockMapManager().filter_blocks(blocks) |
| | |
| | | for s in sb_dict: |
| | | if sb_dict[s]: |
| | | bs.append(sb_dict[s]) |
| | | if len(bs) < 2: |
| | | if len(bs) < same_count: |
| | | return set(), bs |
| | | s_count = len(bs) |
| | | fblocks = set() |
| | | |
| | | # 求2个平台的交集 |
| | | for ces in combinations(bs, 2): |
| | | for ces in combinations(bs, same_count): |
| | | ic = None |
| | | for c in ces: |
| | | if ic is None: |