def queryForecastReport(code, starDate): list = [] data = query_forecast_report(code, start_date=starDate) while (data.error_code == '0') & data.next(): list.append(data.get_row_data()) data = pd.DataFrame(list, columns=data.fields) return data
def get_forecast_report_data(stock_number, stock_name, start_date, end_date): print('==========================================================') print("开始进行: " + stock_name + "(" + stock_number + ")" + "的数据处理") print("尝试登陆baostock") #####login##### lg = bs.login(user_id="anonymous", password="******") if (lg.error_code == '0'): print("登陆成功") else: print("登录失败") #####get stock data##### rs = bs.query_forecast_report(stock_number, start_date, end_date) print('请求历史数据返回代码:' + rs.error_code) print('请求历史数据返回信息:' + rs.error_msg) data_list = [] while (rs.error_code == '0') & rs.next(): data_list.append(rs.get_row_data()) result = pd.DataFrame(data_list, columns=rs.fields) bs.logout() print(stock_name + "(" + stock_number + ")" + "的数据处理完成") print('==========================================================') return result
def getPerformanceForecast(id: str, begin: str = None, end: str = None): data = BaoStock.query_forecast_report(id, begin, end).get_data() result = [] for row in data.iterrows(): result.append({getPerformanceForecastMap[key][0]: getPerformanceForecastMap[key][1]( row[1][key]) for key in data.keys() if key in getPerformanceForecastMap}) return result
def get_forecast_report_df(code: str, start_date: str, end_date: str) -> pd.DataFrame: column_mapping = { "profitForcastExpPubDate": "date", "profitForcastExpStatDate": "period", "value": "value", } resp = bs.query_forecast_report(code=code, start_date=start_date, end_date=end_date) forecast_list = [] while (resp.error_code == "0") and resp.next(): forecast_list.append(resp.get_row_data()) forecast_df = pd.DataFrame(forecast_list, columns=resp.fields) numeric_fields = ["profitForcastChgPctUp", "profitForcastChgPctDwn"] try: forecast_df[numeric_fields] = forecast_df[numeric_fields].apply( pd.to_numeric, errors="ignore") except KeyError: return pd.DataFrame() forecast_df["value"] = (forecast_df["profitForcastChgPctUp"] + forecast_df["profitForcastChgPctDwn"]) / 200 forecast_df = forecast_df[list(column_mapping.keys())] forecast_df.rename(columns=column_mapping, inplace=True) forecast_df["field"] = "YOYNI" return forecast_df
def query_forcast_report(code, start_date, end_date): """ 季频公司业绩预告 方法说明:通过API接口获取季频公司业绩预告信息,可以通过参数设置获取起止年份数据,提供2003年至今数据。 返回类型:pandas的DataFrame类型。 参数含义: code:股票代码,sh或sz.+6位数字代码,或者指数代码,如:sh.601398。sh:上海;sz:深圳。此参数不可为空; start_date:开始日期,发布日期或更新日期在这个范围内; end_date:结束日期,发布日期或更新日期在这个范围内。 """ lg = bs.login() if lg.error_code != '0': logger.error('login respond error_msg:' + lg.error_msg) rs_forecast = bs.query_forecast_report(code, start_date=start_date, end_date=end_date) if rs_forecast.error_code != '0': logger.error('query_forecast_reprot respond error_msg:' + rs_forecast.error_msg) rs_forecast_list = [] while (rs_forecast.error_code == '0') & rs_forecast.next(): rs_forecast_list.append(rs_forecast.get_row_data()) result_forecast = pd.DataFrame(rs_forecast_list, columns=rs_forecast.fields) bs.logout() return result_forecast
def query_forcast_report(self,code, start_date, end_date): ''' code:股票代码,sh或sz.+6位数字代码,或者指数代码,如:sh.601398。sh:上海;sz:深圳。此参数不可为空; start_date:开始日期,发布日期或更新日期在这个范围内; end_date:结束日期,发布日期或更新日期在这个范围内。 ''' rs_forecast = bs.query_forecast_report(code, start_date=start_date, end_date=end_date) self.log('query_forecast_reprot respond error_msg:', rs_forecast) rs_forecast_list = [] while (rs_forecast.error_code == '0') & rs_forecast.next(): # 分页查询,将每页信息合并在一起 rs_forecast_list.append(rs_forecast.get_row_data()) result_forecast = pd.DataFrame(rs_forecast_list, columns=rs_forecast.fields) return result_forecast
def get_forcast(code,start='2019-01-01',end='2020-02-02'): result_list = [] rs_forecast_list = [] # print(code,start, end) rs = bs.query_performance_express_report(code, start_date=start, end_date=end) while (rs.error_code == '0') & rs.next(): result_list.append(rs.get_row_data()) result = pd.DataFrame(result_list, columns=rs.fields) rs_forecast = bs.query_forecast_report(code, start_date=start, end_date=end) while (rs_forecast.error_code == '0') & rs_forecast.next(): rs_forecast_list.append(rs_forecast.get_row_data()) result_forecast = pd.DataFrame(rs_forecast_list, columns=rs_forecast.fields) return result,result_forecast
def query_forcast_report(self): """ 季频公司业绩预告:query_forcast_report() 方法说明:查询季频公司业绩预告信息,可以通过参数设置获取起止年份数据,提供2003年至今数据。 返回类型:pandas的DataFrame类型。 """ all_stock = pd.read_csv(self.path + "all_stock.csv") all_stock.drop_duplicates(subset=['code'], keep='first', inplace=True) #### 登陆系统 #### lg = bs.login() # 显示登陆返回信息 #print('login respond error_code:'+lg.error_code) #print('login respond error_msg:'+lg.error_msg) #### 获取公司业绩预告 #### result_all = pd.DataFrame([]) for code in all_stock.code: rs_forecast = bs.query_forecast_report(code, start_date=self.start_date, end_date=self.end_date) #print('query_forecast_reprot respond error_code:'+rs_forecast.error_code) #print('query_forecast_reprot respond error_msg:'+rs_forecast.error_msg) rs_forecast_list = [] while (rs_forecast.error_code == '0') & rs_forecast.next(): # 分页查询,将每页信息合并在一起 rs_forecast_list.append(rs_forecast.get_row_data()) result_forecast = pd.DataFrame(rs_forecast_list, columns=rs_forecast.fields) result_all = result_all.append(result_forecast) #### 结果集输出到csv文件 #### forecast_report = pd.read_csv(self.path + "forecast_report.csv") result_all = result_all.append(forecast_report) result_all.drop_duplicates(subset=[ 'code', 'profitForcastExpPubDate', 'profitForcastExpStatDate' ], keep='first', inplace=True) result_all.to_csv(self.path + "forecast_report.csv", encoding="gbk", index=False) #print(result_forecast) #### 登出系统 #### bs.logout() return
def GetCurrentStockFundamentals(self, *args, **kwargs): post_data_code = CheckKeyOrAbort(kStockCodeKey, kwargs) profit_data_handler = bs.query_profit_data(post_data_code) profit_data = profit_data_handler.get_data() operation_data_handler = bs.query_operation_data(post_data_code) operation_data = operation_data_handler.get_data() growth_data_handler = bs.query_growth_data(post_data_code) growth_data = growth_data_handler.get_data() balance_data_handler = bs.query_balance_data(post_data_code) balance_data = balance_data_handler.get_data() cash_flow_data_handler = bs.query_balance_data(post_data_code) cash_flow_data = cash_flow_data_handler.get_data() dupont_data_handler = bs.query_dupont_data(post_data_code) dupont_data = dupont_data_handler.get_data() performance_data_handler = bs.query_performance_express_report( post_data_code) performance_data = performance_data_handler.get_data() forecast_data_handler = bs.query_forecast_report(post_data_code) forecast_data = forecast_data_handler.get_data() return profit_data, operation_data, growth_data, balance_data, cash_flow_data, dupont_data, performance_data, forecast_data
import baostock as bs import pandas as pd #### 登陆系统 #### lg = bs.login() # 显示登陆返回信息 print('login respond error_code:' + lg.error_code) print('login respond error_msg:' + lg.error_msg) #### 获取公司业绩预告 #### rs_forecast = bs.query_forecast_report("sh.600000", start_date="2010-01-01", end_date="2017-12-31") print('query_forecast_reprot respond error_code:' + rs_forecast.error_code) print('query_forecast_reprot respond error_msg:' + rs_forecast.error_msg) rs_forecast_list = [] while (rs_forecast.error_code == '0') & rs_forecast.next(): # 分页查询,将每页信息合并在一起 rs_forecast_list.append(rs_forecast.get_row_data()) result_forecast = pd.DataFrame(rs_forecast_list, columns=rs_forecast.fields) #### 结果集输出到csv文件 #### result_forecast.to_csv("D:\\forecast_report.csv", encoding="gbk", index=False) print(result_forecast) #### 登出系统 #### bs.logout()
import baostock as bs import pandas as pd #### 登陆系统 #### lg = bs.login() # 显示登陆返回信息 print('login respond error_code:'+lg.error_code) print('login respond error_msg:'+lg.error_msg) #### 获取公司业绩预告 #### rs_forecast = bs.query_forecast_report("sh.600000", start_date="2020-01-01", end_date="2020-07-13") print('query_forecast_reprot respond error_code:'+rs_forecast.error_code) print('query_forecast_reprot respond error_msg:'+rs_forecast.error_msg) rs_forecast_list = [] while (rs_forecast.error_code == '0') & rs_forecast.next(): # 分页查询,将每页信息合并在一起 rs_forecast_list.append(rs_forecast.get_row_data()) result_forecast = pd.DataFrame(rs_forecast_list, columns=rs_forecast.fields) #### 结果集输出到csv文件 #### result_forecast.to_csv("D:\\forecast_report.csv", encoding="gbk", index=False) print(result_forecast) #### 登出系统 #### bs.logout()
def quarter_forecast_report(self, code, end_date, start_date='2003-01-01'): self.getStockInstance() rs = bs.query_forecast_report(code, start_date, end_date) self._test_rs(rs) return rs
query_date = "SELECT Date from tdx.recordtime WHERE ID = 'fcast'" cur_date.execute(query_date) s_date = cur_date.fetchone() start_date = str(s_date[0]) end_date = time.strftime("%Y-%m-%d") forcast_head = ['code','profitForcastExpPubDate','profitForcastExpStatDate','profitForcastType','profitForcastAbstract','profitForcastChgPctUp','profitForcastChgPctDwn'] count = 0 # 親數據 for code_item in code_item_list: code = code_item[1]+"."+code_item[0] rs_forcast = bs.query_forecast_report(code=code_item[1] + "." + code_item[0], start_date=start_date,end_date=end_date) while (rs_forcast.error_code == '0') & rs_forcast.next(): growth_list = rs_forcast.get_row_data() insert_sql = "INSERT INTO forcast(" value_sql = "VALUES(" value_list = [] for index in range(len(growth_list)): if growth_list[index] != '': insert_sql += forcast_head[index]+',' value_sql += "'%s'," value_list.append(growth_list[index]) insert_sql = insert_sql[:-1]
import baostock as bs import pandas as pd #### 登陆系统 #### lg = bs.login() # 显示登陆返回信息 print('login respond error_code:' + lg.error_code) print('login respond error_msg:' + lg.error_msg) #### 获取公司业绩预告 #### rs_forecast = bs.query_forecast_report("sz.000001", start_date="2017-01-01", end_date="2019-12-31") print('query_forecast_reprot respond error_code:' + rs_forecast.error_code) print('query_forecast_reprot respond error_msg:' + rs_forecast.error_msg) rs_forecast_list = [] while (rs_forecast.error_code == '0') & rs_forecast.next(): # 分页查询,将每页信息合并在一起 rs_forecast_list.append(rs_forecast.get_row_data()) result_forecast = pd.DataFrame(rs_forecast_list, columns=rs_forecast.fields) #### 结果集输出到csv文件 #### result_forecast.to_csv("D:\\forecast_report.csv", encoding="gbk", index=False) print(result_forecast) #### 登出系统 #### bs.logout()
def query_stock_forecast_report_summary(self, code, start_date, end_date): forecast_report_data = bs.query_forecast_report(code, start_date=start_date, end_date=end_date) return forecast_report_data
# 通过BaoStock获取业绩预报, #### 登陆系统 #### lg = bs.login() # 显示登陆返回信息 print('login respond error_code:' + lg.error_code) print('login respond error_msg:' + lg.error_msg) #### 获取公司业绩预告 #### rs_forecast = bs.query_forecast_report("sz.300001", start_date="2020-01-01", end_date="2020-04-11") print('query_forecast_reprot respond error_code:' + rs_forecast.error_code) print('query_forecast_reprot respond error_msg:' + rs_forecast.error_msg) rs_forecast_list = [] while (rs_forecast.error_code == '0') & rs_forecast.next(): # 分页查询,将每页信息合并在一起 rs_forecast_list.append(rs_forecast.get_row_data()) result_forecast = pd.DataFrame(rs_forecast_list, columns=rs_forecast.fields)