feat: 增加按股票市场分类排行

main
jackluson 3 years ago
parent 569e375ef3
commit f58a15e902

@ -1 +1 @@
Subproject commit b038ab395917bb7fa4c23424f5c72c54528be593
Subproject commit fa448c00dbc8206e29f914a332c3681c08a879d3

@ -45,6 +45,8 @@ def get_fund_code_pool():
def stocks_compare(stock_list, fund_code_pool=None):
each_statistic = FundStatistic()
last_quarter_index = get_last_quarter_str(2)
filter_list = []
for stock in stock_list:
stock_code = stock[0].split('-', 1)[0]
@ -57,17 +59,13 @@ def stocks_compare(stock_list, fund_code_pool=None):
stock_code,
fund_code_pool
)
try:
last_count_tuple = stock_quarter_count_tuple[len(
stock_quarter_count_tuple) - 2]
except:
print("stock_quarter_count_tuple", stock_quarter_count_tuple)
print('该股票查询异常', stock_code, stock_name)
continue
last_stock_sum = last_count_tuple[0] # 选出上一个季度的
if len(stock_quarter_count_tuple) == 1:
last_stock_sum = 0
last_stock_sum = 0
print("stock_quarter_count_tuple", stock_quarter_count_tuple)
for item in stock_quarter_count_tuple:
quarter_index_str = item[1]
if quarter_index_str == last_quarter_index:
last_stock_sum = item[0]
break
diff = stock_sum - last_stock_sum
@ -88,30 +86,73 @@ def stocks_compare(stock_list, fund_code_pool=None):
# print(item_tuple)
return filter_list
def top100_stock(each_statistic, threshold=80):
# 股票排名
def rank_stock(each_statistic, threshold=80):
quarter_index = get_last_quarter_str()
last_quarter_index = get_last_quarter_str(2)
output_file = './outcome/strategy/top100_rank.xlsx'
output_file = './outcome/数据整理/strategy/top100_rank.xlsx'
sheet_name = quarter_index + '基金重仓股T100'
columns=['代码',
'名称', quarter_index + '持有数量(只)', last_quarter_index + '持有数量(只)', '环比', '环比百分比', '升Or降']
if threshold == 0:
output_file = './outcome/strategy/all_rank.xlsx'
sheet_name = quarter_index + '全股排名'
output_file = './outcome/数据整理/strategy/'+ quarter_index +'-all_stock_rank.xlsx'
stock_top_list = each_statistic.all_stock_fund_count(
quarter_index=quarter_index,
filter_count=threshold)
if threshold != 0:
stock_top_list = stock_top_list[:100]
# print('2020-Q4 top 100 股票')
pprint(stock_top_list)
#print(len(stock_top_list))
#pprint(stock_top_list)
if threshold != 0:
filter_list = stocks_compare(stock_top_list)
df_filter_list = pd.DataFrame(filter_list, columns=columns)
df_filter_list.to_excel(output_file, sheet_name=sheet_name)
else:
other_stock_list = []
hk_stock_list = []
a_stock_list = []
for stock_name_code in stock_top_list:
#print(stock_name_code[0])
stock_code = stock_name_code[0].split('-', 1)[0]
#path = 'other'
if bool(re.search("^\d{5}$", stock_code)):
#path = '港股'
hk_stock_list.append(stock_name_code)
elif bool(re.search("^\d{6}$", stock_code)):
if bool(re.search("^00(0|1|2|3)\d{3}$", stock_code)):
#path = 'A股/深证主板'
a_stock_list.append(stock_name_code)
elif bool(re.search("^300\d{3}$", stock_code)):
#path = 'A股/创业板'
a_stock_list.append(stock_name_code)
elif bool(re.search("^60(0|1|2|3|5)\d{3}$", stock_code)):
#path = 'A股/上证主板'
a_stock_list.append(stock_name_code)
elif bool(re.search("^68(8|9)\d{3}$", stock_code)):
#path = 'A股/科创板'
a_stock_list.append(stock_name_code)
else:
other_stock_list.append(stock_name_code)
else:
other_stock_list.append(stock_name_code)
a_stock_compare_list = stocks_compare(a_stock_list)
hk_stock_compare_list = stocks_compare(hk_stock_list)
other_stock_compare_list = stocks_compare(other_stock_list)
df_a_list = pd.DataFrame(a_stock_compare_list, columns=columns)
df_hk_list = pd.DataFrame(hk_stock_compare_list, columns=columns)
df_other_list = pd.DataFrame(other_stock_compare_list, columns=columns)
writer = pd.ExcelWriter(output_file, engine='xlsxwriter')
df_a_list.to_excel(writer, sheet_name='A股')
df_hk_list.to_excel(writer, sheet_name='港股')
filter_list = stocks_compare(stock_top_list)
df_other_list.to_excel(writer, sheet_name='其他')
#pprint(filter_list)
pprint(len(filter_list))
df_filter_list = pd.DataFrame(filter_list, columns=['代码',
'名称', quarter_index + '持有数量(只)', last_quarter_index + '持有数量(只)', '环比', '环比百分比', '升Or降'])
df_filter_list.to_excel(output_file, sheet_name=sheet_name)
writer.save()
def all_stock(quarter_index, each_statistic, threshold=0):
stock_list = each_statistic.all_stock_fund_count_and_details(
@ -140,7 +181,7 @@ def all_stock(quarter_index, each_statistic, threshold=0):
hold_fund_list = stock[1]['fund_list']
df_list = pd.DataFrame(hold_fund_list)
stock_name_code = stock_name_code.replace('-*', '-').replace('/', '-')
path = './outcome/stocks/' + path + '/' + stock_name_code + '.xlsx'
path = './outcome/数据整理/stocks/' + path + '/' + stock_name_code + '.xlsx'
path = path.replace('\/', '-')
if os.path.exists(path):
writer = pd.ExcelWriter(path, engine='openpyxl')
@ -158,7 +199,7 @@ if __name__ == '__main__':
each_statistic = FundStatistic()
quarter_index = "2021-Q1"
# 获取重仓股
#top100_stock(each_statistic, 80)
rank_stock(each_statistic, 0)
# 所有股票的基金持仓细节
all_stock(quarter_index, each_statistic)
#all_stock(quarter_index, each_statistic)

Loading…
Cancel
Save