| | |
| | | k_format = code_nature_analyse.CodeNatureRecordManager().get_k_format_cache(code) |
| | | if k_format and k_format[13] and not k_format[14]: |
| | | # 获取激进买的板块 |
| | | result = self.__radical_buy_by_blocks_result_cache.get(code) |
| | | if not result or result[0] < time.time(): |
| | | result_cache = self.__radical_buy_by_blocks_result_cache.get(code) |
| | | if not result_cache or result_cache[0] < time.time(): |
| | | # 不存在/过期 |
| | | yesterday_codes = kpl_data_manager.get_yesterday_limit_up_codes() |
| | | if yesterday_codes is None: |
| | | yesterday_codes = set() |
| | | result = RadicalBuyBlockManager.is_radical_buy(code, yesterday_codes) |
| | | async_log_util.info(logger_l2_radical_buy, f"计算板块结果:{code}-{result}") |
| | | self.__radical_buy_by_blocks_result_cache[code] = (time.time() + 3, result) |
| | | RadicalBuyDealCodesManager.radical_buy_blocks_dict[code] = result[0] |
| | | else: |
| | | # 取缓存 |
| | | result = result[1] |
| | | |
| | | radical_result = RadicalBuyBlockManager.is_radical_buy(code, yesterday_codes) |
| | | async_log_util.info(logger_l2_radical_buy, f"计算板块结果:{code}-{radical_result}") |
| | | result_cache = (time.time() + 3, radical_result) |
| | | self.__radical_buy_by_blocks_result_cache[code] = result_cache |
| | | RadicalBuyDealCodesManager.radical_buy_blocks_dict[code] = radical_result[0] |
| | | # 取缓存 |
| | | result = result_cache[1] |
| | | if result[0]: |
| | | # 如果关键词包含已成交的原因就不再下单 |
| | | # 获取已经成交代码的板块 |
| | | # ---------------获取已经成交代码的板块---------------- |
| | | deal_reasons = set() |
| | | for dc in deal_codes: |
| | | # 获取涨停原因 |
| | | limit_up_reason = kpl_data_manager.LimitUpDataConstant.get_limit_up_reason_with_history(dc) |
| | | if limit_up_reason in constant.KPL_INVALID_BLOCKS: |
| | | limit_up_reason = None |
| | | # 如果涨停原因为空就需要获取上次激进买的原因 |
| | | if limit_up_reason is None: |
| | | radical_buy_blocks = RadicalBuyDealCodesManager.radical_buy_blocks_dict.get(dc) |
| | | deal_reasons |= radical_buy_blocks |
| | | else: |
| | | deal_reasons.add(limit_up_reason) |
| | | # 成交代码的板块如果和目标代码板块有交集就不扫 |
| | | keys_, k1_, k11_, k2_, k3_, k4_ = TargetCodePlateKeyManager().get_plate_keys(code, |
| | | contains_today=False) |
| | | match_blocks = keys_ & deal_reasons |
| | | if match_blocks: |
| | | async_log_util.info(logger_l2_radical_buy, f"板块有成交:{code}-{match_blocks}") |
| | | return |
| | | try: |
| | | # ---------------获取已经成交代码的板块---------------- |
| | | deal_reasons = set() |
| | | for dc in deal_codes: |
| | | # 获取涨停原因 |
| | | limit_up_reason = kpl_data_manager.LimitUpDataConstant.get_limit_up_reason_with_history(dc) |
| | | if limit_up_reason and limit_up_reason in constant.KPL_INVALID_BLOCKS: |
| | | limit_up_reason = None |
| | | # 如果涨停原因为空就需要获取上次激进买的原因 |
| | | if not limit_up_reason: |
| | | radical_buy_blocks = RadicalBuyDealCodesManager.radical_buy_blocks_dict.get(dc) |
| | | if radical_buy_blocks: |
| | | deal_reasons |= radical_buy_blocks |
| | | else: |
| | | deal_reasons.add(limit_up_reason) |
| | | async_log_util.info(logger_l2_radical_buy, f"已经成交的板块:{deal_reasons}") |
| | | # 成交代码的板块如果和目标代码板块有交集就不扫 |
| | | keys_, k1_, k11_, k2_, k3_, k4_ = TargetCodePlateKeyManager().get_plate_keys(code, |
| | | contains_today=False) |
| | | match_blocks = keys_ & deal_reasons |
| | | if match_blocks: |
| | | async_log_util.info(logger_l2_radical_buy, f"板块有成交:{code}-{match_blocks}") |
| | | return |
| | | except Exception as e: |
| | | logger_debug.exception(e) |
| | | |
| | | # 有可以扫的板块 |
| | | # 判断最近的主动买占了总买额的多少 |