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 1/3] 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__': From 7387bef5a489b85509d7e0da9c9b45c8daa2b66c Mon Sep 17 00:00:00 2001 From: jackluson <18219112108@163.com> Date: Tue, 2 Nov 2021 01:05:39 +0800 Subject: [PATCH 2/3] fix: :bug: fixbugs --- main.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/main.py b/main.py index 0df5592..2ebee49 100644 --- a/main.py +++ b/main.py @@ -17,7 +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 +from src.fund_statistic import get_special_fund_code_holder_stock_detail, all_stocks_rank,t100_stocks_rank,all_stock_holder_detail def main(): @@ -47,7 +47,7 @@ def main(): elif input_value == '6' or input_value == "基金持仓股排名": all_stocks_rank() elif input_value == '7' or input_value == "基金重仓股Top100": - all_stocks_rank() + t100_stocks_rank() elif input_value == '8' or input_value == "股票持仓基金明细": all_stock_holder_detail() else: From a7dc0e861dede7cef13cfcb00a286783b937d255 Mon Sep 17 00:00:00 2001 From: jackluson <18219112108@163.com> Date: Tue, 2 Nov 2021 21:27:51 +0800 Subject: [PATCH 3/3] feat: supplement main entry --- main.py | 5 ++++- src/fund_statistic.py | 4 +++- src/fund_strategy.py | 5 +++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/main.py b/main.py index 2ebee49..5326468 100644 --- a/main.py +++ b/main.py @@ -18,7 +18,7 @@ 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,t100_stocks_rank,all_stock_holder_detail - +from src.fund_strategy import output_high_score_funds def main(): input_value = input("请输入下列序号执行操作:\n \ @@ -30,6 +30,7 @@ def main(): 6.“基金持仓股排名”\n \ 7.“基金重仓股Top100”\n \ 8.“股票持仓基金明细”\n \ + 9.“高分基金”\n \ 输入:") if input_value == '1' or input_value == '快照': page_index = 1 @@ -50,6 +51,8 @@ def main(): t100_stocks_rank() elif input_value == '8' or input_value == "股票持仓基金明细": all_stock_holder_detail() + elif input_value == '9' or input_value == "高分基金": + output_high_score_funds() else: print('输入有误') diff --git a/src/fund_statistic.py b/src/fund_statistic.py index b515e3d..eb9da49 100644 --- a/src/fund_statistic.py +++ b/src/fund_statistic.py @@ -123,8 +123,10 @@ def stocks_compare(stock_list, *, market=None, quarter_index=None, fund_code_poo return filter_list -def t100_stocks_rank(quarter_index=None, *, each_statistic): +def t100_stocks_rank(each_statistic=None, *, quarter_index=None): # T100权重股排名 + if each_statistic == None: + each_statistic = FundStatistic() if quarter_index == None: quarter_index = get_last_quarter_str(1) last_quarter_index = get_last_quarter_str(2) diff --git a/src/fund_strategy.py b/src/fund_strategy.py index 7ac9c32..adb9a60 100644 --- a/src/fund_strategy.py +++ b/src/fund_strategy.py @@ -10,15 +10,16 @@ Copyright (c) 2021 Camel Lu from utils.index import get_last_quarter_str, update_xlsx_file from sql_model.fund_query import FundQuery -import os from pprint import pprint import pandas as pd -def output_high_score_funds(each_query, quarter_index=None): +def output_high_score_funds(each_query=None, quarter_index=None): """ 输出高分基金 """ + if each_query == None: + each_query = FundQuery() if quarter_index == None: quarter_index = get_last_quarter_str() print("quarter_index", quarter_index)