基本上完成了高低点的识别
This commit is contained in:
+27
-64
@@ -20,6 +20,7 @@ import numpy as np
|
||||
from ChanMACD import ChanMACD
|
||||
|
||||
class ChanLun():
|
||||
time1 = 1
|
||||
time3 = 3
|
||||
time5 = 5
|
||||
time15 = 15
|
||||
@@ -38,79 +39,40 @@ class ChanLun():
|
||||
df = resample_to_interval(dataframe, ticker_indicator*self.times[timeframe])
|
||||
all_data[timeframe] = df
|
||||
return all_data
|
||||
def print_zs(self, zs_list):
|
||||
for zs in zs_list:
|
||||
if zs.end_klc:
|
||||
print(zs.start_klc.start_time, zs.end_klc.end_time, zs.sure_time, zs.zg, zs.zd, zs.bi_out_count)
|
||||
else:
|
||||
print(zs.start_klc.start_time, zs.zg, zs.zd, zs.bi_out_count)
|
||||
def print_seg(self, seg_list):
|
||||
for seg in seg_list:
|
||||
if seg.is_sure:
|
||||
print(seg.start_bi.start_time, seg.end_bi.end_time, seg.dir, seg.sure_time, "SEG")
|
||||
else:
|
||||
print(seg.start_bi.start_time, seg.dir, "SEG")
|
||||
def print_bsp_list(self, bsp_list):
|
||||
for bsp in bsp_list:
|
||||
if bsp.is_sure:
|
||||
print(bsp.klc.start_time, bsp.type, bsp.dir, bsp.sure_time, bsp.zs_count, len(bsp.zs.bi_out_list), bsp.dir, bsp.seg.dir, bsp.bi.dir)
|
||||
else:
|
||||
print(bsp.klc.start_time, bsp.type, bsp.dir, bsp.zs_count, len(bsp.zs.bi_out_list), bsp.dir, bsp.seg.dir, bsp.bi.dir)
|
||||
def print_bi(self, bi_list):
|
||||
for bi in bi_list:
|
||||
if bi.end_klc:
|
||||
if bi.sure_time:
|
||||
print(bi.start_klc.end_time, bi.end_klc.end_time, bi.dir)
|
||||
else:
|
||||
print(bi.start_klc.end_time, bi.end_klc.end_time, bi.dir)
|
||||
else:
|
||||
print(bi.start_klc.end_time, bi.dir, bi.is_sure)
|
||||
def calculate_bsp(self, dataframe, ticker_indicator):
|
||||
klu1, klc1, bi1 = self.get_list_by_time(dataframe, self.time1)
|
||||
klu3, klc3, bi3 = self.get_list_by_time(dataframe, self.time3)
|
||||
klu5, klc5, bi5 = self.get_list_by_time(dataframe, self.time5)
|
||||
klu15, klc15, bi15 = self.get_list_by_time(dataframe, self.time15)
|
||||
|
||||
return dataframe
|
||||
def get_list_by_time(self, dataframe, ticker_indicator, time):
|
||||
df = None
|
||||
if time > 1:
|
||||
df = resample_to_interval(dataframe, ticker_indicator)
|
||||
else:
|
||||
df = dataframe
|
||||
klu_list = self.get_klu_list(df)
|
||||
klc_list = self.get_klc_list(klc_list)
|
||||
bi_list = self.cal_bi_list(klc_list)
|
||||
return klu_list, klc_list, bi_list
|
||||
def check_fx(self, klc):
|
||||
if klc.pre and klc.next:
|
||||
if klc.high > klc.pre.high and klc.high > klc.next.high:
|
||||
if klc.pre.pre and klc.high > klc.pre.pre.high and klc.next.next and klc.high > klc.next.next.high:
|
||||
klc.set_fx(Chan_FX_TYPE.TOP)
|
||||
if klc.pre.pre.pre and klc.high > klc.pre.pre.pre.high and klc.next.next.next and klc.high > klc.next.next.next.high:
|
||||
klc.set_fx(Chan_FX_TYPE.TOP)
|
||||
#print(klc.start_time, klc.end_time,klc.next.start_time, klc.next.end_time,klc.fx, "TOP")
|
||||
return Chan_FX_TYPE.TOP
|
||||
if klc.macd > 0 and klc.macd > klc.signal and klc.signal > klc.macdhist:
|
||||
klc.set_fx(Chan_FX_TYPE.TOP)
|
||||
#print(klc.start_time, klc.end_time,klc.next.start_time, klc.next.end_time,klc.fx, "TOP")
|
||||
return Chan_FX_TYPE.TOP
|
||||
elif klc.low < klc.pre.low and klc.low < klc.next.low:
|
||||
if klc.pre.pre and klc.low < klc.pre.pre.low and klc.next.next and klc.low < klc.next.next.low:
|
||||
klc.set_fx(Chan_FX_TYPE.BOTTOM)
|
||||
if klc.pre.pre.pre and klc.low < klc.pre.pre.pre.low and klc.next.next.next and klc.low < klc.next.next.next.low:
|
||||
klc.set_fx(Chan_FX_TYPE.BOTTOM)
|
||||
#print(klc.start_time, klc.end_time,klc.next.start_time, klc.next.end_time,klc.fx, "BOTTOM")
|
||||
return Chan_FX_TYPE.BOTTOM
|
||||
if klc.macd < 0 and klc.macd < klc.signal and klc.signal < klc.macdhist:
|
||||
klc.set_fx(Chan_FX_TYPE.BOTTOM)
|
||||
#print(klc.start_time, klc.end_time,klc.next.start_time, klc.next.end_time,klc.fx, "BOTTOM")
|
||||
return Chan_FX_TYPE.BOTTOM
|
||||
return Chan_FX_TYPE.UNKNOWN
|
||||
def plot_dataframe(self, dataframe):
|
||||
klc_list = self.get_klc_list(dataframe)
|
||||
bi_list= self.cal_bi_list(klc_list)
|
||||
def get_klu_state_list(self, dataframe):
|
||||
dataframe3 = resample_to_interval(dataframe, self.time3)
|
||||
dataframe5 = resample_to_interval(dataframe, self.time5)
|
||||
dataframe15 = resample_to_interval(dataframe, self.time15)
|
||||
dataframe30 = resample_to_interval(dataframe, self.time30)
|
||||
dataframe60 = resample_to_interval(dataframe, self.time60)
|
||||
dataframe2h = resample_to_interval(dataframe, self.time2h)
|
||||
dataframe6h = resample_to_interval(dataframe, self.time6h)
|
||||
dataframe8h = resample_to_interval(dataframe, self.time8h)
|
||||
dataframe12h = resample_to_interval(dataframe, self.time12h)
|
||||
dataframe4h = resample_to_interval(dataframe, self.time4h)
|
||||
dataframe1d = resample_to_interval(dataframe, self.time1d)
|
||||
dataframe = self.add_indicators(dataframe)
|
||||
dataframe3 = self.add_indicators(dataframe3)
|
||||
dataframe5 = self.add_indicators(dataframe5)
|
||||
dataframe15 = self.add_indicators(dataframe15)
|
||||
dataframe30 = self.add_indicators(dataframe30)
|
||||
dataframe60 = self.add_indicators(dataframe60)
|
||||
dataframe2h = self.add_indicators(dataframe2h)
|
||||
dataframe6h = self.add_indicators(dataframe6h)
|
||||
dataframe8h = self.add_indicators(dataframe8h)
|
||||
dataframe12h = self.add_indicators(dataframe12h)
|
||||
dataframe4h = self.add_indicators(dataframe4h)
|
||||
dataframe1d = self.add_indicators(dataframe1d)
|
||||
|
||||
return state_list
|
||||
def add_indicators(self, df):
|
||||
fast = 12
|
||||
slow = 26
|
||||
@@ -660,6 +622,7 @@ class ChanLun():
|
||||
|
||||
# Do nothing
|
||||
if fx == Chan_FX_TYPE.UNKNOWN:
|
||||
continue
|
||||
if len(bi_list) > 0 and klc.end_klu:
|
||||
last_bi = bi_list[-1]
|
||||
#print(klc.start_time, last_bi.start_time, last_bi.end_time, last_bi.dir, last_bi.high, last_bi.low, last_bottom.end_time, "last bi")
|
||||
|
||||
Reference in New Issue
Block a user