Administrator
2025-04-29 6056ef8795f5620f9a2ac4891e4c24526e6a7103
code_attribute/gpcode_manager.py
@@ -9,7 +9,8 @@
from db.mysql_data_delegate import Mysqldb
from db.redis_manager_delegate import RedisUtils
from log_module import log_export
from log_module.log import logger_pre_close_price
from log_module.log import logger_pre_close_price, logger_debug
from trade import trade_record_log_util
from utils import tool
import decimal
@@ -210,6 +211,81 @@
        return self.__want_buy_codes_cache
@tool.singleton
class HumanRemoveForbiddenManager:
    """
    认为移黑管理
    """
    __db = 0
    redisManager = redis_manager.RedisManager(0)
    __redis_key = "human_remove_forbidden_codes"
    __codes_cache = set()
    def __init__(self):
        self.__load_data()
    @classmethod
    def __get_redis(cls):
        return cls.redisManager.getRedis()
    def __load_data(self):
        self.__codes_cache = RedisUtils.smembers(self.__get_redis(), self.__redis_key)
        if self.__codes_cache is None:
            self.__codes_cache = set()
    def add_code(self, code):
        self.__codes_cache.add(code)
        RedisUtils.sadd_async(self.__db, self.__redis_key, code)
        RedisUtils.expire_async(self.__db, self.__redis_key, tool.get_expire())
    def remove_code(self, code):
        self.__codes_cache.discard(code)
        RedisUtils.srem_async(self.__db, self.__redis_key, code)
    def is_in_cache(self, code):
        return code in self.__codes_cache
@tool.singleton
class HumanForbiddenManager:
    """
    人为拉黑管理
    """
    __db = 0
    redisManager = redis_manager.RedisManager(0)
    __redis_key = "human_forbidden_codes"
    __codes_cache = set()
    def __init__(self):
        self.__load_data()
    @classmethod
    def __get_redis(cls):
        return cls.redisManager.getRedis()
    def __load_data(self):
        self.__codes_cache = RedisUtils.smembers(self.__get_redis(), self.__redis_key)
        if self.__codes_cache is None:
            self.__codes_cache = set()
    def add_code(self, code):
        trade_record_log_util.add_common_msg(code, "人为加黑", f"")
        self.__codes_cache.add(code)
        RedisUtils.sadd_async(self.__db, self.__redis_key, code)
        RedisUtils.expire_async(self.__db, self.__redis_key, tool.get_expire())
    def remove_code(self, code):
        trade_record_log_util.add_common_msg(code, "人为移黑", f"")
        self.__codes_cache.discard(code)
        RedisUtils.srem_async(self.__db, self.__redis_key, code)
    def is_in_cache(self, code):
        return code in self.__codes_cache
# 暂停下单代码管理
# 与黑名单的区别是暂停交易代码只是不交易,不能移除L2监控位
class PauseBuyCodesManager:
@@ -383,6 +459,7 @@
            # 获取交易窗口的锁
            cls.__instance.__forbidden_trade_codes_cache = RedisUtils.smembers(cls.__get_redis(),
                                                                               "forbidden-trade-codes")
            logger_debug.info(f"加载加黑列表:{cls.__instance.__forbidden_trade_codes_cache}")
        return cls.__instance
@@ -868,5 +945,4 @@
        RedisUtils.delete(redis_instance, "first_code_record", auto_free=False)
        RedisUtils.delete(redis_instance, "first_code_limited_up_record", auto_free=False)
    finally:
        RedisUtils.realse(redis_instance)
        RedisUtils.realse(redis_instance)