From 3a87b1c89a76d858e8e7e4e54ff360dc0b8670f5 Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期四, 11 九月 2025 16:27:20 +0800 Subject: [PATCH] L撤删除L前撤单与L后后半段撤单 --- trade/current_price_process_manager.py | 53 +++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 37 insertions(+), 16 deletions(-) diff --git a/trade/current_price_process_manager.py b/trade/current_price_process_manager.py index bcf2a4c..e74a537 100644 --- a/trade/current_price_process_manager.py +++ b/trade/current_price_process_manager.py @@ -10,18 +10,18 @@ from log_module.log import logger_l2_codes_subscript, logger_debug import constant from code_attribute import gpcode_manager +from third_data import kpl_data_constant from third_data.code_plate_key_manager import KPLPlateForbiddenManager from third_data.kpl_data_constant import LimitUpCodesBlockRecordManager, LimitUpDataConstant from trade.buy_money_count_setting import BuyMoneyUtil -from trade.buy_radical import radical_buy_data_manager +from trade.buy_radical import radical_buy_data_manager, new_block_processor from trade.buy_radical.block_special_codes_manager import BlockSpecialCodesManager from trade.buy_radical.radical_buy_data_manager import RadicalBuyBlockManager, RadicalBuyDataManager +from trade.order_statistic import DealAndDelegateWithBuyModeDataManager from utils import tool, import_util from trade import trade_manager, l2_trade_util, trade_constant from trade.trade_data_manager import CodeActualPriceProcessor, RadicalBuyDealCodesManager import concurrent.futures - -trade_gui = import_util.import_lib("trade.trade_gui") __actualPriceProcessor = CodeActualPriceProcessor() @@ -30,7 +30,8 @@ latest_add_codes = set() -def compute_code_order(code, top_in_blocks=None, yesterday_limit_up_codes=None, today_history_limit_up_codes=None, top_out_blocks=None): +def compute_code_order(code, top_in_blocks=None, yesterday_limit_up_codes=None, today_history_limit_up_codes=None, + top_out_blocks=None): """ 璁$畻浠g爜鐨勬帓搴� @param code: @@ -51,7 +52,9 @@ return -1 # 榛戝悕鍗� trade_state = trade_manager.CodesTradeStateManager().get_trade_state_cache(code) - + # 澶勪簬濮旀墭鐘舵�佺殑蹇呴』璁㈤槄 + if trade_state == trade_constant.TRADE_STATE_BUY_DELEGATED or trade_state == trade_constant.TRADE_STATE_BUY_PLACE_ORDER: + return 0 if l2_trade_util.is_in_forbidden_trade_codes(code): # 娌℃湁鎴愪氦 if trade_state == trade_constant.TRADE_STATE_BUY_SUCCESS: @@ -59,18 +62,20 @@ return 998 else: return -1 - deal_codes = RadicalBuyDealCodesManager().get_deal_codes() result = RadicalBuyDataManager().is_code_can_buy(code, deal_codes) if not result[0]: if len(result) > 2 and result[2]: # 鍙互鎷夐粦 - l2_trade_util.forbidden_trade(code, result[1]) + if new_block_processor.is_can_forbidden(code): + l2_trade_util.forbidden_trade(code, msg=result[1]) return -1 # 鎯充拱鍗� if gpcode_manager.WantBuyCodesManager().is_in_cache(code): return 0 + else: + return -1 # 闅斿鍗曟帓涓� if gpcode_manager.BuyOpenLimitUpCodeManager().is_in_cache(code): return 0 @@ -100,7 +105,7 @@ return 200 else: # 娌℃湁杈ㄨ瘑搴︼紝鏂版澘鍧楄闃呭墠3 - new_blocks = LimitUpCodesBlockRecordManager().get_new_blocks() + new_blocks = kpl_data_constant.get_new_blocks(code) if new_blocks and b in new_blocks: info = RadicalBuyBlockManager().get_history_index(code, b, yesterday_limit_up_codes) if info[0] > 0: @@ -127,6 +132,17 @@ continue # 鍑�娴佸叆 + 杈ㄨ瘑搴� return index + 1 + # 鍒ゆ柇浠婃棩杈ㄨ瘑搴� + try: + for b in blocks: + if radical_buy_data_manager.RadicalBuyBlockManager.is_today_block_special_codes(code, b, + yesterday_limit_up_codes): + if b in top_in_blocks: + index = top_in_blocks.index(b) + return index + 1 + except Exception as e: + logger_debug.exception(e) + return 10000 @@ -151,7 +167,7 @@ code, price = d["code"], float(d["price"]) temp_prices.append((code, price)) # 鑾峰彇鏀剁洏浠� - pricePre = gpcode_manager.CodePrePriceManager.get_price_pre_cache(code) + pricePre = gpcode_manager.CodePrePriceManager().get_price_pre_cache(code) if pricePre is not None: # 鏄惁鏄兂涔板崟 order_index = compute_code_order(code, top_in_blocks, yesterday_limit_up_codes, @@ -161,8 +177,8 @@ # 鍒涗笟鏉跨殑娑ㄥ箙闇�瑕佹墦鎶� rate = rate / 2 if order_index >= 0: - if order_index < 1000 and rate >= 3: - # 娑ㄥ箙澶т簬3%鐨勬墠鑳借闃� + if order_index < 1000 and rate >= 0: + # 娑ㄥ箙澶т簬7%鐨勬墠鑳借闃� _code_list.append((rate, code, order_index)) else: _delete_list.append((rate, code, 0)) @@ -188,7 +204,8 @@ _delete_list = [] for item in new_code_list: trade_state = trade_manager.CodesTradeStateManager().get_trade_state_cache(item[1]) - if l2_trade_util.is_in_forbidden_trade_codes(item[1]) and trade_state != trade_constant.TRADE_STATE_BUY_SUCCESS: + if l2_trade_util.is_in_forbidden_trade_codes( + item[1]) and trade_state != trade_constant.TRADE_STATE_BUY_SUCCESS: # 鎷夐粦鐨勫皻鏈垚浜ょ殑浠g爜 _delete_list.append(item) elif item[0] < 0: @@ -216,6 +233,10 @@ for d in _delete_list: del_code_list.append(d[1]) + if del_code_list: + async_log_util.info(logger_l2_codes_subscript, + f"({request_id})闇�瑕佸垹闄よ闃呯殑浠g爜锛歿del_code_list}") + if constant.L2_SOURCE_TYPE == constant.L2_SOURCE_TYPE_HUAXIN: # 鍗庨懌L2,鑾峰彇鍔犲叆浠g爜鐨勬定鍋滀环 @@ -230,8 +251,8 @@ dif2 = add_code_set - latest_add_codes if dif2: # 鏂板鍔犵殑璁㈤槄闇�瑕佹媺鍙栦箣鍓嶇殑澶у崟 - for c in dif2: - __pre_big_order_deal_thread_pool.submit(radical_buy_data_manager.pull_pre_deal_big_orders, c) + __pre_big_order_deal_thread_pool.submit(radical_buy_data_manager.pull_pre_deal_big_orders_by_codes, + dif2) if True: async_log_util.info(logger_l2_codes_subscript, f"({request_id})棰勫鐞嗘柊澧炶闃呬唬鐮侊細{dif2}") @@ -239,7 +260,7 @@ add_datas = [] for d in add_code_list: limit_up_price = gpcode_manager.get_limit_up_price_as_num(d) - min_volume = int(round(50 * 10000 / limit_up_price)) + min_volume = int(round(constant.L2_MIN_MONEY / limit_up_price)) # 闇�瑕佽闃呯殑鐗规畩鐨勯噺 special_volumes = BuyMoneyUtil.get_possible_buy_volumes(limit_up_price) special_volumes |= set([tool.get_buy_volume_by_money(limit_up_price, x) for x in @@ -250,7 +271,7 @@ tool.get_buy_volume(limit_up_price), list(special_volumes))) huaxin_target_codes_manager.HuaXinL2SubscriptCodesManager.push(add_datas, request_id) except Exception as e: - logging.exception(e) + logger_debug.exception(e) else: pass -- Gitblit v1.8.0