添加识别klc_state,macd参数调整
macd调整为26,52 顶底之间间隔7个klc
This commit is contained in:
+2
-2
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user