from ChanEnum import Chan_MACDHISTSET_DIR class ChanMACDHistSet(): def __init__(self, start_time, start_klu, pre_histset, dir): self.start_time = start_time self.end_time = None self.klu_list = [] self.klu_list.append(start_klu) self.histset_dir = dir self.next = None self.pre = pre_histset self.peak_klu = None self.div_klu = None self.area = start_klu.macdhist self.unittf_div = False def set_next(self, next_histset): self.next = next_histset def set_unittf_div(self, unittf_div): self.unittf_div = unittf_div def add_klu(self, klu): klu.set_histset(self) if self.histset_dir == Chan_MACDHISTSET_DIR.ABOVE: if self.peak_klu: if klu.macdhist > self.peak_klu.macdhist: self.peak_klu = klu if klu.macdhist > self.klu_list[-1].macdhist and klu.macdhist < self.peak_klu.macdhist: self.div_klu = klu else: if len(self.klu_list) > 0: pre_klu = self.klu_list[-1] if pre_klu.macdhist < klu.macdhist: self.peak_klu = klu else: if self.peak_klu: if klu.macdhist < self.peak_klu.macdhist: self.peak_klu = klu if klu.macdhist < self.klu_list[-1].macdhist and klu.macdhist > self.peak_klu.macdhist: self.div_klu = klu else: if len(self.klu_list) > 0: pre_klu = self.klu_list[-1] if pre_klu.macdhist > klu.macdhist: self.peak_klu = klu self.klu_list.append(klu) self.area += klu.macdhist def set_end_klu(self, end_klu): self.add_klu(end_klu) self.end_klu = end_klu self.end_time = end_klu.time def find_peak_from(self, from_klu): peak_klu = None if from_klu in self.klu_list: for i in range(from_klu.index + 1, len(self.klu_list)): klu = self.klu_list[i] if peak_klu: if abs(peak_klu.macdhist) < abs(klu.macdhist): peak_klu = klu else: if abs(self.klu_list[i-1].macdhist) < abs(klu.macdhist): peak_klu = klu return peak_klu