"""
|
排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}")
|