add more strategies
This commit is contained in:
+13
-99
@@ -97,6 +97,14 @@ class ChanLun():
|
||||
state_list = []
|
||||
if len(klc_list) > 0:
|
||||
klc_index = 0
|
||||
# 添加趋势强度判断
|
||||
dataframe['trend_strength'] = abs(dataframe['close'].pct_change(20))
|
||||
|
||||
# 添加波动率判断
|
||||
dataframe['volatility'] = dataframe['close'].pct_change().rolling(window=20).std()
|
||||
|
||||
# 添加成交量趋势
|
||||
dataframe['volume_trend'] = dataframe['volume'].rolling(window=20).mean()
|
||||
for index in range(0, len(dataframe)):
|
||||
if klc_index == len(klc_list):
|
||||
klc_index = len(klc_list) - 1
|
||||
@@ -1214,105 +1222,9 @@ class ChanLun():
|
||||
klc.set_end_klu(klu)
|
||||
return klc_list
|
||||
|
||||
|
||||
def get_bsp_list1(self, big_df):
|
||||
big_bi_list = self.get_bi_list(big_df)
|
||||
big_seg_list = self.get_seg_list(big_bi_list)
|
||||
big_zs_list = self.get_zs_list(big_bi_list, big_seg_list)
|
||||
big_bi_macd_div_list = self.get_bi_macd_div_list(big_bi_list, big_df)
|
||||
big_seg_macd_div_list = self.get_seg_macd_div_list(big_seg_list, big_df)
|
||||
big_bi_macd_hist_list = self.get_bi_macd_hist_list(big_bi_list, big_df)
|
||||
big_seg_macd_hist_list = self.get_seg_macd_hist_list(big_seg_list, big_df)
|
||||
for index in range(0, len(big_seg_list)):
|
||||
big_seg = big_seg_list[index]
|
||||
if big_seg.end_bi:
|
||||
if big_seg.dir == Chan_SEG_DIR.UP:
|
||||
if big_seg.end_bi.index - big_seg.start_bi.index > 1:
|
||||
max_high = big_seg.start_bi.high
|
||||
for bi_index in range(big_seg.start_bi.index + 2, big_seg.end_bi.index + 1):
|
||||
bi = big_bi_list[bi_index]
|
||||
#print("MACD DIV: ", big_bi_macd_hist_list[index]/big_bi_macd_hist_list[index - 2])
|
||||
if bi.is_sure and bi.dir == Chan_BI_DIR.UP:
|
||||
if bi.high > max_high:
|
||||
max_high = bi.high
|
||||
if big_bi_macd_hist_list[bi_index - 2] > 0.0:
|
||||
bi_macd_div = big_bi_macd_hist_list[bi_index]/big_bi_macd_hist_list[bi_index - 2]
|
||||
if bi_macd_div < 0.01 and len(big_bi_list) - big_seg.start_bi.index > 4 and big_bi_macd_hist_list[bi_index - 4] > 0.0:
|
||||
bi_macd_div = big_bi_macd_hist_list[bi_index]/big_bi_macd_hist_list[bi_index - 4]
|
||||
else:
|
||||
if len(big_bi_list) - big_seg.start_bi.index > 4 and big_bi_macd_hist_list[bi_index - 4] > 0.0:
|
||||
bi_macd_div = big_bi_macd_hist_list[bi_index]/big_bi_macd_hist_list[bi_index - 4]
|
||||
else:
|
||||
bi_macd_div = 0.0
|
||||
macd_index = bi.end_klc.end_klu.index
|
||||
if bi_macd_div < 0.8 and bi_macd_div > 0.01 and big_df['macd'][macd_index] > 0 and big_df['macdsignal'][macd_index] > 0:
|
||||
print("UP SEG Possible BSP:", bi.start_klc.end_time, bi_macd_div)
|
||||
else:
|
||||
if big_seg.end_bi.index - big_seg.start_bi.index > 1:
|
||||
max_low = big_seg.start_bi.low
|
||||
for bi_index in range(big_seg.start_bi.index + 2, big_seg.end_bi.index + 1):
|
||||
bi = big_bi_list[bi_index]
|
||||
if bi.is_sure and bi.dir == Chan_BI_DIR.DOWN:
|
||||
#print("DOWN: ", max_low, bi.low)
|
||||
if bi.low < max_low:
|
||||
max_low = bi.low
|
||||
if big_bi_macd_hist_list[bi_index - 2] > 0.0:
|
||||
bi_macd_div = big_bi_macd_hist_list[bi_index]/big_bi_macd_hist_list[bi_index - 2]
|
||||
if bi_macd_div < 0.01 and len(big_bi_list) - big_seg.start_bi.index > 4 and big_bi_macd_hist_list[bi_index - 4] > 0.0:
|
||||
bi_macd_div = big_bi_macd_hist_list[bi_index]/big_bi_macd_hist_list[bi_index - 4]
|
||||
else:
|
||||
if len(big_bi_list) - big_seg.start_bi.index > 4 and big_bi_macd_hist_list[bi_index - 4] > 0.0:
|
||||
bi_macd_div = big_bi_macd_hist_list[bi_index]/big_bi_macd_hist_list[bi_index - 4]
|
||||
else:
|
||||
bi_macd_div = 0.0
|
||||
macd_index = bi.end_klc.end_klu.index
|
||||
if bi_macd_div < 0.8 and bi_macd_div > 0.01 and big_df['macd'][macd_index] < 0 and big_df['macdsignal'][macd_index] < 0:
|
||||
print("DOWN SEG Possible BSP:", bi.start_klc.end_time, bi_macd_div)
|
||||
else:
|
||||
print("Not completed segment.", len(big_bi_list) - big_seg.start_bi.index, big_seg.dir)
|
||||
if big_seg.dir == Chan_SEG_DIR.UP:
|
||||
if len(big_bi_list) - big_seg.start_bi.index > 1:
|
||||
max_high = big_seg.start_bi.high
|
||||
for bi_index in range(big_seg.start_bi.index + 2, len(big_bi_list)):
|
||||
bi = big_bi_list[bi_index]
|
||||
#print("MACD DIV: ", big_bi_macd_hist_list[index]/big_bi_macd_hist_list[index - 2])
|
||||
if bi.is_sure and bi.dir == Chan_BI_DIR.UP:
|
||||
if bi.high > max_high:
|
||||
max_high = bi.high
|
||||
if big_bi_macd_hist_list[bi_index - 2] > 0.0:
|
||||
bi_macd_div = big_bi_macd_hist_list[bi_index]/big_bi_macd_hist_list[bi_index - 2]
|
||||
if bi_macd_div < 0.01 and len(big_bi_list) - big_seg.start_bi.index > 4 and big_bi_macd_hist_list[bi_index - 4] > 0.0:
|
||||
bi_macd_div = big_bi_macd_hist_list[bi_index]/big_bi_macd_hist_list[bi_index - 4]
|
||||
else:
|
||||
if len(big_bi_list) - big_seg.start_bi.index > 4 and big_bi_macd_hist_list[bi_index - 4] > 0.0:
|
||||
bi_macd_div = big_bi_macd_hist_list[bi_index]/big_bi_macd_hist_list[bi_index - 4]
|
||||
else:
|
||||
bi_macd_div = 0.0
|
||||
macd_index = len(big_df) - 1
|
||||
if bi_macd_div < 0.8 and bi_macd_div > 0.01 and big_df['macd'][macd_index] > 0 and big_df['macdsignal'][macd_index] > 0:
|
||||
print("UP SEG Possible BSP:", bi.start_klc.end_time, bi_macd_div)
|
||||
else:
|
||||
if len(big_bi_list) - big_seg.start_bi.index > 1:
|
||||
max_low = big_seg.start_bi.low
|
||||
for bi_index in range(big_seg.start_bi.index + 2, len(big_bi_list)):
|
||||
bi = big_bi_list[bi_index]
|
||||
#print("MACD DIV: ", big_bi_macd_hist_list[index]/big_bi_macd_hist_list[index - 2])
|
||||
if bi.is_sure and bi.dir == Chan_BI_DIR.DOWN:
|
||||
if bi.low < max_low:
|
||||
max_low = bi.low
|
||||
if big_bi_macd_hist_list[bi_index - 2] > 0.0:
|
||||
bi_macd_div = big_bi_macd_hist_list[bi_index]/big_bi_macd_hist_list[bi_index - 2]
|
||||
if bi_macd_div < 0.01 and len(big_bi_list) - big_seg.start_bi.index > 4 and big_bi_macd_hist_list[bi_index - 4] > 0.0:
|
||||
bi_macd_div = big_bi_macd_hist_list[bi_index]/big_bi_macd_hist_list[bi_index - 4]
|
||||
else:
|
||||
if len(big_bi_list) - big_seg.start_bi.index > 4 and big_bi_macd_hist_list[bi_index - 4] > 0.0:
|
||||
bi_macd_div = big_bi_macd_hist_list[bi_index]/big_bi_macd_hist_list[bi_index - 4]
|
||||
else:
|
||||
bi_macd_div = 0.0
|
||||
macd_index = len(big_df) - 1
|
||||
if bi_macd_div < 0.8 and bi_macd_div > 0.01 and big_df['macd'][macd_index] < 0 and big_df['macdsignal'][macd_index] < 0:
|
||||
print("DOWN SEG Possible BSP:", bi.start_klc.end_time, bi_macd_div)
|
||||
|
||||
# ================================================
|
||||
# 计算BSP列表
|
||||
# ================================================
|
||||
def get_bsp_list(self, big_df):
|
||||
big_bi_list = self.get_bi_list(big_df)
|
||||
big_seg_list = self.get_seg_list(big_bi_list)
|
||||
@@ -1501,6 +1413,8 @@ class ChanLun():
|
||||
print(bsp.bi.end_klc.end_time, bsp.sure_time, bsp.dir, bsp.seg.dir, bsp.bi.macd_div)
|
||||
return bi_bsp_list
|
||||
|
||||
# ================================================
|
||||
# 第三类买卖点
|
||||
def find_third_bsp(self, zs_list):
|
||||
bsp_list = []
|
||||
zs_count = 0
|
||||
|
||||
Reference in New Issue
Block a user