68 lines
2.8 KiB
Python
68 lines
2.8 KiB
Python
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.end_klu = end_klu
|
|
self.end_time = end_klu.time
|
|
"""
|
|
if self.div_klu:
|
|
print(self.start_time, self.peak_klu.time, self.div_klu.time, self.klu_list[-1].time, len(self.klu_list), self.histset_dir)
|
|
elif self.peak_klu:
|
|
print(self.start_time, "Peak:", self.peak_klu.time, self.klu_list[-1].time, len(self.klu_list), self.histset_dir)
|
|
else:
|
|
print(self.start_time, "None", self.klu_list[-1].time, len(self.klu_list), self.histset_dir)
|
|
"""
|
|
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 |