From bd3b7881d06dbae315f6c39a4aaa95968af4eefa Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期二, 03 十二月 2024 13:34:57 +0800 Subject: [PATCH] L2订阅的目标代码修改 --- trade/current_price_process_manager.py | 96 ++++++++++++++++++++++++++++++++++++------------ 1 files changed, 72 insertions(+), 24 deletions(-) diff --git a/trade/current_price_process_manager.py b/trade/current_price_process_manager.py index 22ac7be..4baa5aa 100644 --- a/trade/current_price_process_manager.py +++ b/trade/current_price_process_manager.py @@ -7,9 +7,12 @@ from l2.huaxin import huaxin_target_codes_manager from log_module import async_log_util -from log_module.log import logger_l2_codes_subscript +from log_module.log import logger_l2_codes_subscript, logger_debug import constant from code_attribute import gpcode_manager +from third_data.kpl_data_constant import LimitUpCodesBlockRecordManager +from trade.buy_radical.block_special_codes_manager import BlockSpecialCodesManager +from trade.buy_radical.radical_buy_data_manager import RadicalBuyBlockManager from utils import tool, import_util from trade import trade_manager, l2_trade_util, trade_constant from trade.trade_data_manager import CodeActualPriceProcessor @@ -21,11 +24,65 @@ latest_add_codes = set() -def accept_prices(prices, request_id=None): - print("鎬讳环鏍间唬鐮佹暟閲忥細", len(prices)) - now_str = tool.get_now_time_str() - # 鑾峰彇鎯充拱鍗� - want_codes = gpcode_manager.WantBuyCodesManager().list_code_cache() +def __compute_code_order(code, top_in_blocks=None, yesterday_limit_up_codes=None): + """ + 璁$畻浠g爜鐨勬帓搴� + @param code: + @param top_in_blocks: 鍑�娴佸叆鍓嶅嚑 + @return: 鎺掑簭鍊硷紝鑻ヤ负璐熷�间笉璁㈤槄 + """ + # 鎯充拱鍗�/闅斿鍗曟帓搴忎綅 + if yesterday_limit_up_codes is None: + yesterday_limit_up_codes = set() + if top_in_blocks is None: + top_in_blocks = [] + # 鎯充拱鍗� + if gpcode_manager.WantBuyCodesManager().is_in_cache(code): + return 0 + # 闅斿鍗曟媿涓� + if gpcode_manager.BuyOpenLimitUpCodeManager().is_in_cache(code): + return 0 + + trade_state = trade_manager.CodesTradeStateManager().get_trade_state_cache(code) + # 濡傛灉褰撳墠娓呭崟澶勪簬濮旀墭鐘舵�佸氨涓嶈兘绉婚櫎 + if trade_state == trade_constant.TRADE_STATE_BUY_PLACE_ORDER or trade_state == trade_constant.TRADE_STATE_BUY_DELEGATED: + return 0 + # 楂樹綅鏉� + if code in yesterday_limit_up_codes: + return -1 + # 榛戝悕鍗� + if l2_trade_util.is_in_forbidden_trade_codes(code): + return -1 + # 鏉垮潡 + blocks = LimitUpCodesBlockRecordManager().get_radical_buy_blocks(code) + if not blocks: + return -1 + for b in blocks: + if b in top_in_blocks: + index = top_in_blocks.index(b) + # 鏌ヨ鍦ㄦ澘鍧椾腑鐨勬帓搴� + info = RadicalBuyBlockManager().get_history_index(code, b, yesterday_limit_up_codes) + if info[0] < 4: + return index + 1 + elif info[0] < 6: + # 鍒ゆ柇鏄惁鍏锋湁杈ㄨ瘑搴� + special_codes = BlockSpecialCodesManager().get_block_codes(b) + if special_codes and code in special_codes: + return index + 1 + return 10000 + + +def accept_prices(prices, request_id=None, top_in_blocks=None, yesterday_limit_up_codes=None): + """ + 鎺ユ敹浠锋牸锛屽鐞嗚闃� + @param yesterday_limit_up_codes: 鏄ㄦ棩娑ㄥ仠鏁版嵁 + @param history_limit_up_datas: 鍘嗗彶娑ㄥ仠鏁版嵁 + @param prices: + @param request_id: + @param top_in_blocks: 鍑�娴佸叆鍓嶅嚑鐨勪唬鐮� + @return: + """ + logger_debug.debug(f"鎺ユ敹L1鏁版嵁娴嬭瘯锛氭祦鍏ュ墠20-{top_in_blocks}") if True: _code_list = [] _delete_list = [] @@ -37,24 +94,14 @@ pricePre = gpcode_manager.CodePrePriceManager.get_price_pre_cache(code) if pricePre is not None: # 鏄惁鏄兂涔板崟 - is_want_buy = code in want_codes - trade_state = trade_manager.CodesTradeStateManager().get_trade_state_cache(code) - # 濡傛灉褰撳墠娓呭崟澶勪簬濮旀墭鐘舵�佸氨涓嶈兘绉婚櫎 - if trade_state == trade_constant.TRADE_STATE_BUY_PLACE_ORDER or trade_state == trade_constant.TRADE_STATE_BUY_DELEGATED: - is_want_buy = True - - if gpcode_manager.BuyOpenLimitUpCodeManager().is_in_cache(code): - is_want_buy = True + order_index = __compute_code_order(code, top_in_blocks, yesterday_limit_up_codes) rate = round((price - pricePre) * 100 / pricePre, 2) if tool.is_ge_code(code): # 鍒涗笟鏉跨殑娑ㄥ箙闇�瑕佹墦鎶� rate = rate / 2 - if rate >= 0: - # 鏆傚瓨娑ㄥ箙涓烘鐨勪唬鐮� - _code_list.append((rate, code, 1 if is_want_buy else 0)) - elif is_want_buy: - _code_list.append((rate, code, 1 if is_want_buy else 0)) + if order_index >= 0: + _code_list.append((rate, code, order_index)) else: # 鏆傚瓨娑ㄥ箙涓鸿礋鐨勪唬鐮� _delete_list.append((rate, code, 0)) @@ -69,7 +116,8 @@ gpcode_manager.set_prices(temp_prices) # -------------------------------澶勭悊浜ゆ槗浣嶇疆鍒嗛厤--------------------------------- # 鎺掑簭 - new_code_list = sorted(_code_list, key=lambda e: (e.__getitem__(2), e.__getitem__(0)), reverse=True) + new_code_list = sorted(_code_list, key=lambda e: (e[2], -e[0])) + logger_debug.debug(f"鎺ユ敹L1鏁版嵁娴嬭瘯锛氭帓搴忚繃鍚庣殑浠g爜-{new_code_list[:75]}") # -------------------------------澶勭悊L2鐩戝惉--------------------------------- max_count = constant.HUAXIN_L2_MAX_CODES_COUNT @@ -78,10 +126,10 @@ if l2_trade_util.is_in_forbidden_trade_codes( item[1]) or item[0] < 0: # 鍦紙榛戝悕鍗曪級/锛堟定骞呭皬浜庯級鐨勬暟鎹� - if trade_manager.CodesTradeStateManager().get_trade_state_cache( - item[1]) != trade_constant.TRADE_STATE_BUY_SUCCESS: - # 娌℃垚浜ゆ墠浼氬姞鍏ュ垹闄� - _delete_list.append(item) + # if trade_manager.CodesTradeStateManager().get_trade_state_cache( + # item[1]) != trade_constant.TRADE_STATE_BUY_SUCCESS: + # 娌℃垚浜ゆ墠浼氬姞鍏ュ垹闄� + _delete_list.append(item) for item in _delete_list: new_code_list.remove(item) -- Gitblit v1.8.0