From b696ad64d69705c03d43406f1d1d2010b16923bb Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期一, 25 九月 2023 11:11:36 +0800
Subject: [PATCH] 首次下单机制修改/华鑫撤单撤2次

---
 l2/l2_data_manager_new.py |   22 +++++++++++++++++++---
 1 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/l2/l2_data_manager_new.py b/l2/l2_data_manager_new.py
index 3271c09..a2d09d4 100644
--- a/l2/l2_data_manager_new.py
+++ b/l2/l2_data_manager_new.py
@@ -758,14 +758,30 @@
             return False, True, f"鑲′环澶т簬{constant.MAX_CODE_PRICE}鍧�"
 
         if constant.L2_SOURCE_TYPE == constant.L2_SOURCE_TYPE_HUAXIN:
+            total_data = local_today_datas.get(code)
             trade_price = current_price_process_manager.get_trade_price(code)
             if trade_price is None:
                 return False, True, f"灏氭湭鑾峰彇鍒板綋鍓嶆垚浜や环"
             if float(limit_up_price) - float(trade_price) > 0.00001:
-                return False, False, f"褰撳墠鎴愪氦浠凤紙{trade_price}锛夊皻鏈湪0妗e強浠ュ唴"
-
+                # 璁$畻淇″彿璧峰浣嶇疆鍒板綋鍓嶇殑鎵嬫暟
+                buy_single_index, buy_exec_index, buy_compute_index, num, count, max_num_set, buy_volume_rate = cls.__get_order_begin_pos(code)
+                num_operate_map = local_today_num_operate_map.get(code)
+                total_num = 0
+                for i in range(buy_single_index, total_data[-1]["index"] + 1):
+                    data = total_data[i]
+                    val = data["val"]
+                    if not L2DataUtil.is_limit_up_price_buy(val):
+                        continue
+                    left_count = l2_data_source_util.L2DataSourceUtils.get_limit_up_buy_no_canceled_count(code,
+                                                                                                          data["index"],
+                                                                                                          total_data,
+                                                                                                          num_operate_map)
+                    total_num += left_count * val["num"]
+                m_base_val = l2_trade_factor.L2PlaceOrderParamsManager.get_base_m_val(code)
+                thresh_hold_num = m_base_val//(float(gpcode_manager.get_limit_up_price(code))*100)
+                if total_num < thresh_hold_num * 2:
+                    return False, False, f"褰撳墠鎴愪氦浠凤紙{trade_price}锛夊皻鏈湪0妗e強浠ュ唴 涓� 绾拱棰�({total_num})灏忎簬2鍊峂鍊�({thresh_hold_num*2})"
             # 鍒ゆ柇鎴愪氦杩涘害鏄惁璺濈鎴戜滑鐨勪綅缃緢杩�
-            total_data = local_today_datas.get(code)
             trade_index, is_default = cls.__TradeBuyQueue.get_traded_index(code)
             if False and not is_default and trade_index:
                 not_cancel_num = 0

--
Gitblit v1.8.0