From 6a0d3ff5832e57ee1b1374d086f24b3c1679b332 Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期五, 05 九月 2025 18:22:24 +0800 Subject: [PATCH] bug修复/降低测撤单率 --- trade/l2_trade_util.py | 105 +++++++++++++++------------------------------------- 1 files changed, 31 insertions(+), 74 deletions(-) diff --git a/trade/l2_trade_util.py b/trade/l2_trade_util.py index aa2e154..18648e6 100644 --- a/trade/l2_trade_util.py +++ b/trade/l2_trade_util.py @@ -1,95 +1,52 @@ # 鏄惁鍦ㄧ姝氦鏄撲唬鐮佷腑 -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") # 绉婚櫎绂佹浜ゆ槗浠g爜 def remove_from_forbidden_trade_codes(code): - BlackListCodeManager.remove_code(code) + gpcode_manager.BlackListCodeManager().remove_code(code) # 娣诲姞浠g爜鍒扮姝氦鏄� -def add_to_forbidden_trade_codes(code): - BlackListCodeManager.add_code(code) +def __add_to_forbidden_trade_codes(code): + gpcode_manager.BlackListCodeManager().add_code(code) # 绂佹浠g爜浜ゆ槗 -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, "绂佹浠g爜浜ゆ槗") +# 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") -- Gitblit v1.8.0