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 |  113 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 111 insertions(+), 2 deletions(-)

diff --git a/data_parser/transaction_big_order_parser.py b/data_parser/transaction_big_order_parser.py
index b1d98d0..42aa437 100644
--- a/data_parser/transaction_big_order_parser.py
+++ b/data_parser/transaction_big_order_parser.py
@@ -166,10 +166,119 @@
 def concat_pre_transactions(dir_path):
     __concat_pre_datas(dir_path)
 
+
 def concat_pre_ngtsticks(dir_path):
     __concat_pre_datas(dir_path)
 
+
+def process_combined_transaction(dir_path):
+    """
+    澶勭悊鎷兼帴璧锋潵鐨勬暟鎹�
+    @param dir_path:
+    @return:
+    """
+    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()
+    grouped = df_copy.groupby(["SecurityID"])
+    # 搴旂敤鑱氬悎鍑芥暟
+    chunk_result = grouped.apply(pd.Series({}))
+    # chunk_result["SecurityID"] = chunk_result["SecurityID"].apply(BigOrderDealParser.code_format)
+    print(chunk_result.to_string(
+        index=False,  # 涓嶆樉绀虹储寮�
+        justify='left',  # 宸﹀榻�
+        float_format='%.3f'  # 娴偣鏁版牸寮�
+    ))
+
+
+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:
+    """
+
+    def first_last(group):
+        """
+            鑾峰彇绗竴鏉℃暟鎹笌鏈�鍚庝竴鏉�
+            @param group:
+            @return:
+            """
+        return pd.Series({
+        })
+
+    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 df_copy.empty:
+        print("鐩爣浠g爜瀵瑰簲鎴愪氦鏁版嵁涓虹┖")
+        return
+    df_copy["SecurityID"] = df_copy["SecurityID"].apply(BigOrderDealParser.code_format)
+    # 鎸塖ecurityID鍜孊uyNo鍒嗙粍
+    grouped = df_copy.groupby(['SecurityID'])
+    return set(grouped.groups.keys())
+
+
 if __name__ == "__main__":
-    pre_process_transactions("E:/娴嬭瘯鏁版嵁/Transaction_Test.csv")
+    # pre_process_transactions("E:/娴嬭瘯鏁版嵁/Transaction_Test.csv")
     # pre_process_ngtsticks("E:/娴嬭瘯鏁版嵁/NGTSTick_Test.csv")
-    concat_pre_transactions("E:/娴嬭瘯鏁版嵁/Transaction_Test")
+    # concat_pre_transactions("E:/娴嬭瘯鏁版嵁/Transaction_Test")
+    # extract_big_order_codes("E:/娴嬭瘯鏁版嵁/Transaction_Test")
+    extract_big_order_of_code("E:/娴嬭瘯鏁版嵁/Transaction_Test")

--
Gitblit v1.8.0