29 lines
1014 B
Python
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
|