From 256248e09fa5e44c18a2cd7b45b203d09aa4a3ee Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期三, 10 九月 2025 10:06:37 +0800
Subject: [PATCH] bug修复

---
 test/test_sell.py |  181 ++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 179 insertions(+), 2 deletions(-)

diff --git a/test/test_sell.py b/test/test_sell.py
index f456565..d97b2d2 100644
--- a/test/test_sell.py
+++ b/test/test_sell.py
@@ -1,4 +1,181 @@
-from trade.huaxin import huaxin_trade_server
+from cancel_strategy.s_l_h_cancel_strategy import SCancelBigNumComputer
+from l2.huaxin import l2_huaxin_util
+from l2.l2_data_manager import OrderBeginPosInfo
+from l2.l2_transaction_data_manager import HuaXinSellOrderStatisticManager
+from l2 import l2_data_util
+from l2.l2_transaction_data_processor import HuaXinTransactionDatasProcessor
+from log_module import log_export, async_log_util
+from utils import tool
+
+
+def statistic_buy_order():
+    code = "002187"
+    data_map = log_export.load_huaxin_transaction_map(date="2024-04-10", with_time=True)
+    datas = data_map.get(code)
+    __latest_buy_order_dict = {}
+    total_money = 0
+    active_buy = 0
+    passive_buy = 0
+    for data in datas:
+        time_str = data[0]
+        for d in data[1]:
+            if d[6] == 990054:
+                if d[7] < 990054:
+                    active_buy += d[2]
+                    print("涓诲姩涔帮細", time_str, d)
+                else:
+                    passive_buy += d[2]
+                    print("琚姩涔帮細", time_str, d)
+            if code not in __latest_buy_order_dict:
+                # 鏍煎紡锛歔涔板崟鍙�,鎵嬫暟,鍗曚环]
+                __latest_buy_order_dict[code] = [d[6], d[2], d[1], (d[3], d[1]), (d[3], d[1])]
+            else:
+                if __latest_buy_order_dict[code][0] == d[6]:
+                    __latest_buy_order_dict[code][1] += d[2]
+                    __latest_buy_order_dict[code][2] = d[1]
+                    __latest_buy_order_dict[code][4] = (d[3], d[1])
+                else:
+                    info = __latest_buy_order_dict[code]
+
+                    # 涓婁釜鍗栧崟鎴愪氦瀹屾垚
+                    # 灏佸瓨鏁版嵁锛岃绠楁柊璧风偣
+                    # 澶т簬50w鐨勫崠鍗曟墠浼氫繚瀛�
+                    # 澶т簬50w鍔犲叆鍗栧崟
+                    money = info[1] * info[2]
+                    # if 101328000 > info[3] > 101324000:
+                    if tool.trade_time_sub(l2_huaxin_util.convert_time(info[3][0]), "10:08:30") >= 0 and info[
+                        2] >= 11.54:
+                        total_money += money
+                        print(int(total_money), round(money / 10000, 1), info)
+                    if money >= 500000:
+                        pass
+                    __latest_buy_order_dict[code] = [d[6], d[2], d[1], (d[3], d[1]), (d[3], d[1])]
+
+    print(f"涓诲姩涔帮細{active_buy}", f"琚姩涔帮細{passive_buy}")
+
+
+# 鍗栧崟缁熻
+def statistic_sell_order():
+    def is_active_sell(sell_no, buy_no):
+        return sell_no > buy_no
+
+    code = "002660"
+    data_map = log_export.load_huaxin_transaction_map(date=tool.get_now_date_str())
+    datas = data_map.get(code)
+    __latest_sell_order_dict = {}
+    total_money = 0
+    limit_up_price = 9.2
+    last_type = -1
+
+    for data in datas:
+        for d in data:
+            if d[6] == 24975654:
+                print(d[1] * d[2], d)
+
+            type = -1
+            if d[7] > d[6]:
+                type = 0
+            else:
+                type = 1
+            if type == 0 and last_type == 1 and d[1] == limit_up_price:
+                print("琚姩鍗栧彉涓诲姩鍗�", d)
+            last_type = type
+
+            # if d[6] == 21296620:
+            #     if d[7] > d[6]:
+            #         print("涓诲姩鍗�", d)
+            #     else:
+            #         print("琚姩鍗�", d[1] * d[2], d)
+            if code not in __latest_sell_order_dict:
+                __latest_sell_order_dict[code] = [d[7], d[2], d[1], (d[3], d[6]), (d[3], d[6])]
+            else:
+                if __latest_sell_order_dict[code][0] == d[7]:
+                    __latest_sell_order_dict[code][1] += d[2]
+                    __latest_sell_order_dict[code][2] = d[1]
+                    __latest_sell_order_dict[code][4] = (d[3], d[6])
+                else:
+                    info = __latest_sell_order_dict[code]
+                    money = info[1] * info[2]
+                    if is_active_sell(info[0], info[3][1]) and 1000 * 10000 > money > 10 * 10000 and 7852775 > info[
+                        0] > 7807625:
+                        total_money += money
+                        # print("涓诲姩鍗栵細", round(money / 10000), total_money, info)
+
+                    # 涓婁釜鍗栧崟鎴愪氦瀹屾垚
+                    # 灏佸瓨鏁版嵁锛岃绠楁柊璧风偣
+                    # 澶т簬50w鐨勫崠鍗曟墠浼氫繚瀛�
+                    # 澶т簬50w鍔犲叆鍗栧崟
+
+                    # if tool.trade_time_sub(l2_huaxin_util.convert_time(info[3][0]), "10:08:30") >= 0:
+                    #     if info[2] >= 11.54:
+                    #         total_money += money
+                    #         print(money, round(total_money), info)
+                    # if money >= 500000:
+                    #     pass
+                    __latest_sell_order_dict[code] = [d[7], d[2], d[1], (d[3], d[6]), (d[3], d[6])]
+
+
+def load_sell_info():
+    date = tool.get_now_date_str()
+    data_map = log_export.load_huaxin_transaction_map(date=date)
+    for code in data_map:
+        if code != '002562':
+            continue
+        datas = data_map[code]
+        for d in datas:
+            big_sell_order_info = HuaXinSellOrderStatisticManager.add_transaction_datas(code, d)
+    async_log_util.run_sync()
+
+
+def test_sell_order_info():
+    code = "600490"
+    l2_data_util.load_l2_data(code, force=True)
+    date = tool.get_now_date_str()
+    data_map = log_export.load_huaxin_transaction_map(date=date)
+    datas = data_map.get(code)
+    for i in range(len(datas)):
+        d = datas[i]
+        big_sell_order_info = HuaXinSellOrderStatisticManager.add_transaction_datas(code, d)
+
+        if big_sell_order_info[1] and big_sell_order_info[1][-1][0] == 559018:
+            print(big_sell_order_info)
+            SCancelBigNumComputer().set_real_place_order_index(code, 208, False)
+            SCancelBigNumComputer().set_big_sell_order_info_for_cancel(code, big_sell_order_info,
+                                                                       OrderBeginPosInfo(
+                                                                           mode=OrderBeginPosInfo.MODE_ACTIVE,
+                                                                           buy_single_index=0,
+                                                                           buy_exec_index=13))
+        # if big_sell_order_info[0] < 50 * 10000:
+        #     continue
+        # print(i, sum([x[1] * x[2] for x in big_sell_order_info[1]]), big_sell_order_info)
+
+
+def test_process_transaction_datas():
+    data_map = log_export.load_huaxin_transaction_map(date="2024-04-17")
+    code = "000035"
+    datas = data_map.get(code)
+    l2_data_util.load_l2_data(code)
+    for data in datas:
+        HuaXinTransactionDatasProcessor.statistic_big_order_infos(code, data)
+
+    async_log_util.run_sync()
+
+    # L2TradeSingleDataProcessor.add_l2_delegate_limit_up_sell(code, {"val": {"orderNo": 123123}, "index": 123})
+    #
+    # for data in datas:
+    #     L2TradeSingleDataProcessor.process_passive_limit_up_sell_data(code, data, 5.78)
+
 
 if __name__ == '__main__':
-    huaxin_trade_server.TradeServerProcessor.test_sell()
+    # s
+    # real_order_time_ms = "09:30:47" + ".{0:0>3}".format(220)
+    # big_sell_order_info = [1809599, [[7351750, 208000, 8.7, (11042670, 527268), (11042670, 527275)]]]
+    # max_money = 0
+    # for x in big_sell_order_info[1]:
+    #     deal_time = l2_huaxin_util.convert_time(x[4][0], with_ms=True)
+    #     if real_order_time_ms:
+    #         if tool.trade_time_sub_with_ms(deal_time, real_order_time_ms) >= 0:
+    #             print("123123")
+    # test_process_transaction_datas()
+    # BigOrderDealManager()
+    pass

--
Gitblit v1.8.0