修改了bsp state,继续测试
This commit is contained in:
@@ -157,41 +157,16 @@ class TF_DF():
|
||||
klu_state_list.append("00")
|
||||
print(klu_state_list[:20])
|
||||
return klu_state_list
|
||||
def get_bsp_signal_data(self, dataframe):
|
||||
|
||||
def get_bsp_state(self, dataframe):
|
||||
klu_list = self.get_klu_list(dataframe)
|
||||
klc_list = self.get_klc_list(klu_list)
|
||||
bi_list = self.cal_bi_list(klc_list)
|
||||
bi_zs_list = self.cal_bi_zs_list_pure(bi_list)
|
||||
seg_list = self.get_seg_list(bi_list)
|
||||
bi_zs_list = self.cal_bi_zs(seg_list)
|
||||
bsp_list = self.find_all_bsp(bi_list, bi_zs_list)
|
||||
bsp_by_bi_type = {}
|
||||
for bsp in bsp_list:
|
||||
if bsp and bsp.bi:
|
||||
bsp_by_bi_type[(bsp.bi.index, bsp.type)] = bsp
|
||||
bsp_state_list = [0] * len(dataframe)
|
||||
bsp_zg_list = [0.0] * len(dataframe)
|
||||
bsp_zd_list = [0.0] * len(dataframe)
|
||||
bsp_stop_price_list = [0.0] * len(dataframe)
|
||||
bsp_risk_ratio_list = [0.0] * len(dataframe)
|
||||
klc_index = 0
|
||||
def set_bsp_signal(index, state, bsp):
|
||||
bsp_state_list[index] = state
|
||||
if not bsp or not bsp.zs:
|
||||
return
|
||||
close = float(dataframe.iloc[index]['close'])
|
||||
atr = float(dataframe.iloc[index]['atr']) if 'atr' in dataframe.columns and not pd.isna(dataframe.iloc[index]['atr']) else 0.0
|
||||
atr_ratio = atr / close if close > 0 else 0.0
|
||||
buffer = atr * 0.1
|
||||
bsp_zg_list[index] = bsp.zs.zg
|
||||
bsp_zd_list[index] = bsp.zs.zd
|
||||
if state == -1:
|
||||
stop_price = bsp.zs.zg - buffer
|
||||
risk_ratio = (close - stop_price) / close if close > stop_price else atr_ratio
|
||||
else:
|
||||
stop_price = bsp.zs.zd + buffer
|
||||
risk_ratio = (stop_price - close) / close if close < stop_price else atr_ratio
|
||||
bsp_stop_price_list[index] = stop_price
|
||||
bsp_risk_ratio_list[index] = max(0.001, min(float(risk_ratio), 0.02))
|
||||
|
||||
for index in range(0, len(dataframe)):
|
||||
if klc_index == len(klc_list):
|
||||
klc_index = len(klc_list) - 1
|
||||
@@ -201,7 +176,7 @@ class TF_DF():
|
||||
bi = klc.bi.pre
|
||||
if bi and bi.is_sure and bi.end_klc.bsp_type == Chan_BSP_TYPE.B3:
|
||||
# 第三类买点
|
||||
set_bsp_signal(index, -1, bsp_by_bi_type.get((bi.index, Chan_BSP_TYPE.B3)))
|
||||
bsp_state_list[index] = -1
|
||||
#print(klc.end_time, "B3")
|
||||
else:
|
||||
bsp_state_list[index] = 0
|
||||
@@ -209,22 +184,14 @@ class TF_DF():
|
||||
bi = klc.bi.pre
|
||||
if bi and bi.is_sure and bi.end_klc.bsp_type == Chan_BSP_TYPE.S3:
|
||||
# 第三类卖点
|
||||
set_bsp_signal(index, 1, bsp_by_bi_type.get((bi.index, Chan_BSP_TYPE.S3)))
|
||||
bsp_state_list[index] = 1
|
||||
#print(klc.end_time, "S3")
|
||||
else:
|
||||
bsp_state_list[index] = 0
|
||||
klc_index += 1
|
||||
else:
|
||||
bsp_state_list[index] = 0
|
||||
return {
|
||||
'bsp_state': bsp_state_list,
|
||||
'bsp_zg': bsp_zg_list,
|
||||
'bsp_zd': bsp_zd_list,
|
||||
'bsp_stop_price': bsp_stop_price_list,
|
||||
'bsp_risk_ratio': bsp_risk_ratio_list,
|
||||
}
|
||||
def get_bsp_state(self, dataframe):
|
||||
return self.get_bsp_signal_data(dataframe)['bsp_state']
|
||||
return bsp_state_list
|
||||
def get_ema_state(self, dataframe):
|
||||
klu_list = self.get_klu_list(dataframe)
|
||||
klc_list = self.get_klc_list(klu_list)
|
||||
|
||||
Reference in New Issue
Block a user