| | |
| | | from log_module import async_log_util |
| | | from db import redis_manager_delegate as redis_manager |
| | | |
| | | from log_module.log import logger_kpl_block_can_buy, logger_kpl_jx_out |
| | | from log_module.log import logger_kpl_block_can_buy, logger_kpl_jx_out, logger_kpl_jx_in |
| | | from third_data.kpl_util import KPLPlatManager |
| | | from trade import trade_manager, l2_trade_util, trade_constant |
| | | |
| | |
| | | |
| | | # 实时开盘啦市场数据 |
| | | class RealTimeKplMarketData: |
| | | # 精选前5 |
| | | top_5_reason_list = [] |
| | | # 流入缓存 |
| | | top_in_list_cache = [] |
| | | # 流出缓存 |
| | | top_out_list_cache = [] |
| | | # 行业前5 |
| | | top_5_industry_list = [] |
| | | # |
| | |
| | | __LimitUpCodesPlateKeyManager = LimitUpCodesPlateKeyManager() |
| | | __KPLPlatManager = KPLPlatManager() |
| | | # 精选流入前几 |
| | | __top_jx_blocks = set() |
| | | __top_jx_blocks = [] |
| | | # 精选流出前几 |
| | | __top_jx_out_blocks = set() |
| | | __top_jx_out_blocks = [] |
| | | # 精选板块流入金额 |
| | | __jx_blocks_in_money_dict = {} |
| | | |
| | | @classmethod |
| | | def set_market_jingxuan_blocks(cls, datas): |
| | |
| | | # break |
| | | # blocks.add(data[1]) |
| | | # cls.__top_jx_blocks = blocks |
| | | cls.top_in_list_cache = datas |
| | | blocks = set() |
| | | count = 0 |
| | | fblock_money = {} |
| | | for data in datas: |
| | | cls.__jx_blocks_in_money_dict[data[1]] = data[3] |
| | | if data[1] in constant.KPL_INVALID_BLOCKS: |
| | | continue |
| | | if data[3] < 5e7: |
| | | continue |
| | | blocks.add(data[1]) |
| | | if len(blocks) >= 10: |
| | | # 过滤出来为同一个板块就只算1个数量 |
| | | fb = BlockMapManager().filter_blocks({data[1]}) |
| | | if blocks & fb: |
| | | continue |
| | | for b in fb: |
| | | fblock_money[b] = data[3] |
| | | blocks |= fb |
| | | count += 1 |
| | | if count >= 10: |
| | | break |
| | | blocks.add(kpl_util.filter_block(data[1])) |
| | | # 记录精选流出日志 |
| | | cls.__top_jx_blocks = BlockMapManager().filter_blocks(blocks) |
| | | async_log_util.info(logger_kpl_jx_in, f"原数据:{datas[:20]} 板块:{blocks}") |
| | | blocks = list(blocks) |
| | | blocks.sort(key=lambda x: fblock_money.get(x), reverse=True) |
| | | cls.__top_jx_blocks = blocks |
| | | |
| | | @classmethod |
| | | def set_market_jingxuan_out_blocks(cls, datas): |
| | |
| | | @param datas: |
| | | @return: |
| | | """ |
| | | cls.top_out_list_cache = datas |
| | | count = 0 |
| | | blocks = set() |
| | | for data in datas: |
| | | cls.__jx_blocks_in_money_dict[data[1]] = data[3] |
| | | if data[1] in constant.KPL_INVALID_BLOCKS: |
| | | continue |
| | | if data[3] > -5e7: |
| | | # 过滤5千万以上的 |
| | | break |
| | | blocks.add(data[1]) |
| | | if len(blocks) >= 10: |
| | | # 过滤出来为同一个板块就只算1个数量 |
| | | fb = BlockMapManager().filter_blocks({data[1]}) |
| | | if blocks & fb: |
| | | continue |
| | | blocks |= fb |
| | | count += 1 |
| | | if count >= 10: |
| | | break |
| | | blocks.add(kpl_util.filter_block(data[1])) |
| | | # 记录精选流出日志 |
| | | async_log_util.info(logger_kpl_jx_out, f"原数据:{datas[:10]} 板块:{blocks}") |
| | | cls.__top_jx_out_blocks = BlockMapManager().filter_blocks(blocks) |
| | | cls.__top_jx_out_blocks = list(blocks) |
| | | |
| | | @classmethod |
| | | def get_top_market_jingxuan_blocks(cls): |
| | |
| | | else: |
| | | return False, None |
| | | |
| | | @classmethod |
| | | def get_jx_block_in_money(cls, block): |
| | | return cls.__jx_blocks_in_money_dict.get(block) |
| | | |
| | | |
| | | # 代码历史涨停原因与板块管理 |
| | | class CodesHisReasonAndBlocksManager: |