Files
chan.py/Seg/Eigen.py
T
2025-06-10 01:16:09 +08:00

29 lines
1014 B
Python

from typing import Self
from Bi.Bi import CBi
from Combiner.KLine_Combiner import CKLine_Combiner
from Common.CEnum import BI_DIR, FX_TYPE
class CEigen(CKLine_Combiner[CBi]):
def __init__(self, bi, _dir):
super(CEigen, self).__init__(bi, _dir)
self.gap = False
def update_fx(self, _pre: Self, _next: Self, exclude_included=False, allow_top_equal=None):
super(CEigen, self).update_fx(_pre, _next, exclude_included, allow_top_equal)
if (self.fx == FX_TYPE.TOP and _pre.high < self.low) or \
(self.fx == FX_TYPE.BOTTOM and _pre.low > self.high):
self.gap = True
def __str__(self):
return f"{self.lst[0].idx}~{self.lst[-1].idx} gap={self.gap} fx={self.fx}"
def GetPeakBiIdx(self):
assert self.fx != FX_TYPE.UNKNOWN
bi_dir = self.lst[0].dir
if bi_dir == BI_DIR.UP: # 下降线段
return self.get_peak_klu(is_high=False).idx-1
else:
return self.get_peak_klu(is_high=True).idx-1