from .CEnum import BI_DIR, KL_TYPE def kltype_lt_day(_type): return _type in [KL_TYPE.K_1M, KL_TYPE.K_5M, KL_TYPE.K_15M, KL_TYPE.K_30M, KL_TYPE.K_60M] def kltype_lte_day(_type): return _type in [KL_TYPE.K_1M, KL_TYPE.K_5M, KL_TYPE.K_15M, KL_TYPE.K_30M, KL_TYPE.K_60M, KL_TYPE.K_DAY] def check_kltype_order(type_list: list): _dict = { KL_TYPE.K_1M: 1, KL_TYPE.K_3M: 2, KL_TYPE.K_5M: 3, KL_TYPE.K_15M: 4, KL_TYPE.K_30M: 5, KL_TYPE.K_60M: 6, KL_TYPE.K_4H: 7, # 4小时 KL_TYPE.K_6H: 8, # 6小时 KL_TYPE.K_8H: 9, # 8小时 KL_TYPE.K_12H: 10, # 12小时 KL_TYPE.K_DAY: 11, KL_TYPE.K_3DAY: 12, # 3日线 KL_TYPE.K_WEEK: 13, KL_TYPE.K_MON: 14, KL_TYPE.K_QUARTER: 15, KL_TYPE.K_YEAR: 16, } last_lv = float("inf") for kl_type in type_list: cur_lv = _dict[kl_type] assert cur_lv < last_lv, "lv_list的顺序必须从大级别到小级别" last_lv = cur_lv def revert_bi_dir(dir): return BI_DIR.DOWN if dir == BI_DIR.UP else BI_DIR.UP def has_overlap(l1, h1, l2, h2, equal=False): return h2 >= l1 and h1 >= l2 if equal else h2 > l1 and h1 > l2 def str2float(s): try: return float(s) except ValueError: return 0.0 def _parse_inf(v): if type(v) == float: if v == float("inf"): v = 'float("inf")' if v == float("-inf"): v = 'float("-inf")' return v