Exemplo n.º 1
0
 def query_hs300_stocks():
     rs = bs.query_hs300_stocks()
     while Stock.retried_num < Stock.RETRY_MAX_NUM and rs.error_code != '0':
         sleep(Stock.RETRY_DELAY_S)
         rs = bs.query_hs300_stocks()
         Stock.retried_num += 1
     if '0' == rs.error_code:
         Stock.retried_num = 0
         return Stock.rs_to_list(rs)
Exemplo n.º 2
0
 def query_hs300_stocks():
     rs = bs.query_hs300_stocks()
     while BaoStock.retried_num < BaoStock.RETRY_MAX_NUM and rs.error_code != '0':
         sleep(BaoStock.RETRY_DELAY_S)
         rs = bs.query_hs300_stocks()
         BaoStock.retried_num += 1
     assert('0' == rs.error_code)
     BaoStock.retried_num = 0
     return BaoStock.rs_to_list(rs)
Exemplo n.º 3
0
def getStockList(type: str = "default", date: str = ""):
    result = []
    data: DataFrame
    if type == "sz50":
        data = BaoStock.query_sz50_stocks(date).get_data()
    elif type == "hs300":
        data = BaoStock.query_hs300_stocks(date).get_data()
    elif type == "zz500":
        data = BaoStock.query_zz500_stocks(date).get_data()
    elif type == "default":
        path = Path(__file__).parent.absolute()/"list.json"
        file = open(str(path), "r", encoding="utf8")
        return Json.loads(file.read())
    else:
        data = BaoStock.query_stock_basic().get_data()
        keys = data.keys()
        data = [x[1]
                for x in BaoStock.query_stock_basic().get_data().iterrows()]
        if type == "index":
            data = [x for x in data if x["type"] == "2"]
        elif type == "stock":
            data = [x for x in data if x["type"] == "1"]
        for row in data:
            result.append({getStockListMap[key][0]: row[key]
                          for key in keys if key in getStockListMap})
        return result
    for row in data.iterrows():
        result.append({getStockListMap[key][0]: row[1][key]
                      for key in data.keys() if key in getStockListMap})
    return result
Exemplo n.º 4
0
    def getList(self):
        stocks = []

        # 获取中证500成分股
        rs = bs.query_zz500_stocks()
        print('query_zz500 error_code:' + rs.error_code)
        print('query_zz500  error_msg:' + rs.error_msg)

        while (rs.error_code == '0') & rs.next():
            # 获取一条记录,将记录合并在一起
            stocks.append(rs.get_row_data())

        # 获取中证500成分股
        rs = bs.query_hs300_stocks()
        print('query_hs300 error_code:' + rs.error_code)
        print('query_hs300  error_msg:' + rs.error_msg)

        while (rs.error_code == '0') & rs.next():
            # 获取一条记录,将记录合并在一起
            stocks.append(rs.get_row_data())

        result = pd.DataFrame(stocks, columns=rs.fields)
        # 结果集输出到csv文件

        self.makeDIR('./data')
        result.to_csv('data/' + 'stockList.csv', index=False)
Exemplo n.º 5
0
def querHS300Stocks(date=''):
    rs = bs.query_hs300_stocks(date=date)
    # 打印结果集
    hs300_stocks = []
    while (rs.error_code == '0') & rs.next():
        # 获取一条记录,将记录合并在一起
        hs300_stocks.append(rs.get_row_data())
    result = pd.DataFrame(hs300_stocks, columns=rs.fields)
Exemplo n.º 6
0
def get_hs300_stocks():
    rs = BS.query_hs300_stocks()

    hs300_stocks = []
    while (rs.error_code == '0') & rs.next():
        hs300_stocks.append(rs.get_row_data())
    result = PD.DataFrame(hs300_stocks, columns=rs.fields)
    print(result)
    return result
def get_code(file_path):
    rs = bs.query_hs300_stocks()
    print('query_hs300 error_code:' + rs.error_code)
    print('query_hs300  error_msg:' + rs.error_msg)
    hs300_stocks = []
    while (rs.error_code == '0') & rs.next():
        hs300_stocks.append(rs.get_row_data())
    result = pd.DataFrame(hs300_stocks, columns=rs.fields)
    result.to_csv(file_path, encoding="utf-8", index=False)
    return None
Exemplo n.º 8
0
 def bao_hs300_stocks() -> pd.DataFrame:
     """
     获取沪深300成分股信息
     :return:
     """
     df = bao.query_hs300_stocks().get_data()
     df['code'] = df['code'].apply(lambda x: ts_code(x))
     df.set_index(keys='code', drop=False, inplace=True)
     logging.info(colorama.Fore.YELLOW + '获取沪深300成分股信息')
     return df
Exemplo n.º 9
0
def calculate_hs300_spec():
    lg = bs.login()
    print('login respond error_code:'+lg.error_code)
    print('login respond  error_msg:'+lg.error_msg)

    rs = bs.query_hs300_stocks()
    print('query_hs300 error_code:'+rs.error_code)
    print('query_hs300  error_msg:'+rs.error_msg)

    hs300_stocks = []
    while (rs.error_code == '0') & rs.next():
        hs300_stocks.append(rs.get_row_data())
    bs.logout()

    db = create_engine(common.db_path_sqlalchemy)
    hs300code = 'sh.000300'
    sql_cmd = "SELECT * FROM stock_day_k where code='" + hs300code + "' order by date desc limit 0,251"
    datash = pd.read_sql(sql=sql_cmd, con=db)
    price = DataFrame({'date': datash['date'], hs300code:datash['close']})

    result = []
    currentdate = datash['date'][0]
    for stockinfo in hs300_stocks:
        stockcode = stockinfo[1]
        code_name = stockinfo[2]
        sql_cmd = "SELECT * FROM stock_day_k where code='" + stockcode+"' order by date desc limit 0,251"
        daily = pd.read_sql(sql=sql_cmd, con=db)
        pp = DataFrame({stockcode:daily['close']})
        price2 = pd.concat([price, pp], axis=1)
        price2 = price2.drop(['date'], axis=1)
        price2 = price2.reset_index(drop = True)

        tickerresult = []
        tickerresult.append(currentdate)
        tickerresult.append(stockcode)
        tickerresult.append(code_name)
        trendgap_y = calculate_trendgap(price2, pp.shape[0])
        trendgap_hy = calculate_trendgap(price2, pp.shape[0], 120)
        trendgap_qy = calculate_trendgap(price2, pp.shape[0], 60)
        trendgap_m = calculate_trendgap(price2, pp.shape[0], 20)
        trendgap_10 = calculate_trendgap(price2, pp.shape[0], 10)
        trendgap_5 = calculate_trendgap(price2, pp.shape[0], 5)
        tickerresult.append(trendgap_y)
        tickerresult.append(trendgap_hy)
        tickerresult.append(trendgap_qy)
        tickerresult.append(trendgap_m)
        tickerresult.append(trendgap_10)
        tickerresult.append(trendgap_5)
        result.append(tickerresult)
        print(code_name)
    
    if len(result) != 0:  
        db.execute(r'''
        INSERT OR REPLACE INTO stock_hs300_spec VALUES (?,?,?,?,?,?,?,?,?)
        ''', result)
Exemplo n.º 10
0
    def get_300_codes(self, date='2017-01-01'):
        # 获取沪深300成分股
        rs = bs.query_hs300_stocks(date)

        # 打印结果集
        hs300_stocks = []
        while (rs.error_code == '0') & rs.next():
            # 获取一条记录,将记录合并在一起
            hs300_stocks.append(rs.get_row_data())
        result = pd.DataFrame(hs300_stocks, columns=rs.fields)
        return result
Exemplo n.º 11
0
def hs300():
    filename = "data/hs300.csv"
    if os.path.exists(filename):
        result = pd.read_csv(filename)
    else:
        rs = bs.query_hs300_stocks()
        hs300_stocks = []
        while (rs.error_code == '0') & rs.next():
            hs300_stocks.append(rs.get_row_data())
        result = pd.DataFrame(hs300_stocks, columns=rs.fields)
        result.to_csv(filename, encoding="utf-8", index=False)
    return result
Exemplo n.º 12
0
def get_constituent_stock(i):
    basepath = os.path.dirname(__file__)
    basicpath = 'static/morestock/' + i + '-stock'
    show_time = today_time()
    param = request.form
    show_code = ""
    if param and (param['code'] or param['code'] == ""):
        code = param['code']
        show_code = stock_com(code)
    if show_code == "":
        # baostock相关设置
        lg = bs.login()
        if i == "hs300":
            rs = bs.query_hs300_stocks()
        elif i == "sz":
            rs = bs.query_sz50_stocks()
        elif i == "zz":
            rs = bs.query_zz500_stocks()
        result = res_data(rs)
        # 创建个股文件夹
        create_file(basicpath)
        # 存储csv、excel、josn文件
        parsed = save_all(basicpath, i, show_time, result, 'data')
        # 从json获取数据(all)
        all_len = len(parsed)
        type_name = i + "Stock"
        show_obj = {"data": parsed, "total": all_len, "type": type_name}
        # baostock登出
        bs.logout()
        return show_obj
    else:
        jsonpath = basicpath + '/json/' + i + '_' + show_time + '.json'
        joson_file = os.path.join(basepath, jsonpath)
        jsonFlag = "0"
        search_arr = []
        with open(joson_file, 'r+', encoding="utf-8") as load_f:
            load_file = load_f.read()
            home_file = json.loads(load_file, strict=False)
            if show_code == "-1":
                search_arr = home_file['data']
            elif show_code == "-2":
                search_arr = []
            else:
                for item in home_file['data']:
                    if item['code'] == show_code or item[
                            'code_name'] == show_code:
                        jsonFlag = "1"
                        search_arr.append(item)
        all_len = len(search_arr)
        type_name = i + "Stock"
        show_obj = {"data": search_arr, "total": all_len, "type": type_name}
        return show_obj
Exemplo n.º 13
0
def bs_save_hs300_stocks():
    '''
    获取沪深300成分股信息
    :return:
    '''
    bs.login()
    rs = bs.query_hs300_stocks()
    data_list = []
    while (rs.error_code == '0') & rs.next():
        data_list.append(rs.get_row_data())
    result = pd.DataFrame(data_list, columns=rs.fields)
    engine = create_engine('mysql+pymysql://root:root@localhost:3306/stock_quant?charset=utf8')
    result.to_sql('bs_hs300_stocks', engine, index=True)
    bs.logout()
Exemplo n.º 14
0
    def query_hs300_stocks(self, date = None):
        '''
        date:查询日期,格式XXXX-XX-XX,为空时默认最新日期。
        '''
        rs = bs.query_hs300_stocks(date = date)
        self.log('query_hs300  error_msg:', rs)

        # 打印结果集
        hs300_stocks = []
        while (rs.error_code == '0') & rs.next():
            # 获取一条记录,将记录合并在一起
            hs300_stocks.append(rs.get_row_data())
        result = pd.DataFrame(hs300_stocks, columns=rs.fields)
        return result
def main():
    #  沪深300
    rs = bs.query_hs300_stocks()
    # 获取上证50成分股
    rs1 = bs.query_sz50_stocks()
    # 获取中证500成分股
    rs2 = bs.query_zz500_stocks()
    while (rs.error_code == '0') & rs.next():
        # 获取一条记录,将记录合并在一起
        re = Combine(rs.get_row_data()[1])
        if re:
            datalist.append(re)
    result = pd.DataFrame(datalist)
    result.to_csv("/tmp/a.csv", index=False)
Exemplo n.º 16
0
def get_hs300_stocks(date=today):
    # 获取沪深300成分股
    rs = bs.query_hs300_stocks(date=date)
    if rs.error_code != '0':
        print('query_hs300 respond error_code::' + rs.error_msg)
        login()
        return get_hs300_stocks(date)

    # 打印结果集
    hs300_stocks = []
    while (rs.error_code == '0') & rs.next():
        # 获取一条记录,将记录合并在一起
        hs300_stocks.append(rs.get_row_data())
    result = pd.DataFrame(hs300_stocks, columns=rs.fields)
    return result
Exemplo n.º 17
0
def getNormalDataForBaoStock(start_date, end_date):
    #### 登陆系统 ####
    lg = bs.login()
    # 显示登陆返回信息
    print('login respond error_code:' + lg.error_code)
    print('login respond  error_msg:' + lg.error_msg)

    #### 获取沪深A股历史K线数据 ####
    # 详细指标参数,参见“历史行情指标参数”章节;“分钟线”参数与“日线”参数不同。“分钟线”不包含指数。
    # 分钟线指标:date,time,code,open,high,low,close,volume,amount,adjustflag
    # 周月线指标:date,code,open,high,low,close,volume,amount,adjustflag,turn,pctChg
    hs300_stocks = []
    rs = bs.query_hs300_stocks()

    while (rs.error_code == '0') & rs.next():
        # 获取一条记录,将记录合并在一起
        hs300_stocks.append(rs.get_row_data())
    for stock_info in hs300_stocks:
        code = stock_info[1]
        rs = bs.query_history_k_data_plus(
            code,
            "date,code,open,high,low,close,preclose,volume,amount,adjustflag,turn,tradestatus,pctChg,isST",
            start_date=start_date,
            end_date=end_date,
            frequency="d",
            adjustflag="1")
        print('query_history_k_data_plus respond error_code:' + rs.error_code)
        print('query_history_k_data_plus respond  error_msg:' + 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)

        #### 结果集输出到csv文件 ####
        file_directory = os.path.join(save_path, code)
        if not os.path.exists(file_directory):
            os.makedirs(file_directory)
        result.to_csv(os.path.join(save_path, code,
                                   "history_A_stock_k_data.csv"),
                      index=False)
        print(result)

    #### 登出系统 ####
    bs.logout()
Exemplo n.º 18
0
 def dispatch_request(self):
     post_data = request.get_json()
     date = post_data.get('date', '')
     attr_fields = post_data.get('attr_fields', None)
     rs = bs.query_hs300_stocks(date=date)
     hs50_stocks = []
     while (rs.error_code == '0') & rs.next():
       hs50_stocks.append(rs.get_row_data())
     fields = ['updateDate', 'code', 'code_name']
     data = jsonWrapper(hs50_stocks, fields)
     result = {
       'code': 200 if rs.error_code == '0' else rs.error_code,
       'data': list(map(lambda x: { attr: x.get(attr, '') for attr in attr_fields }, data)) if attr_fields else data,
       'msg': rs.error_msg
     }
     self.logout()
     return jsonify(result)
Exemplo n.º 19
0
def get_hs300_stocks():
    lg = bs.login()
    # 显示登陆返回信息
    print('login respond error_code:' + lg.error_code)
    print('login respond  error_msg:' + lg.error_msg)

    #### 获取交易日信息 ####
    rs = bs.query_hs300_stocks()
    print('query_trade_dates respond error_code:' + rs.error_code)
    print('query_trade_dates respond  error_msg:' + 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()
    return result
Exemplo n.º 20
0
def compute_avg_earning():
    lg = bs.login()

    rs = bs.query_hs300_stocks()
    result = pd.DataFrame()
    while(rs.error_code == '0') & rs.next():
        row = rs.get_row_data()
        code = row[1]
        df = get_closeprice(code)
        df['code_name'] = row[2]
        if result.empty:
            result = df
        else:
            result = result.append(df)
#    zz = bs.query_zz500_stocks()
#    while(zz.error_code == '0') & zz.next():
#        row = zz.get_row_data()
#        code = row[1]
#        df = get_closeprice(code)
#        df['code_name'] = row[2]
#        result = result.append(df)
    result = result[result['netProfit_x'] != '']
    result['netProfit_x'] = result['netProfit_x'].astype(float)
    result = result[result['netProfit_x'] > 0]
    result['netProfit_y'] = result['netProfit_y'].astype(float)
    result = result[result['netProfit_y'] > 0]
    result['avgEarningRate'] = (result['netProfit_y']/result['netProfit_x']).apply(lambda x: math.pow(x,1/5)-1)
    result = result[result['avgEarningRate'] > 0]
    result['roeAvg_y'] = result['roeAvg_y'].astype(float)
    result = result[result['roeAvg_y'] > 0.1]
    result['npMargin_y'] = result['npMargin_y'].astype(float)
    result = result[result['npMargin_y'] > 0.1]
    result['pe'] = result['pe'].astype(float)
    result = result[result['pe'] > 0]
    result = result[result['pe'] < 50]
    result['peg'] = result['pe'] / result['avgEarningRate']
    result = result.sort_values(by=['peg'], ascending=True)
    result.to_csv("avg_earning_rate.csv", encoding="utf-8", index=False)

    result[:10].plot.bar(title='peg', x='code_name', y='peg')
    plt.show()

    bs.logout()
Exemplo n.º 21
0
def get_hs300_stocks():
    """
    获取沪深300成分股
    """

    # 登陆系统
    lg = bs.login()
    # 显示登陆返回信息
    print('login respond error_code:' + lg.error_code)
    print('login respond  error_msg:' + lg.error_msg)

    # 获取沪深300成分股
    rs = bs.query_hs300_stocks()
    print('query_hs300 error_code:' + rs.error_code)
    print('query_hs300  error_msg:' + rs.error_msg)

    # 打印结果集
    hs300_stocks = []
    while (rs.error_code == '0') & rs.next():
        # 获取一条记录,将记录合并在一起
        hs300_stocks.append(rs.get_row_data())
    result = pd.DataFrame(hs300_stocks, columns=rs.fields)
    # # 结果集输出到csv文件
    # result.to_csv("hs300_stocks.csv", encoding="utf-8", index=False)

    dtype = {
        'updateDate': String(10),
        'code': String(9),
        'code_name': String(10)
    }

    result.to_sql('odl_bs_hs300_stocks',
                  engine,
                  schema=CQ_Config.DB_SCHEMA,
                  if_exists='replace',
                  index=False,
                  dtype=dtype)

    # 登出系统
    bs.logout()
Exemplo n.º 22
0
def hs300_stocks():
    # 登陆系统
    lg = bs.login()
    # 显示登陆返回信息
    print('login respond error_code:' + lg.error_code)
    print('login respond  error_msg:' + lg.error_msg)

    # 获取证券基本资料
    rs = bs.query_hs300_stocks()
    print('query_hs300 error_code:' + rs.error_code)
    print('query_hs300  error_msg:' + rs.error_msg)

    # 打印结果集
    hs300_stocks = []
    while (rs.error_code == '0') & rs.next():
        # 获取一条记录,将记录合并在一起
        hs300_stocks.append(rs.get_row_data())
    result = pd.DataFrame(hs300_stocks, columns=rs.fields)
    # 结果集输出到csv文件
    # result.to_csv("D:/hs300_stocks.csv", encoding="gbk", index=False)
    result.to_csv(ConfigUtils.get_stock("HS_300_STOCK_NAME"), index=False)
    print(result.tail())
    print("init all hs300 stock names")
Exemplo n.º 23
0
    def hs300_index_component(self):
        file_path = './raw_data/hs300_stocks.csv'
        if os.path.exists(file_path):
            is_outdate = None
        else:
            is_outdate = True
        # 获取沪深300成分股
        rs = bs.query_hs300_stocks()
        print(f'hs300_index_component, error_code:{rs.error_code}')

        # 打印结果集
        hs300_stocks = []
        while (rs.error_code == '0') & rs.next():
            row = rs.get_row_data()
            if is_outdate is None:
                is_outdate = self.check_index_component_outdate(
                    row[0], file_path)
                # is_outdate = True
                hs300_stocks.append(row)
            elif is_outdate == True:
                # 获取一条记录,将记录合并在一起
                hs300_stocks.append(row)
            else:
                return
        result = pd.DataFrame(hs300_stocks, columns=rs.fields)

        result = result.set_index("code")
        # result = self.get_stock_industry_from_dongcai(result)
        for code in result.index.values.tolist():
            stock_info = self.get_stock_detail(code)
            result.loc[code, 'url'] = stock_info['url']
            result.loc[code, 'industry'] = stock_info['industry']
            result.loc[code, 'pe_max'] = stock_info['pe_max']
            result.loc[code, 'pe_mean'] = stock_info['pe_mean']
            result.loc[code, 'pe_min'] = stock_info['pe_min']
        # 结果集输出到csv文件
        result.to_csv(file_path, encoding="gbk")
Exemplo n.º 24
0
def get_hs300_zz500_data():
    # 获取沪深300和中证500成分股
    rs_hs300 = bs.query_hs300_stocks("2020-07-30")
    rs_zz500 = bs.query_zz500_stocks("2020-07-30")
    print('query_hs300 error_code:' + rs_hs300.error_code)
    print('query_hs300  error_msg:' + rs_hs300.error_msg)
    print('query_zz500 error_code:' + rs_zz500.error_code)
    print('query_zz500  error_msg:' + rs_zz500.error_msg)

    # 打印结果集
    hs300_stocks = []
    zz500_stocks = []
    while (rs_hs300.error_code == '0') & rs_hs300.next():
        # 获取一条记录,将记录合并在一起
        hs300_stocks.append(rs_hs300.get_row_data())
    while (rs_zz500.error_code == '0') & rs_zz500.next():
        # 获取一条记录,将记录合并在一起
        zz500_stocks.append(rs_zz500.get_row_data())

    stocks_result = pd.DataFrame(hs300_stocks + zz500_stocks,
                                 columns=rs_hs300.fields)

    # stocks_result.to_csv("./stocks-pool/hs300_zz500_stocks.csv", encoding="gbk", index=False)
    return stocks_result
Exemplo n.º 25
0
    def query_hs300_stocks(date=None):
        """"
        沪深300成分股
        方法说明:通过API接口获取沪深300成分股信息,更新频率:每周一更新。
        返回类型:pandas的DataFrame类型。
        参数含义:
        date:查询日期,格式XXXX-XX-XX,为空时默认最新日期。
        """
        lg = bs.login()
        if lg.error_code != '0':
            logger.error('login respond  error_msg:' + lg.error_msg)

        rs = bs.query_hs300_stocks(date)
        if rs.error_code != '0':
            logger.error('query_hs300_stocks respond  error_msg:' +
                         rs.error_msg)

        hs300_stocks = []
        while (rs.error_code == '0') & rs.next():
            hs300_stocks.append(rs.get_row_data())
        result = pd.DataFrame(hs300_stocks, columns=rs.fields)

        bs.logout()
        return result
Exemplo n.º 26
0
def his_hs300(date, ifcache = True):
    dict = get_cache()
    if ifcache and ("hs300", date) in dict.keys():
        #print("hit")
        return dict["hs300", date]

    # 登陆系统
    lg = bs.login()
    # 显示登陆返回信息
    #print('login respond error_code:'+lg.error_code)
    #print('login respond  error_msg:'+lg.error_msg)

    # 获取沪深300成分股
    rs = bs.query_hs300_stocks(str(date))
    #print('query_hs300 error_code:'+rs.error_code)
    #print('query_hs300  error_msg:'+rs.error_msg)

    # 打印结果集
    hs300_stocks = []
    while (rs.error_code == '0') & rs.next():
        # 获取一条记录,将记录合并在一起
        hs300_stocks.append(rs.get_row_data())
    result = pd.DataFrame(hs300_stocks, columns=rs.fields)
    # 结果集输出到csv文件
    #print(result)
    datas = []
    for data in hs300_stocks:
        datas.append(data[1])

    if ifcache:
        dict["hs300", date] = datas
        save_cache(dict)

    # 登出系统
    bs.logout()
    return datas
Exemplo n.º 27
0
def download_sample_stocks(sample_name='sz50'):
    if sample_name == 'sz50':
        filename = FILE_PATH + "sz50_stocks.csv"
        rs = bs.query_sz50_stocks()
    elif sample_name == 'hs300':
        filename = FILE_PATH + "hs300_stocks.csv"
        rs = bs.query_hs300_stocks()
    elif sample_name == 'zz500':
        filename = FILE_PATH + "zz500_stocks.csv"
        rs = bs.query_zz500_stocks()
    elif sample_name == 'all':
        filename = FILE_PATH + "all_stocks.csv"
        # 取前七天的成分股信息,如果取当前天的,可能当天没有更新
        trade_cal = get_trade_cal()
        trade_day = trade_cal[(
            trade_cal['is_trading_day'] == 1)]['calendar_date'].values
        rs = bs.query_all_stock()

    stocks = []
    while (rs.error_code == '0') & rs.next():
        stocks.append(rs.get_row_data())
    result = pd.DataFrame(stocks, columns=rs.fields)
    result.to_csv(filename, encoding="gbk", index=False)
    logger.debug("将成分股%s保存至%s" % (sample_name, filename))
Exemplo n.º 28
0
 def hs300(self):
     '''沪深300'''
     return get_data(bs.query_hs300_stocks())
Exemplo n.º 29
0
 def get_hs300_stocks(self):
     result = baostock.query_hs300_stocks().get_data()
     result.to_excel(r'''E:\桌面\PycharmProjects\getstock\test.xlsx''',
                     index=False)
Exemplo n.º 30
0
lg = bs.login()
# 显示登陆返回信息
print('login respond error_code:' + lg.error_code)
print('login respond  error_msg:' + lg.error_msg)

# 获取中证500成分股
rs = bs.query_zz500_stocks()
print('query_zz500 error_code:' + rs.error_code)
print('query_zz500  error_msg:' + rs.error_msg)

all_stocks = []
while (rs.error_code == '0') & rs.next():
    all_stocks.append(rs.get_row_data())

# 获取沪深300
rs = bs.query_hs300_stocks()
print('query_hs300 error_code:' + rs.error_code)
print('query_hs300  error_msg:' + rs.error_msg)

while (rs.error_code == '0') & rs.next():
    all_stocks.append(rs.get_row_data())

result = pd.DataFrame(all_stocks, columns=rs.fields)

# 去除创业板
result = result[result['code'].str.contains("300") == False]

# 结果集输出到csv文件
result.to_csv("./base_stocks.csv", encoding="utf_8_sig", index=False)
print(result)