import copy from typing import Dict, Optional from ChanEnum import Chan_FX_TYPE, Chan_KLINE_DIR, Chan_SEG_DIR import ChanKLU import ChanCTime from ChanBI import ChanBI class ChanSEG(): def __init__(self, start_bi: ChanBI, index, ddir=Chan_SEG_DIR.UP): self.start_bi = start_bi self.start_time = start_bi.start_time self.end_time = None self.end_bi = None self.dir = ddir self.low = 0 self.high = 0 if self.dir == Chan_SEG_DIR.UP and start_bi: self.low = start_bi.low else: if start_bi: self.high = start_bi.high self.index = index self.pre = None self.next = None self.bi_list = [] self.bi_list.append(start_bi) self.is_sure = False self.sure_time = None self.macd_hist = 0 self.macd_div = 0 def set_macdhist(self, macd_hist): self.macd_hist = macd_hist def set_macd_div(self, macd_div): self.macd_div = macd_div def set_end_bi(self, bi: ChanBI, sure_bi: ChanBI): self.end_bi = bi if bi: if self.dir == Chan_SEG_DIR.UP: self.high = bi.high else: self.low = bi.low self.is_sure = True self.end_time = bi.end_klc.end_time if sure_bi.is_sure: self.sure_time = sure_bi.end_klc.end_time def pre_set_end_bi(self, bi: ChanBI): self.end_bi = bi if bi: if self.dir == Chan_SEG_DIR.UP: self.high = bi.high else: self.low = bi.low self.end_time = bi.end_klc.end_time def set_pre(self, seg): self.pre = seg def set_next(self, seg): self.next = seg def set_sure(self, sure_bi): if sure_bi.is_sure: self.sure_time = sure_bi.end_klc.end_time self.is_sure = True def add_bi(self, bi: ChanBI): if len(self.bi_list) > 1: self.bi_list.append(bi)