コード例 #1
0
async def czce_contract_basis(contract: str = Depends(verify_contract),
                              query_month: int = Query(3)):
    today = datetime.today()
    start_date = (today +
                  timedelta(days=-(query_month * 30))).strftime("%Y%m%d")
    end_date = today.strftime("%Y%m%d")
    variety_en, _ = split_number_en(contract)
    # 查询数据
    with MySqlZ() as cursor:
        cursor.execute(
            "SELECT vsptb.date,vsptb.spot_price,vsptb.price_increase,dcedtb.variety_en, dcedtb.contract,dcedtb.close_price, dcedtb.settlement "
            "FROM variety_spot_price AS vsptb "
            "INNER JOIN czce_daily AS dcedtb "
            "ON vsptb.variety_en=dcedtb.variety_en AND dcedtb.contract=%s AND vsptb.date=dcedtb.date "
            "AND vsptb.date>=%s AND vsptb.date<=%s;",
            (contract, start_date, end_date))

        data = cursor.fetchall()

    return {"message": "郑商所{}现货与期货价数据查询成功!".format(contract), "data": data}
コード例 #2
0
ファイル: czce.py プロジェクト: zizle/AnalysisDecisionClient
def modify_contract_express(contract, current_date):
    number_en = split_number_en(contract)
    return current_date[2].join(number_en)
コード例 #3
0
ファイル: dce.py プロジェクト: zizle/AnalysisDecisionClient
    def _parser_variety_rank(cache_folder):
        """ 读取文件夹内文件解析 """
        all_data_df = DataFrame(columns=[
            "date", "variety_en", "contract", "rank", "trade_company", "trade",
            "trade_increase", "long_position_company", "long_position",
            "long_position_increase", "short_position_company",
            "short_position", "short_position_increase"
        ])

        filename_list = os.listdir(cache_folder)
        for contract_filename in filename_list:
            contract_file_path = os.path.join(cache_folder, contract_filename)
            message_list = contract_filename.split('_')
            c_date = message_list[0]  # 得到日期
            contract = message_list[1].upper()  # 得到合约
            variety_en = split_number_en(message_list[1])[0].upper()  # 得到合约代码
            contract_df = read_table(contract_file_path)
            extract_indexes = list()
            start_index, end_index = None, None
            for df_row in contract_df.itertuples():
                if df_row[1] == "名次":
                    start_index = df_row[0]
                if df_row[1] == "总计":
                    end_index = df_row[0] - 1
                if start_index is not None and end_index is not None:
                    extract_indexes.append([start_index, end_index])
                    start_index, end_index = None, None
            contract_result_df = DataFrame()
            for split_index in extract_indexes:
                target_df = contract_df.loc[split_index[0]:split_index[1]]
                first_row = target_df.iloc[0]
                first_row = first_row.fillna("nana")  # 填充NAN的值为nana方便删除这些列
                target_df.columns = first_row.values.tolist()  # 将第一行作为表头
                target_df = target_df.reset_index()  # 重置索引
                target_df = target_df.drop(labels=0)  # 删除第一行
                if target_df.columns.values.tolist() == [
                        'index', '名次', 'nana', '会员简称', '持买单量', '增减', 'nana',
                        'nana', 'nana', 'nana', 'nana'
                ]:
                    target_df.columns = [
                        'index2', '名次', 'nana', '会员简称2', '持买单量', 'nana', '增减2',
                        'nana', 'nana', 'nana', 'nana'
                    ]
                elif target_df.columns.values.tolist() == [
                        'index', '名次', 'nana', '会员简称', '持卖单量', '增减', 'nana',
                        'nana', 'nana', 'nana', 'nana'
                ]:
                    target_df.columns = [
                        'index3', '名次', 'nana', '会员简称3', '持卖单量', 'nana', '增减3',
                        'nana', 'nana', 'nana', 'nana'
                    ]
                # 删除为nana的列
                target_df = target_df.drop("nana", axis=1)  # 删除为nana的列
                if contract_result_df.empty:
                    contract_result_df = target_df
                else:
                    contract_result_df = merge(contract_result_df,
                                               target_df,
                                               on="名次")
            # 提取需要的列,再重命名列头
            contract_result_df["日期"] = [
                c_date for _ in range(contract_result_df.shape[0])
            ]
            contract_result_df["品种"] = [
                variety_en for _ in range(contract_result_df.shape[0])
            ]
            contract_result_df["合约"] = [
                contract for _ in range(contract_result_df.shape[0])
            ]
            # 重置列名取需要的值
            contract_result_df = contract_result_df.reindex(columns=[
                "日期", "品种", "合约", "名次", "会员简称", "成交量", "增减", "会员简称2", "持买单量",
                "增减2", "会员简称3", "持卖单量", "增减3"
            ])
            contract_result_df.columns = [
                "date", "variety_en", "contract", "rank", "trade_company",
                "trade", "trade_increase", "long_position_company",
                "long_position", "long_position_increase",
                "short_position_company", "short_position",
                "short_position_increase"
            ]
            # 填充缺失值
            contract_result_df[[
                "trade_company", "long_position_company",
                "short_position_company"
            ]] = contract_result_df[[
                "trade_company", "long_position_company",
                "short_position_company"
            ]].fillna('')
            contract_result_df = contract_result_df.fillna('0')
            # 修改数据类型
            contract_result_df["rank"] = contract_result_df["rank"].apply(
                str_to_int)
            contract_result_df["trade"] = contract_result_df["trade"].apply(
                str_to_int)
            contract_result_df["trade_increase"] = contract_result_df[
                "trade_increase"].apply(str_to_int)
            contract_result_df["long_position"] = contract_result_df[
                "long_position"].apply(str_to_int)
            contract_result_df["long_position_increase"] = contract_result_df[
                "long_position_increase"].apply(str_to_int)
            contract_result_df["short_position"] = contract_result_df[
                "short_position"].apply(str_to_int)
            contract_result_df["short_position_increase"] = contract_result_df[
                "short_position_increase"].apply(str_to_int)
            # 取1<=名次<=20的数据
            contract_result_df = contract_result_df[
                (1 <= contract_result_df["rank"])
                & (contract_result_df["rank"] <= 20)]
            all_data_df = concat([all_data_df, contract_result_df])
        return all_data_df