From b92c5507bc73f043882ccf39fa5376686b4684d6 Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期五, 12 四月 2024 11:07:13 +0800 Subject: [PATCH] 新版深证下单完善 --- l2/l2_transaction_data_manager.py | 80 +++++++++++++++++++++++---------------- 1 files changed, 47 insertions(+), 33 deletions(-) diff --git a/l2/l2_transaction_data_manager.py b/l2/l2_transaction_data_manager.py index da2b79e..5be243b 100644 --- a/l2/l2_transaction_data_manager.py +++ b/l2/l2_transaction_data_manager.py @@ -8,7 +8,7 @@ from l2 import l2_log from l2.huaxin import l2_huaxin_util from l2.l2_data_util import local_today_sellno_map, local_today_datas -from l2.place_order_single_data_manager import L2TradeSingleManager +from l2.place_order_single_data_manager import L2TradeSingleDataProcessor, L2TradeSingleDataManager from log_module import async_log_util from log_module.log import hx_logger_l2_transaction_desc, hx_logger_l2_transaction_sell_order @@ -108,6 +108,8 @@ # 淇濆瓨鏈�杩戞垚浜ょ殑浠锋牸 __latest_trade_price_dict = {} + __last_trade_data_dict = {} + # 杩斿洖鏈�杩�1s鐨勫ぇ鍗曞崠锛�(鎬诲崠閲戦,[(鍗栧崟鍙�,鎬绘墜鏁�,浠锋牸,锛�'寮�濮嬫椂闂�',涔板崟鍙凤級,锛�'缁撴潫鏃堕棿',涔板崟鍙凤級),...]) @classmethod def add_transaction_datas(cls, code, datas, limit_up_price=None): @@ -141,41 +143,53 @@ for d in datas: # 鑾峰彇褰撳墠鏄惁涓轰富鍔ㄤ拱 - _is_active_sell = is_active_sell(d[7], d[6]) - if not _is_active_sell and d[1] == limit_up_price: - # 琚姩娑ㄥ仠鍗�,杩欎釜鍗栫殑璁㈠崟鏄惁鍦ㄦ渶杩戠殑娑ㄥ仠鍗栧垪琛ㄤ腑 - L2TradeSingleManager.process_passive_limit_up_sell_data(d) + try: + _is_active_sell = is_active_sell(d[7], d[6]) + if not _is_active_sell and d[1] == limit_up_price: + # 琚姩娑ㄥ仠鍗�,杩欎釜鍗栫殑璁㈠崟鏄惁鍦ㄦ渶杩戠殑娑ㄥ仠鍗栧垪琛ㄤ腑 + L2TradeSingleDataProcessor.process_passive_limit_up_sell_data(d) - if not _is_active_sell: - continue - cls.__latest_sell_order_info_list_dict[code].append(d) - if code not in cls.__latest_sell_order_dict: - cls.__latest_sell_order_dict[code] = [d[7], d[2], d[1], (d[3], d[6]), (d[3], d[6])] - else: - if cls.__latest_sell_order_dict[code][0] == d[7]: - cls.__latest_sell_order_dict[code][1] += d[2] - cls.__latest_sell_order_dict[code][2] = d[1] - cls.__latest_sell_order_dict[code][4] = (d[3], d[6]) - else: - info = cls.__latest_sell_order_dict[code] + if not _is_active_sell: + continue - # 涓婁釜鍗栧崟鎴愪氦瀹屾垚 - # 灏佸瓨鏁版嵁锛岃绠楁柊璧风偣 - # 澶т簬50w鐨勫崠鍗曟墠浼氫繚瀛� - # 澶т簬50w鍔犲叆鍗栧崟 - money = info[1] * info[2] - if money >= 500000: - # 璁㈠崟閲岄潰鏈夋垚浜ゆ槸涓诲姩鍗栧氨绠椾富鍔ㄥ崠 - l2_log.info(code, hx_logger_l2_transaction_sell_order, - f"{cls.__latest_sell_order_dict[code]}") - cls.__big_sell_order_ids_dict[code].add(info[0]) - cls.__big_sell_order_info_dict[code][info[0]] = info - cls.__big_sell_order_info_list_dict[code].append(info) - # 鍙繚鐣�10w浠ヤ笂鐨勫崟 - if money > 100000: - cls.__latest_all_sell_orders_dict[code].append(info) - + # 鍒ゆ柇鏄惁鏄定鍋滆鍔ㄥ彉涓诲姩 + last_trade_data = cls.__last_trade_data_dict.get(code) + if last_trade_data and not is_active_sell(last_trade_data[7], last_trade_data[6]) and last_trade_data[ + 1] == limit_up_price: + if d[1] == limit_up_price: + # 娑ㄥ仠琚姩鍙樹富鍔� + L2TradeSingleDataManager.set_sell_passive_to_active_datas(code, last_trade_data, d) + cls.__latest_sell_order_info_list_dict[code].append(d) + if code not in cls.__latest_sell_order_dict: cls.__latest_sell_order_dict[code] = [d[7], d[2], d[1], (d[3], d[6]), (d[3], d[6])] + else: + if cls.__latest_sell_order_dict[code][0] == d[7]: + cls.__latest_sell_order_dict[code][1] += d[2] + cls.__latest_sell_order_dict[code][2] = d[1] + cls.__latest_sell_order_dict[code][4] = (d[3], d[6]) + else: + info = cls.__latest_sell_order_dict[code] + + # 涓婁釜鍗栧崟鎴愪氦瀹屾垚 + # 灏佸瓨鏁版嵁锛岃绠楁柊璧风偣 + # 澶т簬50w鐨勫崠鍗曟墠浼氫繚瀛� + # 澶т簬50w鍔犲叆鍗栧崟 + money = info[1] * info[2] + if money >= 500000: + # 璁㈠崟閲岄潰鏈夋垚浜ゆ槸涓诲姩鍗栧氨绠椾富鍔ㄥ崠 + l2_log.info(code, hx_logger_l2_transaction_sell_order, + f"{cls.__latest_sell_order_dict[code]}") + cls.__big_sell_order_ids_dict[code].add(info[0]) + cls.__big_sell_order_info_dict[code][info[0]] = info + cls.__big_sell_order_info_list_dict[code].append(info) + # 鍙繚鐣�10w浠ヤ笂鐨勫崟 + if money > 100000: + cls.__latest_all_sell_orders_dict[code].append(info) + + cls.__latest_sell_order_dict[code] = [d[7], d[2], d[1], (d[3], d[6]), (d[3], d[6])] + finally: + cls.__last_trade_data_dict[code] = d + latest_time = l2_huaxin_util.convert_time(datas[-1][3], with_ms=True) min_time = tool.trade_time_add_millionsecond(latest_time, -1000) min_time_int = int(min_time.replace(":", "").replace(".", "")) -- Gitblit v1.8.0