''' 成交进度 ''' # 买入队列 import json import constant from db import redis_manager import tool import l2.l2_data_util class TradeBuyQueue: __redis_manager = redis_manager.RedisManager(0) def __init__(self): self.last_buy_queue_data = {} def __getRedis(self): return self.__redis_manager.getRedis() def __save_buy_queue_data(self, code, num_list): key = "trade_buy_queue_data-{}".format(code) self.__getRedis().setex(key, tool.get_expire(), json.dumps((num_list, tool.get_now_time_str()))) # 返回数据与更新时间 def __get_buy_queue_data(self, code): key = "trade_buy_queue_data-{}".format(code) val = self.__getRedis().get(key) if val is None: return None, None val = json.loads(val) return val[0], [1] def __save_buy_progress_index(self, code, index): key = "trade_buy_progress_index-{}".format(code) self.__getRedis().setex(key, tool.get_expire(), index) # 返回数据与更新时间 def __get_buy_progress_index(self, code): key = "trade_buy_progress_index-{}".format(code) val = self.__getRedis().get(key) if val is None: return None return int(val) # 最近的非涨停买1的时间 def __save_latest_not_limit_up_time(self, code, time_str): key = "latest_not_limit_up_time-{}".format(code) self.__getRedis().setex(key, tool.get_expire(), time_str) def __get_latest_not_limit_up_time(self, code): key = "latest_not_limit_up_time-{}".format(code) self.__getRedis().get(key) # 保存数据,返回保存数据的条数 def save(self, code, limit_up_price, buy_1_price, buy_1_time, queues): # 如果买1不为涨停价就不需要保存 if queues == self.last_buy_queue_data.get(code): return None if abs(float(buy_1_price) - float(limit_up_price)) >= 0.01: # 保存最近的涨停起始时间 self.__save_latest_not_limit_up_time(code, buy_1_time) return None self.last_buy_queue_data[code] = queues min_num = round(constant.L2_MIN_MONEY / (limit_up_price * 100)) num_list = [] for num in queues: if num > min_num: num_list.append(num) # 保存列表 self.__save_buy_queue_data(code, num_list) return num_list # 保存成交索引 def save_traded_index(self, code, buy1_price, buyQueueBig): total_datas = l2.l2_data_util.local_today_datas.get(code) today_num_operate_map = l2.l2_data_util.local_today_num_operate_map.get(code) index = l2.l2_data_util.L2TradeQueueUtils.find_traded_progress_index(buy1_price, total_datas, today_num_operate_map, buyQueueBig,self.__get_latest_not_limit_up_time(code)) if index is not None: # 保存成交进度 self.__save_buy_progress_index(code, index) return index return None # 获取成交进度索引 def get_traded_index(self, code): index = self.__get_buy_progress_index(code) return index if __name__ == '__main': pass