From 122020abb9db032a5106ee9f58f1b6d8b8579346 Mon Sep 17 00:00:00 2001 From: oscarz Date: Mon, 2 Jun 2025 09:16:08 +0800 Subject: [PATCH] modify scripts --- src/crawling/stock_hist_em.py | 2 +- src/static/stat_growth_em.py | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/crawling/stock_hist_em.py b/src/crawling/stock_hist_em.py index 086b145..325eca7 100644 --- a/src/crawling/stock_hist_em.py +++ b/src/crawling/stock_hist_em.py @@ -395,7 +395,7 @@ def code_id_map_em_older() -> dict: @lru_cache() def code_id_map_em() -> dict: url = "http://80.push2.eastmoney.com/api/qt/clist/get" - pz = 200 # 固定每页 200 条 + pz = 100 # 固定每页 200 条 pn = 1 # 初始页码 pn_max = 10000 # 预设一个较大的初始值 diff --git a/src/static/stat_growth_em.py b/src/static/stat_growth_em.py index 98b40db..5418336 100644 --- a/src/static/stat_growth_em.py +++ b/src/static/stat_growth_em.py @@ -199,6 +199,13 @@ def calculate_stock_statistics(market, code, code_name): logging.warning(f"{code}, {code_name} 未找到1008的数据, 以 {defaut_row['日期']} 的数据来代替") row_1008 = defaut_row + # 获取0403收盘价 + try: + row_0403 = data[data['日期'] == '2025-04-03'].iloc[0] + except IndexError: + logging.warning(f"{code}, {code_name} 未找到0403的数据, 以 {defaut_row['日期']} 的数据来代替") + row_0403 = defaut_row + # 获取2021年以来的最高价 max_close_row = data.loc[data['收盘'].idxmax()] # 获取2021年以来的最低价 @@ -221,6 +228,7 @@ def calculate_stock_statistics(market, code, code_name): growth_0930 = (current_row['收盘'] / row_0930['收盘'] - 1) growth_1008 = (current_row['收盘'] / row_1008['收盘'] - 1) growth_1008_open = (current_row['收盘'] / row_1008['开盘'] - 1) + growth_0403 = (current_row['收盘'] / row_0403['收盘'] - 1) year_amplitude = (year_max_row['收盘'] / year_min_row['收盘'] - 1) max_amplitude = (max_close_row['收盘'] / min_close_row['收盘'] - 1) stock_recovery = (current_row['收盘'] / max_close_row['收盘'] - 1) @@ -238,6 +246,7 @@ def calculate_stock_statistics(market, code, code_name): row_0923['日期'], row_0923['收盘'] , row_0930['日期'], row_0930['收盘'] , row_1008['日期'], row_1008['开盘'] ,row_1008['收盘'] , + row_0403['日期'], row_0403['收盘'] , max_close_row['日期'], max_close_row['收盘'], min_close_row['日期'], min_close_row['收盘'], year_max_row['日期'], year_max_row['收盘'], @@ -247,6 +256,7 @@ def calculate_stock_statistics(market, code, code_name): growth_0930 if growth_0930 is not None else 'N/A', growth_1008 if growth_1008 is not None else 'N/A', growth_1008_open if growth_1008_open is not None else 'N/A', + growth_0403 if growth_0403 is not None else 'N/A', year_amplitude, max_amplitude, stock_recovery @@ -266,9 +276,9 @@ def write_to_csv(results, filename): # 写入表头 writer.writerow([ "股市", "股票代码", "股票名称", "当前日期", "当前收盘", "年初日期", "年初收盘", - "0923日期", "0923收盘", "0930日期", "0930收盘", "1008日期", "1008开盘", "1008收盘", + "0923日期", "0923收盘", "0930日期", "0930收盘", "1008日期", "1008开盘", "1008收盘", "0403日期", "0403收盘", "最高日期", "最高收盘", "最低日期", "最低收盘", "年内最高日期", "年内最高收盘", "年内最低日期", "年内最低收盘", "年内涨幅", - "相比0923收盘价涨幅", "相比0930收盘价涨幅", "相比1008收盘价涨幅", "相比1008开盘价涨幅", + "相比0923收盘价涨幅", "相比0930收盘价涨幅", "相比1008收盘价涨幅", "相比1008开盘价涨幅", "相比0403收盘价涨幅", "年内振幅", "最大振幅", "股价自最高点恢复", "市盈率TTM", "市净率", "总市值" ]) # 写入每行数据 @@ -341,7 +351,7 @@ def main(list, debug): if __name__ == "__main__": # 命令行参数处理 parser = argparse.ArgumentParser(description='计算指定股票的区间收益率') - parser.add_argument('--list', type=str, default='futu', help='Stocklist to process (futu , index, all)') + parser.add_argument('--list', type=str, default='all', help='Stocklist to process (futu , index, all)') parser.add_argument('--debug', action='store_true', help='Enable debug mode (limit records)') args = parser.parse_args()