添加识别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_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
+12 -20
View File
@@ -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)
+14 -15
View File
@@ -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
+2 -2
View File
@@ -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