From ea44e1fddfb7a663802ca6dcd33f2350c805ec61 Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期二, 03 六月 2025 16:40:36 +0800
Subject: [PATCH] 获取昨日收盘价接口更换为huaxin/调整大单接口/优化昨日收盘价获取方式

---
 trade/buy_radical/radical_buy_data_manager.py |    4 +-
 utils/init_data_util.py                       |   13 +++---
 code_attribute/gpcode_manager.py              |    5 ++
 servers/huaxin_trade_server.py                |    3 +
 servers/data_server.py                        |    2 +
 third_data/history_k_data_manager.py          |   34 ++++++++++++++++
 6 files changed, 51 insertions(+), 10 deletions(-)

diff --git a/code_attribute/gpcode_manager.py b/code_attribute/gpcode_manager.py
index 4dbcfc1..6ff0a55 100644
--- a/code_attribute/gpcode_manager.py
+++ b/code_attribute/gpcode_manager.py
@@ -8,7 +8,7 @@
 from db import redis_manager_delegate as redis_manager
 from db.mysql_data_delegate import Mysqldb
 from db.redis_manager_delegate import RedisUtils
-from log_module import log_export
+from log_module import log_export, async_log_util
 from log_module.log import logger_pre_close_price, logger_debug
 from trade import trade_record_log_util
 from utils import tool
@@ -794,6 +794,9 @@
     # 璁剧疆鏀剁洏浠�
     @classmethod
     def set_price_pre(cls, code, price, force=False):
+        if float(price) > 1000:
+            async_log_util.info(logger_debug, f"鑾峰彇鏄ㄦ棩鏀剁洏浠峰紓甯革細{code}-{price}")
+            return
         if code in cls.__price_pre_cache and not force:
             return
         price = round(float(price), 2)
diff --git a/servers/data_server.py b/servers/data_server.py
index c6ada19..527f3aa 100644
--- a/servers/data_server.py
+++ b/servers/data_server.py
@@ -993,6 +993,8 @@
                                 output_util.money_desc(deal_big_money_info[2]),
                                 # 鍘熺疮璁″ぇ鍗曢槇鍊硷紙闈炰汉涓鸿缃級
                                 output_util.money_desc(deal_big_money_info[3]),
+                                # 浜轰负璁剧疆鐨勫ぇ鍗�
+                                output_util.money_desc(deal_big_money_info[4]) if deal_big_money_info[4] else '',
                             ]
                             if len(codes) == 1:
                                 # 鍔犺浇澶у崟璇︽儏
diff --git a/servers/huaxin_trade_server.py b/servers/huaxin_trade_server.py
index 1b1ad6c..9a19bc8 100644
--- a/servers/huaxin_trade_server.py
+++ b/servers/huaxin_trade_server.py
@@ -41,6 +41,7 @@
 from third_data import block_info, kpl_data_manager, history_k_data_manager, huaxin_l1_data_manager, kpl_api, kpl_util
 from third_data.code_plate_key_manager import KPLCodeJXBlockManager, RealTimeKplMarketData, \
     KPLPlateForbiddenManager
+from third_data.history_k_data_manager import HistoryKDataManager
 from third_data.history_k_data_util import JueJinApi, HistoryKDatasUtils
 from trade import l2_trade_util, \
     trade_data_manager, trade_constant, buy_open_limit_up_strategy
@@ -1149,6 +1150,8 @@
     # 鍒濆鍖栨暟鎹�
     BuyMoneyAndCountSetting()
     gpcode_manager.WantBuyCodesManager()
+    # 鍔犺浇鍘嗗彶K绾挎暟鎹�
+    HistoryKDataManager().load_data()
 
 
 def run(queue_strategy_r_trade_w, queue_strategy_w_trade_r, queue_strategy_w_trade_r_for_read, trade_ipc_addr):
diff --git a/third_data/history_k_data_manager.py b/third_data/history_k_data_manager.py
index cb995d5..c6c2cca 100644
--- a/third_data/history_k_data_manager.py
+++ b/third_data/history_k_data_manager.py
@@ -11,6 +11,7 @@
 from huaxin_client import l1_subscript_codes_manager
 from log_module.log import logger_debug
 from third_data import history_k_data_util
+from third_data.history_k_data_util import HistoryKDatasUtils
 from utils import tool, init_data_util
 
 
@@ -47,10 +48,13 @@
 
 
 def re_set_price_pres(codes, force=False):
-    day = tool.get_now_date_str()
     # 閫氳繃鍘嗗彶鏁版嵁缂撳瓨鑾峰彇
+    # 鑾峰彇涓婁竴涓氦鏄撴棩
+    day = HistoryKDatasUtils.get_previous_trading_date_cache(tool.get_now_date_str())
     not_codes = []
     for code in codes:
+        if not tool.is_can_buy_code(code):
+            continue
         pre_close = HistoryKDataManager().get_pre_close(code, day)
         if pre_close is not None:
             gpcode_manager.CodePrePriceManager.set_price_pre(code, pre_close, force)
@@ -158,6 +162,34 @@
                 return datas
         return None
 
+    def load_data(self):
+        """
+        鍔犺浇鏁版嵁
+        @param day:
+        @return:
+        """
+        day = HistoryKDatasUtils.get_previous_trading_date_cache(tool.get_now_date_str())
+        cache_dir = self.__get_cache_dir()
+        if not os.path.exists(cache_dir):
+            return
+        fs = os.listdir(cache_dir)
+        for f in fs:
+            if f.find(day) < 0:
+                continue
+            with open(os.path.join(cache_dir, f), mode='r', encoding='utf-8') as fs:
+                line = fs.readline()
+                if line:
+                    datas = eval(line)
+                    # 灏嗘棩鏈熸牸寮忚浆涓篸atetime
+                    for d in datas:
+                        for k in d:
+                            if type(d[k]) == str and d[k].find("-") > 0 and d[k].find(":") > 0 and d[k].find(" ") > 0:
+                                d[k] = datetime.datetime.strptime(d[k], "%Y-%m-%d %H:%M:%S")
+                    if datas:
+                        if day not in self.__history_k_day_datas:
+                            self.__history_k_day_datas[day] = {}
+                        self.__history_k_day_datas[day][datas[0]['sec_id']] = datas
+
     def get_pre_close(self, code, day):
         """
         鑾峰彇涔嬪墠鐨勬敹鐩樹环
diff --git a/trade/buy_radical/radical_buy_data_manager.py b/trade/buy_radical/radical_buy_data_manager.py
index c28b375..e43661c 100644
--- a/trade/buy_radical/radical_buy_data_manager.py
+++ b/trade/buy_radical/radical_buy_data_manager.py
@@ -1792,7 +1792,7 @@
     """
     鎬绘垚浜ゅぇ鍗曞晩鏄惁瓒冲
     @param code:
-    @return:(缂哄皯鐨勮祫閲�, 鎬绘垚浜ら噾棰�, 瑕佹眰鐨勫ぇ鍗曢噾棰�, 璁$畻寰楀埌鐨勫ぇ鍗曢槇鍊奸噾棰�)
+    @return:(缂哄皯鐨勮祫閲�, 鎬绘垚浜ら噾棰�, 瑕佹眰鐨勫ぇ鍗曢噾棰�, 璁$畻寰楀埌鐨勫ぇ鍗曢槇鍊奸噾棰�, 浜轰负璁剧疆鐨勫ぇ鍗�)
     """
 
     THRESHOLD_MONEY, is_temp_threshold_money = BeforeSubDealBigOrderManager().get_big_order_threshold_info(code)
@@ -1824,7 +1824,7 @@
     except Exception as e:
         async_log_util.info(logger_l2_radical_buy, f"璁$畻姝e湪鎴愪氦澶у崟鍑洪敊锛歿str(e)}")
     total_lack_money = max(0, int(TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY - deal_big_order_money))
-    return total_lack_money, deal_big_order_money, TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY, TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY_WITH_COMPUTE
+    return total_lack_money, deal_big_order_money, TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY, TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY_WITH_COMPUTE, human_setting_money
 
 
 def is_big_order_deal_enough(code, volume_rate, refer_total_sell_money, for_buy=False, is_almost_open_limit_up=False):
diff --git a/utils/init_data_util.py b/utils/init_data_util.py
index be4543b..70a3f5b 100644
--- a/utils/init_data_util.py
+++ b/utils/init_data_util.py
@@ -14,12 +14,13 @@
 
 def re_set_price_pres(codes, force=False):
     # 閫氳繃鍘嗗彶鏁版嵁缂撳瓨鑾峰彇
-    result = HistoryKDatasUtils.get_gp_latest_info(codes)
-    for item in result:
-        symbol = item['symbol']
-        symbol = symbol.split(".")[1]
-        pre_close = tool.to_price(decimal.Decimal(str(item['pre_close'])))
-        gpcode_manager.CodePrePriceManager.set_price_pre(symbol, pre_close, force)
+    for code in codes:
+        result = HistoryKDatasUtils.get_history_tick_n(code, 1)
+        for item in result:
+            symbol = item['symbol']
+            symbol = symbol.split(".")[1]
+            pre_close = tool.to_price(decimal.Decimal(str(item['close'])))
+            gpcode_manager.CodePrePriceManager.set_price_pre(symbol, pre_close, force)
 
 
 # 鑾峰彇杩�90澶╃殑鏈�澶ч噺涓庢渶杩戠殑閲�

--
Gitblit v1.8.0