| | |
| | | # 是否在禁止交易代码中 |
| | | from db import redis_manager |
| | | from utils import tool |
| | | from code_attribute import gpcode_manager |
| | | from db import redis_manager_delegate as redis_manager |
| | | from log_module import async_log_util |
| | | from log_module.log import logger_trade |
| | | from trade import trade_record_log_util |
| | | from trade.buy_radical.block_special_codes_manager import BlockSpecialCodesManager |
| | | |
| | | __redis_manager = redis_manager.RedisManager(2) |
| | | |
| | | |
| | | class WhiteListCodeManager: |
| | | __redis_manager = redis_manager.RedisManager(2) |
| | | |
| | | @classmethod |
| | | def __get_redis(cls): |
| | | return cls.__redis_manager.getRedis() |
| | | |
| | | @classmethod |
| | | def add_code(cls, code): |
| | | cls.__get_redis().sadd("white_list_codes", code) |
| | | cls.__get_redis().expire("white_list_codes", tool.get_expire()) |
| | | |
| | | @classmethod |
| | | def remove_code(cls, code): |
| | | cls.__get_redis().srem("white_list_codes", code) |
| | | |
| | | @classmethod |
| | | def is_in(cls, code): |
| | | return cls.__get_redis().sismember("white_list_codes", code) |
| | | |
| | | @classmethod |
| | | def list_codes(cls): |
| | | return cls.__get_redis().smembers("white_list_codes") |
| | | |
| | | @classmethod |
| | | def clear(cls): |
| | | cls.__get_redis().delete("white_list_codes") |
| | | |
| | | |
| | | class BlackListCodeManager: |
| | | __redis_manager = redis_manager.RedisManager(2) |
| | | |
| | | @classmethod |
| | | def __get_redis(cls): |
| | | return cls.__redis_manager.getRedis() |
| | | |
| | | @classmethod |
| | | def add_code(cls, code): |
| | | cls.__get_redis().sadd("forbidden-trade-codes", code) |
| | | cls.__get_redis().expire("forbidden-trade-codes", tool.get_expire()) |
| | | |
| | | @classmethod |
| | | def remove_code(cls, code): |
| | | cls.__get_redis().srem("forbidden-trade-codes", code) |
| | | |
| | | @classmethod |
| | | def is_in(cls, code): |
| | | return cls.__get_redis().sismember("forbidden-trade-codes", code) |
| | | |
| | | @classmethod |
| | | def list_codes(cls): |
| | | return cls.__get_redis().smembers("forbidden-trade-codes") |
| | | |
| | | @classmethod |
| | | def clear(cls): |
| | | cls.__get_redis().delete("forbidden-trade-codes") |
| | | |
| | | |
| | | # 初始化禁止交易代码库 |
| | | def init_forbidden_trade_codes(): |
| | | BlackListCodeManager.clear() |
| | | BlackListCodeManager.add_code("000000") |
| | | gpcode_manager.BlackListCodeManager().clear() |
| | | gpcode_manager.BlackListCodeManager().add_code("000000") |
| | | |
| | | |
| | | # 移除禁止交易代码 |
| | | def remove_from_forbidden_trade_codes(code): |
| | | BlackListCodeManager.remove_code(code) |
| | | gpcode_manager.BlackListCodeManager().remove_code(code) |
| | | |
| | | |
| | | # 添加代码到禁止交易 |
| | | def add_to_forbidden_trade_codes(code): |
| | | BlackListCodeManager.add_code(code) |
| | | def __add_to_forbidden_trade_codes(code): |
| | | gpcode_manager.BlackListCodeManager().add_code(code) |
| | | |
| | | |
| | | # 禁止代码交易 |
| | | def forbidden_trade(code): |
| | | add_to_forbidden_trade_codes(code) |
| | | # l2_data_manager.remove_from_l2_fixed_codes(code) |
| | | # l2_code_operate.L2CodeOperate.get_instance().remove_l2_listen(code, "禁止代码交易") |
| | | # force 是否强制加入黑名单 |
| | | def forbidden_trade(code, msg=None, force=False): |
| | | need_add = False |
| | | if force: |
| | | need_add = True |
| | | else: |
| | | # 检查是否在想买单中 |
| | | if gpcode_manager.HumanRemoveForbiddenManager().is_in_cache(code): |
| | | # 人为移除黑,不可再拉黑 |
| | | need_add = False |
| | | else: |
| | | need_add = True |
| | | |
| | | if need_add: |
| | | if not is_in_forbidden_trade_codes(code): |
| | | trade_record_log_util.add_forbidden_buy_log(code, msg) |
| | | __add_to_forbidden_trade_codes(code) |
| | | async_log_util.warning(logger_trade, f"{code}加入黑名单原因:{msg}") |
| | | |
| | | |
| | | |
| | | def is_in_forbidden_trade_codes(code): |
| | | return BlackListCodeManager.is_in(code) |
| | | return gpcode_manager.BlackListCodeManager().is_in_cache(code) |
| | | |
| | | |
| | | if __name__ == "__main__": |
| | | # add_to_forbidden_trade_codes("000977") |
| | | WhiteListCodeManager.add_code("002977") |