# 板块中的代码强度排序 # 板块强度排序,根据当前时间是否涨停,涨停时间排序 import functools from utils import global_util from code_attribute import limit_up_time_manager from trade import trade_data_manager __codeActualPriceProcessor = trade_data_manager.CodeActualPriceProcessor() # 同一板块的数据排序 def sort_codes(codes, target_code): def cmp(a, b): la = 1 if a[2] else 0 lb = 1 if b[2] else 0 if la != lb: return lb - la return int(a[1].replace(":", "")) - int(b[1].replace(":", "")) if not global_util.limit_up_time: limit_up_time_manager.LimitUpTimeManager.load_limit_up_time() list = [] for code in codes: limit_up_time = global_util.limit_up_time.get(code) if limit_up_time is not None: is_limit_up = __codeActualPriceProcessor.current_is_limit_up(code) if code == target_code: is_limit_up = True list.append((code, limit_up_time,is_limit_up)) new_s = sorted(list, key=functools.cmp_to_key(cmp)) dict_ = {} # 相同值为同一排序 sort_index = 0 for i in range(0, len(new_s)): if new_s[i - 1][1] != new_s[i][1] and i > 0: sort_index += 1 dict_[new_s[i][0]] = sort_index return dict_