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