def get_index_df(self, date): # 沪深大盘指数 # 如果文件存在就读取已有的数据, 如果没有, 就缓存起来 if self.stock_code.endswith('SH'): index_code = '000001.SH' else: index_code = '399001.SZ' file_name = saver.get_csv_name(date, index_code, self.start_date, self.end_date) if saver.check_file_existed(file_name): print('---- 读取csv数据 ----') df = saver.read_from_csv(file_name) else: if date == 'month': df = pro.index_monthly(ts_code=index_code, start_date=self.start_date, end_date=self.end_date, fields=self.fields) elif date == 'week': df = pro.index_weekly(ts_code=index_code, start_date=self.start_date, end_date=self.end_date, fields=self.fields) else: df = pro.index_daily(ts_code=index_code, start_date=self.start_date, end_date=self.end_date, fields=self.fields) print('---- 保存csv数据 ----') if len(df) != 0: saver.save_csv(df, file_name) return df
def get_filtered_stocks(self, pe=100, total_mv=1500000, turnover_rate=3): # 如果文件存在就读取已有的数据, 如果没有, 就缓存起来 stock_name = saver.get_csv_data_name('stock_info', 'recommended', end_date=self.last_bus_day) if saver.check_file_existed(stock_name): print('---- 读取csv数据 ----') df = saver.read_from_csv(stock_name) else: df = pro.daily_basic( ts_code='', trade_date=self.last_bus_day, fields='ts_code,trade_date,turnover_rate,pe,total_mv') # --------------------------------------- # 自定义过滤条件, pe 静态市盈率, total_mv 总市值, turnover_rate 换手率 df = df.drop(df[(df['pe'] < 0) | (df['pe'] > pe) | (df['total_mv'] < total_mv) | (df['turnover_rate'] < turnover_rate)].index) # --------------------------------------- # 删除有空NaN的行 df = df.dropna(axis=0, how='any') if len(df) != 0: saver.save_csv(df, stock_name) return df
def get_stock_list(self): # 股票列表 file_name = saver.get_csv_data_name('stock_info', 'stock_list', self.end_date) if saver.check_file_existed(file_name): print('---- 读取csv数据 ----') df = saver.read_from_csv(file_name) else: df = pro.stock_basic(exchange='', list_status='L', fields='ts_code,symbol,name,area,industry,list_date') print('---- 保存csv数据 ----') if len(df) != 0: saver.save_csv(df, file_name) return df
def get_stock_info_df(self): # 通用行情接口, 换手率tor,量比vr, 均线 # 如果文件存在就读取已有的数据, 如果没有, 就缓存起来 file_name = saver.get_csv_name('stock_info', self.stock_code, self.start_date, self.end_date) if saver.check_file_existed(file_name): print('---- 读取csv数据 ----') df = saver.read_from_csv(file_name) else: # 换手率tor,量比vr, 均线 df = ts.pro_bar(ts_code=self.stock_code, start_date=self.start_date, end_date=self.end_date, factors=['tor', 'vr'], ma=[5, 20, 60]) print('---- 保存csv数据 ----') if len(df) != 0: saver.save_csv(df, file_name) return df
def get_all_stocks(self): # 如果文件存在就读取已有的数据, 如果没有, 就缓存起来 stock_list_name = saver.get_csv_data_name('stocks', 'all', end_date=self.last_bus_day) if saver.check_file_existed(stock_list_name): print('---- 读取csv数据 ----') data_list = saver.read_from_csv(stock_list_name) else: data_list = pro.stock_basic( exchange='', list_status='L', fields='ts_code,symbol,name,area,industry,list_date') if len(data_list) != 0: saver.save_csv(data_list, stock_list_name) return data_list
def get_stock_df(self, date): # 单个股票的数据 # 如果文件存在就读取已有的数据, 如果没有, 就缓存起来 file_name = saver.get_csv_name(date, self.stock_code, self.start_date, self.end_date) if saver.check_file_existed(file_name): print('---- 读取csv数据 ----') df = saver.read_from_csv(file_name) else: if date == 'month': df = pro.monthly(ts_code=self.stock_code, start_date=self.start_date, end_date=self.end_date, fields=self.fields) elif date == 'week': df = pro.weekly(ts_code=self.stock_code, start_date=self.start_date, end_date=self.end_date, fields=self.fields) else: df = pro.daily(ts_code=self.stock_code, start_date=self.start_date, end_date=self.end_date, fields=self.fields) print('---- 保存csv数据 ----') if len(df) != 0: saver.save_csv(df, file_name) return df