diff --git a/ChanKLC.py b/ChanKLC.py index 18b12ff..1643752 100644 --- a/ChanKLC.py +++ b/ChanKLC.py @@ -358,7 +358,7 @@ class ChanKLC(): self.fx_confirmed = True self.fx_box = Chan_FX_Box.Chan_FX_Box(start_time, end_time, high, low) def check_fx_confirmed(self, last_top, last_bottom): - if last_top and last_bottom: + if last_top and last_bottom and False: if last_top.index > last_bottom.index: if self.in_fx == False and last_top.fx_confirmed == False: pre = last_top.pre @@ -401,7 +401,7 @@ class ChanKLC(): self.klc_state = Chan_KLC_STATE.S10 elif self.pre and self.pre.fx == Chan_FX_TYPE.BOTTOM: self.klc_state = Chan_KLC_STATE.S_10 - print(self.end_time, self.klc_state) + #print(self.end_time, self.klc_state) def set_end_klu(self, klu): self.end_klu = klu self.end_time = klu.time diff --git a/TF_DF.py b/TF_DF.py index ff3e809..8d75610 100644 --- a/TF_DF.py +++ b/TF_DF.py @@ -137,32 +137,24 @@ class TF_DF(): klc_index = len(klc_list) - 1 klc = klc_list[klc_index] if klc.end_klu and klc.end_klu.idx == index: - if klc.klc_fx_type == Chan_KLC_FX.TOP1 or klc.klc_fx_type == Chan_KLC_FX.TOP2: + if klc.klc_state == Chan_KLC_STATE.S10: klu_state_list.append("10") #print(klc.end_time, klc.klc_fx_type) - elif klc.klc_fx_type == Chan_KLC_FX.BOTTOM1 or klc.klc_fx_type == Chan_KLC_FX.BOTTOM2: + elif klc.klc_state == Chan_KLC_STATE.S_10: klu_state_list.append("-10") #print(klc.end_time, klc.klc_fx_type) + elif klc.klc_state == Chan_KLC_STATE.S11: + klu_state_list.append("11") + #print(klc.end_time, klc.klc_fx_type) + elif klc.klc_state == Chan_KLC_STATE.S_11: + klu_state_list.append("-11") + #print(klc.end_time, klc.klc_fx_type) else: - if klc.continue_div: - if klc.macdhist > 0: - klu_state_list.append("20") - #print(klc.end_time, "CD", 20) - else: - klu_state_list.append("-20") - #print(klc.end_time, "CD", -20) - elif klc.separate_div: - if klc.macdhist > 0: - klu_state_list.append("30") - #print(klc.end_time, "SD", 30) - else: - klu_state_list.append("-30") - #print(klc.end_time, "SD", -30) - else: - klu_state_list.append("00") + klu_state_list.append("00") klc_index += 1 else: klu_state_list.append("00") + print(klu_state_list[:20]) return klu_state_list def get_ema_state(self, dataframe): @@ -918,10 +910,10 @@ class TF_DF(): bi_list = [] last_top = None last_bottom = None - bi_klc_min = 3 + bi_klc_min = 7 last_fx_klc = None for klc in klc_list: - if last_fx_klc and klc.index > len(klc_list) - 5: + if last_fx_klc: klc.check_klc_state(last_fx_klc) klc.check_fx_confirmed(last_top, last_bottom) fx = self.check_fx(klc) diff --git a/strategies/ChanLun_BTC_30.py b/strategies/ChanLun_BTC_30.py index 1b777b8..5a6efe6 100644 --- a/strategies/ChanLun_BTC_30.py +++ b/strategies/ChanLun_BTC_30.py @@ -121,6 +121,7 @@ class ChanLun_BTC_30(IStrategy): #dataframe_5['chanpy_state'] = chanpy_state #state_list = self.chan.get_klu_state(dataframe_3) #dataframe_3['state'] = state_list + dataframe['state'] = self.chan.get_klu_state(dataframe) state_list = self.chan.get_klu_state(dataframe_5) dataframe_5['state'] = state_list #state_list = self.chan.get_klu_state(dataframe_15) @@ -329,36 +330,34 @@ class ChanLun_BTC_30(IStrategy): def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: shift30 = self.time30 state30 = 'resample_{}_state'.format(self.get_ticker_indicator()*shift30) + shift5 = self.time5 + state5 = 'resample_{}_state'.format(self.get_ticker_indicator()*shift5) dataframe.loc[ ( - (dataframe[state30].shift(shift30) == "-10") | - (dataframe[state30].shift(shift30) == "-20") | - (dataframe[state30].shift(shift30) == "-30") + (dataframe[state30].shift(shift30) == "11") & + (dataframe[state5].shift(shift5) == "-10") & + (dataframe['state'].shift(1) == "11") ), - ['enter_long', 'enter_tag']] = (1, 'long_10') + ['enter_long', 'enter_tag']] = (1, 'long') dataframe.loc[ ( - (dataframe[state30].shift(shift30) == "10") | - (dataframe[state30].shift(shift30) == "20") | - (dataframe[state30].shift(shift30) == "30") + (dataframe[state30].shift(shift30) == "-11") & + (dataframe[state5].shift(shift5) == "10") & + (dataframe['state'].shift(1) == "-11") ), - ['enter_short', 'enter_tag']] = (1, 'short_10') + ['enter_short', 'enter_tag']] = (1, 'short') return dataframe def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: - shift30 = self.time30 + shift30 = self.time5 state30 = 'resample_{}_state'.format(self.get_ticker_indicator()*shift30) dataframe.loc[ ( - (dataframe[state30].shift(shift30) == "10") | - (dataframe[state30].shift(shift30) == "20") | - (dataframe[state30].shift(shift30) == "30") + (dataframe[state30].shift(shift30) == "10") ), ['exit_long', 'exit_tag']] = (1, 'long_close_30') dataframe.loc[ ( - (dataframe[state30].shift(shift30) == "-10") | - (dataframe[state30].shift(shift30) == "-20") | - (dataframe[state30].shift(shift30) == "-30") + (dataframe[state30].shift(shift30) == "-10") ), ['exit_short', 'exit_tag']] = (1, 'short_close_30') return dataframe diff --git a/web/app.py b/web/app.py index 887680d..b459607 100644 --- a/web/app.py +++ b/web/app.py @@ -509,8 +509,8 @@ def add_indicators(df): def calculate_macd(df): """计算MACD指标""" - exp1 = df['close'].ewm(span=12, adjust=False).mean() - exp2 = df['close'].ewm(span=26, adjust=False).mean() + exp1 = df['close'].ewm(span=26, adjust=False).mean() + exp2 = df['close'].ewm(span=52, adjust=False).mean() macd = exp1 - exp2 signal = macd.ewm(span=9, adjust=False).mean() histogram = macd - signal