| | |
| | | |
| | | # 开盘啦禁止交易板块管理 |
| | | class KPLPlateForbiddenManager: |
| | | __redisManager = redis_manager.RedisManager(3) |
| | | """ |
| | | 不能买的板块管理 |
| | | """ |
| | | __redis_manager = redis_manager.RedisManager(3) |
| | | __kpl_forbidden_plates_cache = set() |
| | | |
| | | __instance = None |
| | |
| | | def __load_datas(cls): |
| | | __redis = cls.__get_redis() |
| | | try: |
| | | __kpl_forbidden_plates_cache = RedisUtils.smembers(__redis, "kpl_forbidden_plates") |
| | | cls.__kpl_forbidden_plates_cache = RedisUtils.smembers(__redis, "kpl_forbidden_plates") |
| | | finally: |
| | | RedisUtils.realse(__redis) |
| | | |
| | | @classmethod |
| | | def __get_redis(cls): |
| | | return cls.__redisManager.getRedis() |
| | | return cls.__redis_manager.getRedis() |
| | | |
| | | def save_plate(self, plate): |
| | | self.__kpl_forbidden_plates_cache.add(plate) |
| | | RedisUtils.sadd(self.__get_redis(), "kpl_forbidden_plates", plate) |
| | | RedisUtils.expire(self.__get_redis(), "kpl_forbidden_plates", tool.get_expire()) |
| | | |
| | | def delete_plate(self, plate): |
| | | self.__kpl_forbidden_plates_cache.discard(plate) |
| | | RedisUtils.srem(self.__get_redis(), "kpl_forbidden_plates", plate) |
| | | RedisUtils.expire(self.__get_redis(), "kpl_forbidden_plates", tool.get_expire()) |
| | | |
| | | def list_all(self): |
| | |
| | | |
| | | def list_all_cache(self): |
| | | return self.__kpl_forbidden_plates_cache |
| | | |
| | | def is_in_cache(self, plate): |
| | | if self.__kpl_forbidden_plates_cache and plate in self.__kpl_forbidden_plates_cache: |
| | | return True |
| | | return False |
| | | |
| | | |
| | | class LimitUpCodesPlateKeyManager: |
| | |
| | | score = 60 |
| | | if cls.__market_strong is not None: |
| | | score = int(cls.__market_strong) |
| | | score = score // 10 |
| | | if score >= 10: |
| | | score = 9 |
| | | if score < 6: |
| | | score = 5 |
| | | return score * 2 - 2 |
| | | for info in constant.RADICAL_BUY_TOP_IN_COUNT_BY_MARKET_STRONG: |
| | | if info[0] <= score < info[1]: |
| | | return info[2] |
| | | return 10 |
| | | |
| | | @classmethod |
| | | def set_market_jingxuan_blocks(cls, datas): |
| | |
| | | @return: |
| | | """ |
| | | # 流入阈值 |
| | | THRESHOLD_MONEY = 100 * (tool.trade_time_sub(tool.get_now_time_str(), "09:30:00") // 60) + 1000 |
| | | THRESHOLD_MONEY = min(THRESHOLD_MONEY, 10000) |
| | | THRESHOLD_MONEY = max(THRESHOLD_MONEY, 1000) |
| | | THRESHOLD_MONEY = THRESHOLD_MONEY * 10000 |
| | | # THRESHOLD_MONEY = 50 * (tool.trade_time_sub(tool.get_now_time_str(), "09:30:00") // 60) + 1000 |
| | | # THRESHOLD_MONEY = min(THRESHOLD_MONEY, 10000) |
| | | # THRESHOLD_MONEY = max(THRESHOLD_MONEY, 1000) |
| | | # THRESHOLD_MONEY = THRESHOLD_MONEY * 10000 |
| | | THRESHOLD_MONEY = 0 |
| | | # 最大数量 |
| | | MAX_COUNT = cls.get_jingxuan_in_block_threshold_count() |
| | | # MAX_COUNT = cls.get_jingxuan_in_block_threshold_count() |
| | | |
| | | cls.top_in_list_cache = datas |
| | | blocks = set() |
| | |
| | | break |
| | | if has_code: |
| | | count += 1 |
| | | |
| | | if count >= MAX_COUNT: |
| | | break |
| | | if count == 10: |
| | | strong = cls.get_market_strong() |
| | | if strong is None: |
| | | strong = 60 |
| | | THRESHOLD_MONEY = int((1 - strong / 200) * data[3]) |
| | | # if count >= MAX_COUNT: |
| | | # break |
| | | # 记录精选流出日志 |
| | | async_log_util.info(logger_kpl_jx_in, f"原数据:{datas[:20]} 板块:{blocks}") |
| | | async_log_util.info(logger_kpl_jx_in, f"原数据:{datas[:50]} 板块:{blocks}") |
| | | blocks = list(blocks) |
| | | blocks.sort(key=lambda x: fblock_money.get(x), reverse=True) |
| | | cls.__top_jx_blocks = blocks |
| | |
| | | return cls.__top_jx_out_blocks |
| | | |
| | | @classmethod |
| | | def get_block_info_at_block_in(cls, b): |
| | | """ |
| | | 获取板块的净流入情况 |
| | | @param b: |
| | | @return: (板块名称,身位,流入金额) |
| | | """ |
| | | for i in range(0, len(cls.top_in_list_cache)): |
| | | if cls.top_in_list_cache[i][1] == b: |
| | | return b, i, cls.top_in_list_cache[i][3] |
| | | return b, -1, 0 |
| | | |
| | | @classmethod |
| | | def set_top_5_industry(cls, datas): |
| | | for d in datas: |
| | | cls.total_industry_dict[d[1]] = d |