From 31c03f7c3458ca00d66e04df0af53e7dc3438688 Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期一, 05 八月 2024 17:36:24 +0800
Subject: [PATCH] 调整账户资金管理目录/买入调整/增加手续费接口

---
 l2/l2_data_manager_new.py |   33 ++++++++++++++++++++++++++++-----
 1 files changed, 28 insertions(+), 5 deletions(-)

diff --git a/l2/l2_data_manager_new.py b/l2/l2_data_manager_new.py
index 1b5610a..cf99e9b 100644
--- a/l2/l2_data_manager_new.py
+++ b/l2/l2_data_manager_new.py
@@ -34,9 +34,9 @@
 from log_module.log import logger_l2_trade_buy, logger_l2_process, logger_l2_error, logger_debug, \
     logger_l2_not_buy_reasons, logger_real_place_order_position
 
-from trade.trade_data_manager import CodeActualPriceProcessor, PlaceOrderCountManager
+from trade.trade_data_manager import CodeActualPriceProcessor, PlaceOrderCountManager, AccountMoneyManager
 
-from trade.trade_manager import TradeTargetCodeModeManager, AccountAvailableMoneyManager
+from trade.trade_manager import TradeTargetCodeModeManager
 
 from settings.trade_setting import MarketSituationManager, TradeBlockBuyModeManager
 
@@ -235,7 +235,7 @@
     __CodesTradeStateManager = trade_manager.CodesTradeStateManager()
     __PauseBuyCodesManager = gpcode_manager.PauseBuyCodesManager()
     __Buy1PriceManager = code_price_manager.Buy1PriceManager()
-    __AccountAvailableMoneyManager = AccountAvailableMoneyManager()
+    __AccountMoneyManager = AccountMoneyManager()
     __TradeBuyDataManager = trade_data_manager.TradeBuyDataManager()
     __LimitUpTimeManager = limit_up_time_manager.LimitUpTimeManager()
     __BlackListCodeManager = gpcode_manager.BlackListCodeManager()
@@ -253,6 +253,9 @@
 
     # 涔板叆閿�
     __buy_lock_dict = {}
+
+    # 褰撳墠鎵规姝e湪澶勭悊鐨勬暟鎹储寮�
+    __processing_data_indexes = {}
 
     # 鑾峰彇浠g爜璇勫垎
     @classmethod
@@ -383,6 +386,8 @@
     def process_add_datas(cls, code, add_datas, capture_timestamp, __start_time):
         now_time_str = tool.get_now_time_str()
         if len(add_datas) > 0:
+            # 璁板綍褰撳墠鎵规暟鎹殑绱㈠紩
+            cls.__processing_data_indexes[code] = (add_datas[0]["index"], add_datas[1]["index"])
             if code not in cls.__trade_log_placr_order_info_dict:
                 cls.__trade_log_placr_order_info_dict[code] = trade_record_log_util.PlaceOrderInfo()
             # 鎷兼帴鏁版嵁
@@ -975,11 +980,11 @@
             place_order_count = trade_data_manager.PlaceOrderCountManager().get_place_order_count(code)
             # 绗竴鍜岀浜屾涓嬪崟閮藉繀椤昏鏈夎嚦灏戜竴绗旀湭鎴愪氦/寰呮垚浜ょ殑澶у崟
             # 璁$畻澶у崟
+            total_datas = local_today_datas.get(code)
             if place_order_count < 2:
                 trade_index, is_default = transaction_progress.TradeBuyQueue().get_traded_index(code)
                 if trade_index is None:
                     trade_index = 0
-                total_datas = local_today_datas.get(code)
                 min_money = l2_data_util.get_big_money_val(limit_up_price, tool.is_ge_code(code))
                 left_count, left_num = L2DataComputeUtil.compute_left_buy_order(code, trade_index,
                                                                                 total_datas[-1]["index"],
@@ -987,7 +992,25 @@
                 if left_count < 1:
                     return False, False, f"绗瑊place_order_count + 1}涓嬪崟鏃犲緟鎴愪氦鐨勫ぇ鍗�"
 
-        # 鏆傛椂娉ㄩ噴鎯充拱鍗曞姛鑳�
+            # 鎵ц浣嶉偅涓�鎴虫暟鎹灏忎簬20鏉℃暟鎹�
+            THRESHOLD_BUY_COUNT = 20
+            buy_count = 0
+            min_num = int(5000 / limit_up_price)
+            range_indexes = cls.__processing_data_indexes.get(code)
+            if range_indexes:
+                for i in range(range_indexes[0], range_indexes[1] + 1):
+                    val = total_datas[i]["val"]
+                    if not L2DataUtil.is_limit_up_price_buy(val):
+                        continue
+                    if val["num"] < min_num:
+                        continue
+                    buy_count += 1
+                    if buy_count > THRESHOLD_BUY_COUNT:
+                        break
+            if buy_count > THRESHOLD_BUY_COUNT:
+                HuaXinSellOrderStatisticManager.clear_latest_deal_volume(code)
+                return False, True, f"鎵ц浣嶆壒娆℃暟鎹噺({buy_count})澶т簬{THRESHOLD_BUY_COUNT}"
+            # 鏆傛椂娉ㄩ噴鎯充拱鍗曞姛鑳�
         if not cls.__WantBuyCodesManager.is_in_cache(code):
             # if cls.__TradeTargetCodeModeManager.get_mode_cache() == TradeTargetCodeModeManager.MODE_ONLY_BUY_WANT_CODES:
             #     return False, True, f"鍙拱鎯充拱鍗曚腑鐨勪唬鐮�"

--
Gitblit v1.8.0