From e6cbb6c96b6576da5eaf089cfa3dd6098cc6baf9 Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期二, 27 五月 2025 15:40:30 +0800 Subject: [PATCH] 人为修改大单阈值 --- data_parser/transaction_big_order_parser.py | 70 ++++++++++++++++++++++++++++------- 1 files changed, 56 insertions(+), 14 deletions(-) diff --git a/data_parser/transaction_big_order_parser.py b/data_parser/transaction_big_order_parser.py index e986684..42aa437 100644 --- a/data_parser/transaction_big_order_parser.py +++ b/data_parser/transaction_big_order_parser.py @@ -194,9 +194,60 @@ )) -def extract_big_order_of_code(dir_path, code): +def extract_big_order_of_code(dir_path, code=None): """ 鎻愬彇浠g爜鐨勫ぇ鍗� + @param dir_path: 鏁版嵁鐩綍 + @param code: 涓虹┖琛ㄧず瀵煎嚭鍏ㄩ儴 + @return: + """ + + def first_last(group): + """ + 鑾峰彇绗竴鏉℃暟鎹笌鏈�鍚庝竴鏉� + @param group: + @return: + """ + return pd.Series({ + 'SecurityID': group['SecurityID'].iloc[0], + 'BuyNo': group['BuyNo'].iloc[0], + 'TotalVolume': group['TotalVolume'].sum(), + 'TotalAmount': group['TotalAmount'].sum(), + 'EndTime': group['EndTime'].iloc[-1], + 'EndPrice': group['EndPrice'].iloc[-1], + 'StartTime': group['StartTime'].iloc[0], + 'StartPrice': group['StartPrice'].iloc[0] + }) + + combined_path = os.path.join(dir_path, 'combined.csv') + if not os.path.exists(combined_path): + print("鎷兼帴鏁版嵁涓嶅瓨鍦�") + return + df = pd.read_csv(combined_path) + df_copy = df.copy() + if code: + df_copy = df_copy[df_copy["SecurityID"] == int(code)] + if df_copy.empty: + print("鐩爣浠g爜瀵瑰簲鎴愪氦鏁版嵁涓虹┖") + return + df_copy["SecurityID"] = df_copy["SecurityID"].apply(BigOrderDealParser.code_format) + # 鎸塖ecurityID鍜孊uyNo鍒嗙粍 + grouped = df_copy.groupby(['SecurityID', 'BuyNo']) + grouped_result = grouped.apply(first_last) + grouped_result = grouped_result[grouped_result["TotalAmount"] > 500000] + # print(grouped_result) + # 閬嶅巻鍐呭 + if code: + grouped_result.to_csv(os.path.join(dir_path, f"big_buy_{code}.csv"), index=False) + else: + grouped_result.to_csv(os.path.join(dir_path, f"big_buy.csv"), index=False) + print("淇濆瓨鎴愬姛") + + +def extract_big_order_codes(dir_path): + """ + 瀵煎嚭澶у崟浠g爜 + @param dir_path: 鏁版嵁鐩綍 @param code: @return: """ @@ -208,12 +259,6 @@ @return: """ return pd.Series({ - 'TotalAmount': group['TotalAmount'].sum(), - 'TotalVolume': group['TotalVolume'].sum(), - 'StartTime': group['StartTime'].iloc[0], - 'StartPrice': group['StartPrice'].iloc[0], - 'EndTime': group['EndTime'].iloc[-1], - 'EndPrice': group['EndPrice'].iloc[-1] }) combined_path = os.path.join(dir_path, 'combined.csv') @@ -222,21 +267,18 @@ return df = pd.read_csv(combined_path) df_copy = df.copy() - df_copy = df_copy[df_copy["SecurityID"] == int(code)] if df_copy.empty: print("鐩爣浠g爜瀵瑰簲鎴愪氦鏁版嵁涓虹┖") return df_copy["SecurityID"] = df_copy["SecurityID"].apply(BigOrderDealParser.code_format) # 鎸塖ecurityID鍜孊uyNo鍒嗙粍 - grouped = df_copy.groupby(['SecurityID', 'BuyNo']) - grouped_result = grouped.apply(first_last) - grouped_result = grouped_result[grouped_result["TotalAmount"] > 500000] - grouped_result.to_csv(os.path.join(dir_path, f"{code}.csv")) - print("淇濆瓨鎴愬姛") + grouped = df_copy.groupby(['SecurityID']) + return set(grouped.groups.keys()) if __name__ == "__main__": # pre_process_transactions("E:/娴嬭瘯鏁版嵁/Transaction_Test.csv") # pre_process_ngtsticks("E:/娴嬭瘯鏁版嵁/NGTSTick_Test.csv") # concat_pre_transactions("E:/娴嬭瘯鏁版嵁/Transaction_Test") - extract_big_order_of_code("E:/娴嬭瘯鏁版嵁/Transaction_Test", "000017") + # extract_big_order_codes("E:/娴嬭瘯鏁版嵁/Transaction_Test") + extract_big_order_of_code("E:/娴嬭瘯鏁版嵁/Transaction_Test") -- Gitblit v1.8.0