From 6503f578ea263b18ac01810e07b7acbc82f63a8f Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期一, 15 九月 2025 16:34:17 +0800 Subject: [PATCH] L后不足5笔撤单/建比>=40%时才采用新的下单方式 --- huaxin_client/l1_client.py | 68 ++++++++++++++------------------- 1 files changed, 29 insertions(+), 39 deletions(-) diff --git a/huaxin_client/l1_client.py b/huaxin_client/l1_client.py index 05e29af..0ee112f 100644 --- a/huaxin_client/l1_client.py +++ b/huaxin_client/l1_client.py @@ -9,7 +9,8 @@ from huaxin_client import socket_util, l1_subscript_codes_manager import xmdapi from huaxin_client import tool, constant -from log_module.log import logger_system, logger_local_huaxin_l1, logger_l2_codes_subscript +from log_module.log import logger_system, logger_local_huaxin_l1, logger_l2_codes_subscript, logger_debug +from third_data import custom_block_in_money_manager from utils import tool as out_tool ################B绫�################## @@ -121,20 +122,7 @@ return if pMarketDataField.SecurityName.find("ST") >= 0: return - close_price = round(pMarketDataField.UpperLimitPrice / out_tool.get_limit_up_rate(pMarketDataField.SecurityID), - 2) - try: - # 娴嬭瘯L1鏁版嵁 - if pMarketDataField.SecurityID == '600636' or pMarketDataField.SecurityID == '002430' or pMarketDataField.SecurityID == '300466': - d = {"SecurityID": pMarketDataField.SecurityID, "PreClosePrice": pMarketDataField.PreClosePrice, - "LastPrice": pMarketDataField.LastPrice, "BidPrice1": pMarketDataField.BidPrice1, - "BidVolume1": pMarketDataField.BidVolume1, "AskVolume1": pMarketDataField.AskVolume1, - "AskPrice1": pMarketDataField.AskPrice1, "UpperLimitPrice": pMarketDataField.UpperLimitPrice, - "UpdateTime": pMarketDataField.UpdateTime, "UpdateMillisec": pMarketDataField.UpdateMillisec} - logger_local_huaxin_l1.info(f"L1鏁版嵁锛歿d}") - except: - pass - + close_price = pMarketDataField.PreClosePrice lastPrice = pMarketDataField.LastPrice if pMarketDataField.BidPrice1: lastPrice = pMarketDataField.BidPrice1 @@ -142,26 +130,19 @@ if out_tool.get_limit_up_rate(pMarketDataField.SecurityID) > 1.1001: # 娑ㄥ仠鏉�20%浠ヤ笂鐨勬墦鎶� rate = rate / 2 - - # print(pMarketDataField.SecurityID, pMarketDataField.SecurityName, rate, pMarketDataField.Volume) - + # (浠g爜, 鐜颁环, 娑ㄥ箙, 閲�, 褰撳墠鏃堕棿, 涔�1浠�, 涔�1閲�, 涔�2浠�, 涔�2閲�, 鏇存柊鏃堕棿, 鍗�1浠�, 鍗�1閲�) level1_data_dict[pMarketDataField.SecurityID] = ( pMarketDataField.SecurityID, pMarketDataField.LastPrice, rate, pMarketDataField.Volume, time.time(), - pMarketDataField.BidPrice1, pMarketDataField.BidVolume1) - # print( - # "SecurityID[%s] SecurityName[%s] LastPrice[%.2f] Volume[%d] Turnover[%.2f] BidPrice1[%.2f] BidVolume1[%d] AskPrice1[%.2f] AskVolume1[%d] UpperLimitPrice[%.2f] LowerLimitPrice[%.2f]" - # % (pMarketDataField.SecurityID, pMarketDataField.SecurityName, pMarketDataField.LastPrice, - # pMarketDataField.Volume, - # pMarketDataField.Turnover, pMarketDataField.BidPrice1, pMarketDataField.BidVolume1, - # pMarketDataField.AskPrice1, - # pMarketDataField.AskVolume1, pMarketDataField.UpperLimitPrice, pMarketDataField.LowerLimitPrice)) + pMarketDataField.BidPrice1, pMarketDataField.BidVolume1, pMarketDataField.BidPrice2, + pMarketDataField.BidVolume2, pMarketDataField.UpdateTime, pMarketDataField.AskPrice1, + pMarketDataField.AskVolume1) __latest_subscript_codes = set() def __upload_codes_info(queue_l1_w_strategy_r: multiprocessing.Queue, datas): - if not tool.is_trade_time(): + if not tool.is_trade_time() and not tool.is_pre_trade_time(): return # 涓婁紶鏁版嵁 type_ = "set_target_codes" @@ -231,8 +212,18 @@ time.sleep(3) -def run(queue_l1_w_strategy_r, queue_l1_r_strategy_w): - logger_local_huaxin_l1.info("杩愯l1璁㈤槄鏈嶅姟") +def run(queue_l1_w_strategy_r, queue_l1_r_strategy_w, fixed_codes=None): + """ + 杩愯l1璁㈤槄浠诲姟 + + @param queue_l1_w_strategy_r: L1鏂瑰啓锛岀瓥鐣ユ柟璇� + @param queue_l1_r_strategy_w: L1鏂硅锛岀瓥鐣ユ柟鍐� + @param fixed_codes: 鍥哄畾瑕佽繑鍥炴暟鎹殑浠g爜 + @return: + """ + if fixed_codes is None: + fixed_codes = set() + logger_local_huaxin_l1.info(f"杩愯l1璁㈤槄鏈嶅姟锛屽浐瀹氫唬鐮侊細{fixed_codes}") codes_sh = [] codes_sz = [] for i in range(15): @@ -287,7 +278,7 @@ # 绛夊緟绋嬪簭缁撴潫 while True: - print("鏁伴噺", len(level1_data_dict)) + # print("鏁伴噺", len(level1_data_dict)) try: if len(level1_data_dict) < 1: continue @@ -296,17 +287,17 @@ # (浠g爜,鐜颁环,娑ㄥ箙,閲�,鏃堕棿) list_ = [level1_data_dict[k] for k in level1_data_dict] flist = [] - plist = [] now_time_int = int(tool.get_now_time_str().replace(":", "")) - threshold_rate = constant.L1_MIN_RATE_PRE if now_time_int < int( - "094000") else constant.L1_MIN_RATE + threshold_rate = constant.L1_MIN_RATE for d in list_: - if d[2] >= threshold_rate: - # 娑ㄥ箙灏忎簬5%鐨勯渶瑕佸垹闄� + if d[2] >= threshold_rate or d[0] in fixed_codes: + # 娑ㄥ箙灏忎簬3%鐨勯渶瑕佸垹闄� flist.append(d) - if d[0] in __position_codes: - plist.append(d) flist.sort(key=lambda x: x[2], reverse=True) + # 灏嗗浐瀹氫唬鐮佺殑鎺掑湪鏈�鍓� + for code in fixed_codes: + if code in level1_data_dict: + flist.insert(0, level1_data_dict[code]) # 姝e紡浜ゆ槗涔嬪墠鍏堝鐞嗘瘮杈冨皯鐨勬暟鎹紝涓嶇劧澶勭悊鏃堕棿涔呴�犳垚鏁版嵁鎷ュ牭 MAX_COUNT = 500 if now_time_int < int("092600"): @@ -316,13 +307,12 @@ elif now_time_int < int("092900"): MAX_COUNT = 400 datas = flist[:MAX_COUNT] - # 灏嗘寔浠撹偂鍔犲叆杩涘幓 - datas.extend(plist) if len(datas) > 0: logger_l2_codes_subscript.info("寮�濮�#鍗庨懌L1涓婁紶浠g爜锛氭暟閲�-{}", len(datas)) __upload_codes_info(queue_l1_w_strategy_r, datas) except Exception as e: logging.exception(e) + logger_debug.exception(e) finally: time.sleep(3) -- Gitblit v1.8.0