Administrator
2025-06-10 efe62c0c92bee36da5179f34bb73e8ee4db6f814
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
# 板块中的代码强度排序
 
 
# 板块强度排序,根据当前时间是否涨停,涨停时间排序
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_