添加识别klc_state,macd参数调整

macd调整为26,52
顶底之间间隔7个klc
This commit is contained in:
jackyu66git
2026-04-01 11:11:51 +08:00
parent b6b6cb94c0
commit 6538982d24
4 changed files with 30 additions and 39 deletions
+2 -2
View File
@@ -358,7 +358,7 @@ class ChanKLC():
self.fx_confirmed = True self.fx_confirmed = True
self.fx_box = Chan_FX_Box.Chan_FX_Box(start_time, end_time, high, low) self.fx_box = Chan_FX_Box.Chan_FX_Box(start_time, end_time, high, low)
def check_fx_confirmed(self, last_top, last_bottom): 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 last_top.index > last_bottom.index:
if self.in_fx == False and last_top.fx_confirmed == False: if self.in_fx == False and last_top.fx_confirmed == False:
pre = last_top.pre pre = last_top.pre
@@ -401,7 +401,7 @@ class ChanKLC():
self.klc_state = Chan_KLC_STATE.S10 self.klc_state = Chan_KLC_STATE.S10
elif self.pre and self.pre.fx == Chan_FX_TYPE.BOTTOM: elif self.pre and self.pre.fx == Chan_FX_TYPE.BOTTOM:
self.klc_state = Chan_KLC_STATE.S_10 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): def set_end_klu(self, klu):
self.end_klu = klu self.end_klu = klu
self.end_time = klu.time self.end_time = klu.time
+12 -20
View File
@@ -137,32 +137,24 @@ class TF_DF():
klc_index = len(klc_list) - 1 klc_index = len(klc_list) - 1
klc = klc_list[klc_index] klc = klc_list[klc_index]
if klc.end_klu and klc.end_klu.idx == 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") klu_state_list.append("10")
#print(klc.end_time, klc.klc_fx_type) #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") klu_state_list.append("-10")
#print(klc.end_time, klc.klc_fx_type) #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: else:
if klc.continue_div: klu_state_list.append("00")
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")
klc_index += 1 klc_index += 1
else: else:
klu_state_list.append("00") klu_state_list.append("00")
print(klu_state_list[:20])
return klu_state_list return klu_state_list
def get_ema_state(self, dataframe): def get_ema_state(self, dataframe):
@@ -918,10 +910,10 @@ class TF_DF():
bi_list = [] bi_list = []
last_top = None last_top = None
last_bottom = None last_bottom = None
bi_klc_min = 3 bi_klc_min = 7
last_fx_klc = None last_fx_klc = None
for klc in klc_list: 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_klc_state(last_fx_klc)
klc.check_fx_confirmed(last_top, last_bottom) klc.check_fx_confirmed(last_top, last_bottom)
fx = self.check_fx(klc) fx = self.check_fx(klc)
+14 -15
View File
@@ -121,6 +121,7 @@ class ChanLun_BTC_30(IStrategy):
#dataframe_5['chanpy_state'] = chanpy_state #dataframe_5['chanpy_state'] = chanpy_state
#state_list = self.chan.get_klu_state(dataframe_3) #state_list = self.chan.get_klu_state(dataframe_3)
#dataframe_3['state'] = state_list #dataframe_3['state'] = state_list
dataframe['state'] = self.chan.get_klu_state(dataframe)
state_list = self.chan.get_klu_state(dataframe_5) state_list = self.chan.get_klu_state(dataframe_5)
dataframe_5['state'] = state_list dataframe_5['state'] = state_list
#state_list = self.chan.get_klu_state(dataframe_15) #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: def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
shift30 = self.time30 shift30 = self.time30
state30 = 'resample_{}_state'.format(self.get_ticker_indicator()*shift30) state30 = 'resample_{}_state'.format(self.get_ticker_indicator()*shift30)
shift5 = self.time5
state5 = 'resample_{}_state'.format(self.get_ticker_indicator()*shift5)
dataframe.loc[ dataframe.loc[
( (
(dataframe[state30].shift(shift30) == "-10") | (dataframe[state30].shift(shift30) == "11") &
(dataframe[state30].shift(shift30) == "-20") | (dataframe[state5].shift(shift5) == "-10") &
(dataframe[state30].shift(shift30) == "-30") (dataframe['state'].shift(1) == "11")
), ),
['enter_long', 'enter_tag']] = (1, 'long_10') ['enter_long', 'enter_tag']] = (1, 'long')
dataframe.loc[ dataframe.loc[
( (
(dataframe[state30].shift(shift30) == "10") | (dataframe[state30].shift(shift30) == "-11") &
(dataframe[state30].shift(shift30) == "20") | (dataframe[state5].shift(shift5) == "10") &
(dataframe[state30].shift(shift30) == "30") (dataframe['state'].shift(1) == "-11")
), ),
['enter_short', 'enter_tag']] = (1, 'short_10') ['enter_short', 'enter_tag']] = (1, 'short')
return dataframe return dataframe
def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> 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) state30 = 'resample_{}_state'.format(self.get_ticker_indicator()*shift30)
dataframe.loc[ dataframe.loc[
( (
(dataframe[state30].shift(shift30) == "10") | (dataframe[state30].shift(shift30) == "10")
(dataframe[state30].shift(shift30) == "20") |
(dataframe[state30].shift(shift30) == "30")
), ),
['exit_long', 'exit_tag']] = (1, 'long_close_30') ['exit_long', 'exit_tag']] = (1, 'long_close_30')
dataframe.loc[ dataframe.loc[
( (
(dataframe[state30].shift(shift30) == "-10") | (dataframe[state30].shift(shift30) == "-10")
(dataframe[state30].shift(shift30) == "-20") |
(dataframe[state30].shift(shift30) == "-30")
), ),
['exit_short', 'exit_tag']] = (1, 'short_close_30') ['exit_short', 'exit_tag']] = (1, 'short_close_30')
return dataframe return dataframe
+2 -2
View File
@@ -509,8 +509,8 @@ def add_indicators(df):
def calculate_macd(df): def calculate_macd(df):
"""计算MACD指标""" """计算MACD指标"""
exp1 = df['close'].ewm(span=12, adjust=False).mean() exp1 = df['close'].ewm(span=26, adjust=False).mean()
exp2 = df['close'].ewm(span=26, adjust=False).mean() exp2 = df['close'].ewm(span=52, adjust=False).mean()
macd = exp1 - exp2 macd = exp1 - exp2
signal = macd.ewm(span=9, adjust=False).mean() signal = macd.ewm(span=9, adjust=False).mean()
histogram = macd - signal histogram = macd - signal