240 lines
6.0 KiB
Python
240 lines
6.0 KiB
Python
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()
|
|
TOP6 = auto()
|
|
TOP7 = auto()
|
|
TOP8 = auto()
|
|
BOTTOM1 = auto()
|
|
BOTTOM2 = auto()
|
|
BOTTOM3 = auto()
|
|
BOTTOM4 = auto()
|
|
BOTTOM5 = auto()
|
|
BOTTOM6 = auto()
|
|
BOTTOM7 = auto()
|
|
BOTTOM8 = 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() # 归零轴后的零轴下跌
|
|
UP = auto() # 穿零轴后向上
|
|
DOWN = auto() # 穿零轴后向下
|
|
PEAK = auto() # 峰值:MACD白线处于高位
|
|
# 基础状态
|
|
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]
|