From 9647fc2829f799f748cda2c544ee9bfee136d6f3 Mon Sep 17 00:00:00 2001 From: jackluson <18219112108@163.com> Date: Tue, 2 Nov 2021 01:00:31 +0800 Subject: [PATCH] chore: details --- main.py | 15 +++++++++++++++ src/db/connect.py | 2 +- src/fund_info/supplement.py | 3 +-- src/fund_statistic.py | 28 ++++++++++++++++------------ 4 files changed, 33 insertions(+), 15 deletions(-) diff --git a/main.py b/main.py index a3b1fc0..0df5592 100644 --- a/main.py +++ b/main.py @@ -17,6 +17,7 @@ from src.acquire_fund_snapshot import get_fund_list from src.acquire_fund_base import acquire_fund_base from src.fund_info.supplement import FundSupplement from src.acquire_fund_quarter import acquire_fund_quarter +from src.fund_statistic import get_special_fund_code_holder_stock_detail, all_stocks_rank,all_stock_holder_detail def main(): @@ -25,6 +26,10 @@ def main(): 2.“新基入库”\n \ 3.“季度信息”\n \ 4.“基金状态归档”\n \ + 5.“组合持仓明细”\n \ + 6.“基金持仓股排名”\n \ + 7.“基金重仓股Top100”\n \ + 8.“股票持仓基金明细”\n \ 输入:") if input_value == '1' or input_value == '快照': page_index = 1 @@ -37,6 +42,16 @@ def main(): fund_supplement = FundSupplement() # 补充基金清算维度信息 fund_supplement.update_archive_status() + elif input_value == '5' or input_value == "组合持仓明细": + get_special_fund_code_holder_stock_detail() + elif input_value == '6' or input_value == "基金持仓股排名": + all_stocks_rank() + elif input_value == '7' or input_value == "基金重仓股Top100": + all_stocks_rank() + elif input_value == '8' or input_value == "股票持仓基金明细": + all_stock_holder_detail() + else: + print('输入有误') if __name__ == '__main__': diff --git a/src/db/connect.py b/src/db/connect.py index fde5e88..514f0a3 100644 --- a/src/db/connect.py +++ b/src/db/connect.py @@ -18,7 +18,7 @@ def connect(): def connect_dict(): load_dotenv() env_db_host = os.getenv('db_host') - env_db_name = os.getenv('db_name') + env_db_name = os.getenv('db_stock_name') env_db_user = os.getenv('db_user') env_db_password = os.getenv('db_password') connect = pymysql.connect( diff --git a/src/fund_info/supplement.py b/src/fund_info/supplement.py index a655c3a..9029af0 100644 --- a/src/fund_info/supplement.py +++ b/src/fund_info/supplement.py @@ -8,7 +8,6 @@ Author: luxuemin2108@gmail.com Copyright (c) 2021 Camel Lu ''' -import time from utils.index import get_last_quarter_str from sql_model.fund_query import FundQuery from sql_model.fund_update import FundUpdate @@ -23,7 +22,7 @@ class FundSupplement: def update_archive_status(self): fund_query = FundQuery() each_fund_update = FundUpdate() - funds = fund_query.select_quarter_fund(0, 10000) + funds = fund_query.select_quarter_fund(0, 15000) for fund_item in funds: fund_code = fund_item[0] fund_api = FundApier(fund_code, platform='zh_fund') diff --git a/src/fund_statistic.py b/src/fund_statistic.py index 19004e0..b515e3d 100644 --- a/src/fund_statistic.py +++ b/src/fund_statistic.py @@ -52,7 +52,7 @@ def stocks_compare(stock_list, *, market=None, quarter_index=None, fund_code_poo """ if quarter_index == None: quarter_index = get_last_quarter_str(2) - print("quarter_index", quarter_index) + print("比较-->quarter_index", quarter_index) last_quarter_input_file = './outcome/数据整理/strategy/all_stock_rank/' + \ quarter_index + '.xlsx' @@ -122,10 +122,9 @@ def stocks_compare(stock_list, *, market=None, quarter_index=None, fund_code_poo # print(item_tuple) return filter_list -# T100权重股排名 - def t100_stocks_rank(quarter_index=None, *, each_statistic): + # T100权重股排名 if quarter_index == None: quarter_index = get_last_quarter_str(1) last_quarter_index = get_last_quarter_str(2) @@ -145,13 +144,14 @@ def t100_stocks_rank(quarter_index=None, *, each_statistic): # df_filter_list.to_excel(output_file, sheet_name=sheet_name) -def all_stocks_rank(each_statistic): +def all_stocks_rank(each_statistic=None): + if each_statistic == None: + each_statistic = FundStatistic() """所有股票排名 """ quarter_index = get_last_quarter_str(1) - print("quarter_index", quarter_index) + print("该quarter_index为", quarter_index) last_quarter_index = get_last_quarter_str(2) - sheet_name = last_quarter_index + '基金重仓股T100' columns = ['代码', '名称', quarter_index + '持有数量(只)', last_quarter_index + '持有数量(只)', '持有数量环比', '持有数量环比百分比', '持有数量升或降', quarter_index + '持有市值(亿元)', last_quarter_index + '持有市值(亿元)', '持有市值环比', '持有市值环比百分比', '持有市值升或降'] output_file = './outcome/数据整理/strategy/all_stock_rank/' + quarter_index + '.xlsx' @@ -159,7 +159,6 @@ def all_stocks_rank(each_statistic): stock_top_list = each_statistic.all_stock_fund_count( quarter_index=quarter_index, filter_count=0) - #print("stock_top_list", stock_top_list) all_a_stocks_industry_info_list = each_statistic.query_all_stock_industry_info() a_stock_list = [] hk_stock_list = [] @@ -203,6 +202,7 @@ def all_stocks_rank(each_statistic): a_columns = [*columns, '三级行业', '二级行业', '一级行业'] df_a_list = pd.DataFrame(a_stock_compare_list, columns=a_columns) + print("df_a_list", df_a_list) df_hk_list = pd.DataFrame(hk_stock_compare_list, columns=columns) df_other_list = pd.DataFrame(other_stock_compare_list, columns=columns) @@ -216,7 +216,7 @@ def all_stocks_rank(each_statistic): writer.save() -def all_stock_holder_detail(each_statistic, *, quarter_index=None, threshold=0): +def all_stock_holder_detail(each_statistic=None, *, quarter_index=None, threshold=0): """ 所有股票的基金持仓细节 Args: @@ -224,6 +224,8 @@ def all_stock_holder_detail(each_statistic, *, quarter_index=None, threshold=0): quarter_index (str, optional): 季度字符串. Defaults to None. threshold (int, optional): 输出门槛. Defaults to 0. """ + if each_statistic == None: + each_statistic = FundStatistic() if quarter_index == None: quarter_index = get_last_quarter_str() stock_list = each_statistic.all_stock_fund_count_and_details( @@ -261,9 +263,11 @@ def all_stock_holder_detail(each_statistic, *, quarter_index=None, threshold=0): update_xlsx_file(path, df_list, quarter_index) -def get_special_fund_code_holder_stock_detail(each_statistic, quarter_index=None): +def get_special_fund_code_holder_stock_detail(each_statistic=None, quarter_index=None): """ 获取某些基金的十大持仓股票信息 """ + if each_statistic == None: + each_statistic = FundStatistic() if quarter_index == None: quarter_index = get_last_quarter_str() print("quarter_index", quarter_index) @@ -333,13 +337,13 @@ def get_special_fund_code_holder_stock_detail(each_statistic, quarter_index=None fund_code_pool = list(fund_portfolio.keys()) holder_stock_industry_list = each_statistic.summary_special_funds_stock_detail( fund_code_pool, quarter_index) - path = './outcome/数据整理/funds/高分权益基金组合十大持仓明细-加工.xlsx' + path = './outcome/数据整理/funds/高分权益基金组合十大持仓明细.xlsx' columns = ['基金代码', '基金名称', '基金类型', '基金经理', '基金总资产(亿元)', '基金股票总仓位', '十大股票仓位', '股票代码', '股票名称', '所占仓位', '所处仓位排名', '三级行业', '二级行业', '一级行业'] df_a_list = pd.DataFrame(holder_stock_industry_list, columns=columns) - print("df_a_list", df_a_list) + # print("df_a_list", df_a_list) - update_xlsx_file(path, df_a_list, sheet_name='十大持仓明细--' + '2021-08-28') + update_xlsx_file(path, df_a_list, sheet_name='十大持仓明细--' + quarter_index) if __name__ == '__main__':