Пример #1
0
def QA_fetch_industry_adv(code: Union[str, List, Tuple] = None,
                          cursor_date: Union[str, datetime.datetime] = None,
                          start: Union[str, datetime.datetime] = None,
                          end: Union[str, datetime.datetime] = None,
                          levels: Union[str, List, Tuple] = None,
                          src: str = "sw") -> pd.DataFrame:
    """本地获取指定股票或股票列表的行业

    Args:
        code (Union[str, List, Tuple], optional): 股票代码或列表,默认为 None, 查询所有股票代码.
        cursor_date (Union[str, datetime.datetime], optional): 一般指调仓日,此时不需要再设置 start 与 end
        start(Union[str, datetime.datetime], optional): 起始时间,默认为 None.
        end(Union[str, datetime.datetime], optional): 截止时间, 默认为 None.
        levels (Union[str, List, Tuple], optional): [description]. 对应行业分级级别,默认为 None,查询所有行业分级数据
        src (str, optional): 分级来源,默认为 "sw"(目前仅支持申万行业分类).

    Returns:
        pd.DataFrame: 行业信息
    """
    coll = DATABASE.industry
    if not code:
        code = QA_fetch_stock_list().index.tolist()
    if isinstance(code, str):
        code = [code]
    if isinstance(levels, str):
        levels = [
            levels,
        ]
    if not levels:
        levels = ["l1", "l2", "l3"]
    levels = list(map(lambda x: x.lower(), levels))
    df_tmp = pd.DataFrame()
    if not cursor_date:
        if not start:
            qry = {
                "code": {
                    "$in": code
                },
                "level": {
                    "$in": levels
                },
                "src": src.lower()
            }
        else:
            qry = {
                "code": {
                    "$in": code
                },
                "level": {
                    "$in": levels
                },
                "src": src.lower(),
                "in_date_stamp": {
                    "$lte":
                    QA_util_date_stamp(
                        pd.Timestamp(start).strftime("%Y-%m-%d"))
                }
            }
        if coll.count_documents(filter=qry) < 1:
            print("找不到对应行业数据")
            return pd.DataFrame()
        cursor = coll.find(qry)
        df_tmp = pd.DataFrame(cursor).drop(columns="_id")
        if end:
            df_tmp = df_tmp.loc[df_tmp.out_date_stamp > QA_util_date_stamp(
                pd.Timestamp(end).strftime("%Y-%m-%d"))]
    else:
        qry = {
            "code": {
                "$in": code
            },
            "level": {
                "$in": levels
            },
            "src": src.lower(),
            "in_date_stamp": {
                "$lte":
                QA_util_date_stamp(
                    pd.Timestamp(cursor_date).strftime("%Y-%m-%d"))
            }
        }
        if coll.count_documents(filter=qry) < 1:
            print("找不到对应行业数据")
            return pd.DataFrame()
        cursor = coll.find(qry)
        df_tmp = pd.DataFrame(cursor).drop(columns="_id")
        df_tmp.loc[df_tmp.out_date_stamp > QA_util_date_stamp(
            pd.Timestamp(cursor_date).strftime("%Y-%m-%d"))]
        df_tmp.in_date = pd.to_datetime(df_tmp.in_date).dt.tz_localize(
            None).dt.tz_localize('Asia/Shanghai')
        df_tmp.out_date = pd.to_datetime(df_tmp.out_date).dt.tz_localize(
            None).dt.tz_localize('Asia/Shanghai')
    return df_tmp.drop(columns=["in_date_stamp", "out_date_stamp"])
Пример #2
0
 # print(QA_fetch_get_crosssection_financial('2020-03-31'))
 # print(QA_fetch_crosssection_financial("2020-03-31", fields="basic_eps"))
 # df = QA_fetch_financial_adv(start="2018-06-30", end="2018-09-30")
 # print(df.loc['000528', ["report_date", "f_ann_date",
 #                         "ann_date", "basic_eps", "report_type", "update_flag", "report_label"]])
 # print(df)
 # print(QA_fetch_stock_basic(status="D"))
 # 最近财务数据获取测试
 # print(QA_fetch_last_financial(
 #     code="000596", cursor_date="2020-10-08"))
 # print(QA_fetch_last_financial(
 #         code=QA_fetch_stock_list().index.tolist(), cursor_date="2020-10-08"))
 # print(QA_fetch_last_financial(
 #         code = '000001', cursor_date = '2020-10-08'
 # ))
 code = QA_fetch_stock_list().index.tolist()
 cursor_date = '2020-10-08'
 df_origin = QA_fetch_last_financial(code=code,
                                     cursor_date=cursor_date,
                                     sheet_type="balancesheet")
 # print(QA_fetch_last_financial(
 #     cursor_date="2018-08-31"))
 # print(QA_fetch_last_financial(
 #     cursor_date="2018-08-31", code=["000528"], fields=["report_date", "ann_date", "f_ann_date", "update_flag"]))
 # print(QA_fetch_financial_adv(
 #     cursor_date="2018-08-31"))
 # 股票基本信息获取测试
 # print(QA_fetch_stock_basic("000001"))
 # print(QA_fetch_stock_basic(status=["P", "D"]))
 # 行业获取测试
 # print(QA_fetch_industry_adv(start="1998-01-01", end="2020-12-02").head())