from enum import Enum, auto from typing import Literal class Chan_DATA_SRC(Enum): BAO_STOCK = auto() CCXT = auto() CSV = auto() class Chan_ZS_DIR(Enum): UP = auto() DOWN = auto() class Chan_K_DIR(Enum): BULL = auto() BEAR = auto() CROSS = auto() class Chan_KL_TYPE(Enum): K_1S = auto() K_1M = auto() K_DAY = auto() K_WEEK = auto() K_MON = auto() K_YEAR = auto() K_5M = auto() K_15M = auto() K_30M = auto() K_60M = auto() K_1H = auto() K_2H = auto() K_4H = auto() K_6H = auto() K_8H = auto() K_12H = auto() K_1D = auto() K_3D = auto() K_3M = auto() K_QUARTER = auto() class Chan_KLINE_DIR(Enum): UP = auto() DOWN = auto() COMBINE = auto() INCLUDED = auto() class Chan_KLU_TYPE(Enum): BigBull = auto() MiddleBull = auto() SmallBull = auto() BigBear = auto() MiddleBear = auto() SmallBear = auto() Cross = auto() class Chan_FX_TYPE(Enum): BOTTOM = auto() TOP = auto() UNKNOWN = auto() UP = auto() DOWN = auto() TT = auto() BB = auto() PTOP = auto() PBOTTOM = auto() class Chan_KLC_FX(Enum): TOP1 = auto() TOP2 = auto() TOP3 = auto() TOP4 = auto() TOP5 = auto() BOTTOM1 = auto() BOTTOM2 = auto() BOTTOM3 = auto() BOTTOM4 = auto() BOTTOM5 = auto() UNKNOWN = auto() # 统一的MACD状态枚举,包含所有可能的状态 class Chan_MACD_STATE(Enum): """MACD状态枚举 - 包含所有可能的状态""" # 穿越状态 CROSS0_UP = auto() # 穿零轴后快速向上,能量柱呈现一根比一根长的排列方式 CROSS0_DOWN = auto() # 穿零轴后快速向下,能量柱呈现一根比一根短的排列方式 CROSS_OS = auto() # 穿零轴后缠绕/粘合,黄白线沿着能量柱运行,黄白线在运行的过程中没有释放出反向能量柱 CROSS_REV = auto() # 穿零轴后倒挂,MACD黄白线在穿零轴的时候与零轴的距离比较近,同时黄白线沿着能量柱运行,在运行的过程中,能量柱衰减导致它跟黄白线之间形成夹角空位,同时黄白线产生交叉并释放反向能量柱。 # 趋势状态 NEAR0 = auto() NEAR0_52 = auto() # 价格在EMA52附近/价格接触EMA52并马上离开,需要观察离开强度 NEAR0_DIFF = auto() # MACD白线接近零轴,价格未到EMA52 NEAR0_PERFECT = auto() # MACD白线接近零轴和价格接触或短暂击穿EMA52,而MACD黄线不穿零轴,完美形态 NEAR0_24 = auto() # MACD黄白线接近零轴和价格在EMA24附近 # 位置状态 HIGH = auto() # 高位:MACD黄白线离开能量柱到高点,能量柱最大开始减弱 HIGH_EMPTY = auto() # 高位空:MACD黄白线处于高位,能量柱衰减,与黄白线形成空间夹角 RETURN_ZERO = auto() # 归零轴:能量柱呈现一根比一根短的排列方式 RZ_UP = auto() # 归零轴后的零轴上涨 RZ_DOWN = auto() # 归零轴后的零轴下跌 # 基础状态 UNKNOWN = auto() # 未知 START = auto() # 开始 class Chan_MACDSEG_DIR(Enum): ABOVE = auto() UNDER = auto() class Chan_MACDUNITTF_TYPE(Enum): START = auto() CROSS0 = auto() NEAR0 = auto() class Chan_MACDUNITTF_JUMP(Enum): CONTUNE = auto() DISCRETE = auto() class Chan_MACDUNITTF_DIV(Enum): CONTUNE = auto() DISCRETE = auto() UNDIV = auto() class Chan_MACDHISTSET_DIR(Enum): ABOVE = auto() UNDER = auto() class Chan_MACDUNITTF_DIR(Enum): ABOVE = auto() UNDER = auto() class Chan_MACDHIST_STATE(Enum): UP = auto() DOWN = auto() PEAK = auto() UNKNOWN = auto() class Chan_BI_DIR(Enum): UP = auto() DOWN = auto() class Chan_SEG_DIR(Enum): UP = auto() DOWN = auto() class Chan_BI_TYPE(Enum): UNKNOWN = auto() STRICT = auto() SUB_VALUE = auto() # 次高低点成笔 TIAOKONG_THRED = auto() DAHENG = auto() TUIBI = auto() UNSTRICT = auto() TIAOKONG_VALUE = auto() Chan_BSP_MAIN_TYPE = Literal['1', '2', '3'] class Chan_BSP_DIR(Enum): BUY = auto() SELL = auto() class Chan_BSP_TYPE(Enum): T1 = '1' T1P = '1p' T2 = '2' T2S = '2s' T3A = '3a' # 中枢在1类后面 T3B = '3b' # 中枢在1类前面 T3 = '3' T3E ='3e' # T3退出点 QJT = 'qjt' # 区间套突破 QJT1 = 'qjt1' # 区间套一类买点 QJT2 = 'qjt2' # 区间套一类卖点 QJT3 = 'qjt3' # 区间套三类买点 def main_type(self) -> Chan_BSP_MAIN_TYPE: return self.value[0] # type: ignore class Chan_AUTYPE(Enum): QFQ = auto() HFQ = auto() NONE = auto() class Chan_TREND_TYPE(Enum): MEAN = "mean" MAX = "max" MIN = "min" class Chan_TREND_LINE_SIDE(Enum): INSIDE = auto() OUTSIDE = auto() class Chan_LEFT_SEG_METHOD(Enum): ALL = auto() PEAK = auto() class Chan_FX_CHECK_METHOD(Enum): STRICT = auto() LOSS = auto() HALF = auto() TOTALLY = auto() class Chan_SEG_TYPE(Enum): BI = auto() SEG = auto() class Chan_MACD_ALGO(Enum): AREA = auto() PEAK = auto() FULL_AREA = auto() DIFF = auto() SLOPE = auto() AMP = auto() VOLUMN = auto() AMOUNT = auto() VOLUMN_AVG = auto() AMOUNT_AVG = auto() TURNRATE_AVG = auto() RSI = auto() class Chan_DATA_FIELD: FIELD_TIME = "time_key" FIELD_OPEN = "open" FIELD_HIGH = "high" FIELD_LOW = "low" FIELD_CLOSE = "close" FIELD_VOLUME = "volume" # 成交量 FIELD_TURNOVER = "turnover" # 成交额 FIELD_TURNRATE = "turnover_rate" # 换手率 Chan_TRADE_INFO_LST = [Chan_DATA_FIELD.FIELD_VOLUME, Chan_DATA_FIELD.FIELD_TURNOVER, Chan_DATA_FIELD.FIELD_TURNRATE]