Administrator
4 天以前 48fb7a00951f91bdc707e5dd2d196e5bccb752c3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
"""
排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}")