""" 排1策略 """ import json from db import redis_manager_delegate as redis_manager from db.redis_manager_delegate import RedisUtils from utils import tool class BuyOpenLimitupDataManager: """ 排1代码数据管理 """ # 下单信息 __place_order_info_dict = {} __db = 2 __redisManager = redis_manager.RedisManager(2) __instance = None def __new__(cls, *args, **kwargs): if not cls.__instance: cls.__instance = super(BuyOpenLimitupDataManager, cls).__new__(cls, *args, **kwargs) cls.__load_data() return cls.__instance @classmethod def __get_redis(cls): return cls.__redisManager.getRedis() @classmethod def __load_data(cls): keys = RedisUtils.get(cls.__get_redis(), "buy_open_limit_up_placing_orderinfo-*") if keys: for k in keys: code = k.split("-")[1] val = RedisUtils.get(cls.__get_redis(), k) val = json.loads(val) cls.__place_order_info_dict[code] = val def set_place_order_info(self, code, volume, shadow_volume, order_ref): """ @param order_ref: 下单索引 @param code: @param volume: @param shadow_volume: @return: """ self.__place_order_info_dict[code] = (volume, shadow_volume, order_ref) RedisUtils.set_async(self.__db, f"buy_open_limit_up_placing_orderinfo-{code}", tool.get_expire(), json.dumps(self.__place_order_info_dict[code])) def get_place_order_info(self, code): """ 获取下单信息 @param code: @return:(下单量, 影子单量, 订单索引) """ return self.__place_order_info_dict.get(code) def remove_place_order_info(self, code): if code in self.__place_order_info_dict: self.__place_order_info_dict.pop(code) RedisUtils.delete_async(self.__db, f"buy_open_limit_up_placing_orderinfo-{code}")