diff --git a/czsc/sensors/plates.py b/czsc/sensors/plates.py index a181cb879..57b8ddea4 100644 --- a/czsc/sensors/plates.py +++ b/czsc/sensors/plates.py @@ -17,8 +17,8 @@ import pandas as pd from tqdm import tqdm from typing import Callable -from czsc.utils import WordWriter -from czsc.utils import io +from czsc import envs +from czsc.utils import WordWriter, io from czsc.data.ts_cache import TsDataCache, Freq from czsc.sensors.utils import get_index_beta, generate_signals, turn_over_rate, max_draw_down @@ -35,8 +35,7 @@ def __init__(self, dc: TsDataCache, get_signals: Callable, get_event: Callable, - ths_index_type='N', - verbose: bool = False): + ths_index_type='N'): """ :param results_path: 结果保存路径 @@ -46,7 +45,6 @@ def __init__(self, :param get_signals: 信号获取函数 :param get_event: 事件定义函数 :param ths_index_type: 同花顺指数类型 N-板块指数 I-行业指数 S-同花顺特色指数 - :param verbose: 是否返回更详细的执行过程 """ self.name = self.__class__.__name__ self.dc = dc @@ -57,7 +55,7 @@ def __init__(self, self.freqs = [Freq.W.value, Freq.M.value] self.dc = dc self.ths_index_type = ths_index_type - self.verbose = verbose + self.verbose = envs.get_verbose() self.cache = dict() self.results_path = results_path os.makedirs(self.results_path, exist_ok=True) @@ -181,6 +179,7 @@ def validate(self): trade_cal = trade_cal[trade_cal.is_open == 1] trade_dates = trade_cal[(trade_cal['cal_date'] >= self.sdt) & (trade_cal['cal_date'] <= self.edt)].cal_date.to_list() + n_cols = [x for x in self.ssd.columns if x[0] == 'n' and x[-1] == 'b'] holds = [] dfg_map = {trade_date.strftime("%Y%m%d"): dfg for trade_date, dfg in self.ssd.groupby('trade_date')} @@ -190,11 +189,11 @@ def validate(self): if self.verbose: print(f"{trade_date} 结果为空") row = {'trade_date': trade_date, 'number': 0} - row.update({k: 0 for k in ['n1b', 'n2b', 'n3b', 'n5b', 'n10b', 'n20b']}) + row.update({k: 0 for k in n_cols}) else: detail.append(dfg) row = {'trade_date': trade_date, 'number': len(dfg)} - row.update(dfg[['n1b', 'n2b', 'n3b', 'n5b', 'n10b', 'n20b']].mean().to_dict()) + row.update(dfg[n_cols].mean().to_dict()) daily.append(row) holds.append(self.create_next_positions(dfg)) @@ -209,7 +208,7 @@ def validate(self): "组合换手": tor, "平均数量": df_daily['number'].mean(), } - p.update(df_daily[['n1b', 'n2b', 'n3b', 'n5b', 'n10b', 'n20b']].mean().to_dict()) + p.update(df_daily[n_cols].mean().to_dict()) f = pd.ExcelWriter(os.path.join(self.results_path, "selected.xlsx")) df_detail.to_excel(f, index=False, sheet_name="强势板块") diff --git a/examples/ts_plates_sensor.py b/examples/ts_plates_sensor.py index 971f07fc6..f9b07bc02 100644 --- a/examples/ts_plates_sensor.py +++ b/examples/ts_plates_sensor.py @@ -25,13 +25,11 @@ def get_signals(cat: CzscAdvancedTrader) -> OrderedDict: def get_event(): - event = Event(name="SMA_V1", operate=Operate.LO, factors=[ + event = Event(name="SMA_V2", operate=Operate.LO, factors=[ Factor(name="日超强", signals_all=[ - Signal(k1='日线', k2='倒1K', k3='SMA120多空', v1='多头'), - Signal(k1='日线', k2='倒1K', k3='SMA120方向', v1='向上'), - Signal(k1='日线', k2='倒1K', k3='SMA20多空', v1='多头'), Signal(k1='日线', k2='倒1K', k3='SMA20方向', v1='向上'), + Signal(k1='日线', k2='倒1K', k3='SMA120方向', v1='向上'), ]), ]) return event