添加识别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_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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user