예제 #1
0
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
예제 #2
0
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
예제 #3
0
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
예제 #4
0
 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
예제 #5
0
    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
예제 #6
0
 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
예제 #7
0
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
예제 #8
0
    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
예제 #9
0
    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
예제 #10
0
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()
예제 #11
0
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()
예제 #12
0
 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
예제 #13
0
파일: forcast.py 프로젝트: mmlhq/ibaostock

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()
예제 #15
0
 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)