From 10e175f0b00ba76fc84e1478489bdce78f1a40ec Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期四, 22 五月 2025 14:12:28 +0800 Subject: [PATCH] 下单sinfo修改/加想的票累计大单成交足够后加红 --- l2/l2_data_manager_new.py | 60 +++++++++++++++++++++++++++++++++++++++--------------------- 1 files changed, 39 insertions(+), 21 deletions(-) diff --git a/l2/l2_data_manager_new.py b/l2/l2_data_manager_new.py index 5b18d74..b1f6617 100644 --- a/l2/l2_data_manager_new.py +++ b/l2/l2_data_manager_new.py @@ -190,7 +190,8 @@ # 濡傛灉鏄定鍋滀拱鎾や俊鍙烽渶瑕佺湅鏁版嵁浣嶇疆鏄惁姣斿紑濮嬪鐞嗘椂闂存棭 if L2DataUtil.is_limit_up_price_buy_cancel(data["val"]): # 鑾峰彇涔板叆淇″彿 - buy_index = l2_data_source_util.L2DataSourceUtils.get_buy_index_with_cancel_data_v2(total_datas[i], buyno_map) + buy_index = l2_data_source_util.L2DataSourceUtils.get_buy_index_with_cancel_data_v2(total_datas[i], + buyno_map) if buy_index is not None and buy_index < begin_pos: continue @@ -328,9 +329,11 @@ def set_real_place_order_index(cls, code, index, order_begin_pos: OrderBeginPosInfo, last_data): trade_record_log_util.add_real_place_order_position_log(code, index, order_begin_pos.buy_single_index) total_datas = local_today_datas.get(code) - use_time = tool.trade_time_sub_with_ms(L2DataUtil.get_time_with_ms(total_datas[index]["val"]) , L2DataUtil.get_time_with_ms( - total_datas[order_begin_pos.buy_exec_index]["val"])) - trade_record_log_util.add_place_order_use_time(code, f"鎵ц浣嶆椂闂达細{L2DataUtil.get_time_with_ms(total_datas[order_begin_pos.buy_exec_index]['val'])} 鑰楁椂锛歿use_time}") + use_time = tool.trade_time_sub_with_ms(L2DataUtil.get_time_with_ms(total_datas[index]["val"]), + L2DataUtil.get_time_with_ms( + total_datas[order_begin_pos.buy_exec_index]["val"])) + trade_record_log_util.add_place_order_use_time(code, + f"鎵ц浣嶆椂闂达細{L2DataUtil.get_time_with_ms(total_datas[order_begin_pos.buy_exec_index]['val'])} 鑰楁椂锛歿use_time}") l2_log.debug(code, "璁剧疆鐪熷疄涓嬪崟浣嶏細{}", index) cancel_buy_strategy.set_real_place_position(code, index, order_begin_pos.buy_single_index, is_default=False) # 鑾峰彇鐪熷疄涓嬪崟浣嶇疆涔嬪悗闇�瑕佸垽鏂璅鎾� @@ -1943,7 +1946,8 @@ total_datas = local_today_datas[code] limit_up_price = gpcode_manager.get_limit_up_price_as_num(code) bigger_money = l2_data_util.get_big_money_val(limit_up_price, tool.is_ge_code(code)) - min_num = int(bigger_money / limit_up_price / 100) + bigger_money_num, current_min_num, total_min_num = int(bigger_money / limit_up_price / 100), int( + bigger_money / limit_up_price / 100), int(5000 / limit_up_price) refer_sell_data = L2MarketSellManager().get_refer_sell_data(code, radical_data[3]) # 鍙傝�冩�诲崠棰� @@ -1959,7 +1963,8 @@ is_almost_open_limit_up= radical_data[5]) # 缂轰箯鐨勫ぇ鍗曢噾棰� - lack_money = big_order_deal_enough_result[3] + current_lack_money = int(big_order_deal_enough_result[5]) + total_lack_money = int(big_order_deal_enough_result[6]) # 濡傛灉鏈夊ぇ鍗曟垚浜ゅ氨涓嶉渶瑕佺湅澶у崟 if constant.CAN_RADICAL_BUY_NEED_BIG_ORDER_EVERYTIME: # 姣忔涓嬪崟閮介渶瑕佸ぇ鍗� @@ -1970,10 +1975,11 @@ # 60s浠ヤ笂灏变笉涓嬪崟浜� return False, None, "璺濈涓婃缁熻澶у崟鏃堕棿杩囧幓60s", set() - if lack_money == 0: - if not tool.is_sh_code(code): - # 闈炰笂璇佺殑绁ㄧ湅50w - min_num = int(5000 / limit_up_price) + if max(current_lack_money, total_lack_money) <= 0: + # 宸茬粡涓嶇己灏戝ぇ鍗曚簡 + # if not tool.is_sh_code(code): + # 闈炰笂璇佺殑绁ㄧ湅50w + current_min_num = int(5000 / limit_up_price) # 濡傛灉绱澶у崟鎴愪氦瓒冲锛屽彧闇�鐪�50w # if big_order_deal_enough_result[4]: # min_num = int(5000 / limit_up_price) @@ -1992,8 +1998,6 @@ val = data["val"] if not L2DataUtil.is_limit_up_price_buy(val): continue - if val["num"] < min_num: - continue # 鎾ゅ崟涓嶇畻 left_count = l2_data_source_util.L2DataSourceUtils.get_limit_up_buy_no_canceled_count_v2(code, i, total_datas, @@ -2008,23 +2012,35 @@ # 鍒ゆ柇鏄惁涓哄ぇ鍗� order_money = dealing_active_order_info[2] + round(val["price"], 2) * val["num"] * 100 if order_money >= bigger_money: - lack_money -= order_money - watch_indexes.add(i) - if lack_money < 0: + if val["num"] >= bigger_money_num: + watch_indexes.add(i) + if val["num"] >= current_min_num: + current_lack_money -= order_money + if val["num"] >= total_min_num: + total_lack_money -= order_money + if max(current_lack_money, total_lack_money) < 0: single_index = i break if int(val["orderNo"]) <= radical_data[1]: # 涓诲姩涔板崟鍚庣殑鏁版嵁涓嶇畻 continue - watch_indexes.add(i) - lack_money -= round(val["price"], 2) * val["num"] * 100 - if lack_money < 0: + + if val["num"] >= bigger_money_num: + watch_indexes.add(i) + + if val["num"] >= current_min_num: + current_lack_money -= round(val["price"], 2) * val["num"] * 100 + + if val["num"] >= total_min_num: + total_lack_money -= round(val["price"], 2) * val["num"] * 100 + + if max(current_lack_money, total_lack_money) < 0: single_index = i break if single_index is not None: return True, single_index, f"鏈夊ぇ鍗�,澶у崟鎯呭喌锛歿big_order_deal_enough_result[1]}", watch_indexes - return False, None, f"澶у崟涓嶈冻锛歿trade_index}-{end_index} 缂哄皯鐨勫ぇ鍗�-{lack_money} 澶у崟鎯呭喌锛歿big_order_deal_enough_result[1]}", watch_indexes + return False, None, f"澶у崟涓嶈冻锛歿trade_index}-{end_index} 缂哄皯鐨勫ぇ鍗�-{max(current_lack_money, total_lack_money)} 澶у崟鎯呭喌锛歿big_order_deal_enough_result[1]}", watch_indexes radical_data = RadicalBuyDealCodesManager.buy_by_l2_delegate_expire_time_dict.get(code) record_codes = radical_buy_data_manager.BlockPlaceOrderRecordManager().get_codes() @@ -2245,7 +2261,8 @@ f"{code}鑾峰彇鍒颁拱鍏ユ墽琛岀偣(蹇�熶拱鍏�)锛歿i} 缁熻绾拱鎵嬫暟锛歿buy_nums} 鐩爣绾拱鎵嬫暟锛歿threshold_num} 缁熻绾拱鍗曟暟锛歿buy_count}") elif L2DataUtil.is_limit_up_price_buy_cancel(_val): # 鍒ゆ柇涔板叆浣嶇疆鏄惁鍦ㄤ拱鍏ヤ俊鍙蜂箣鍓� - buy_index = l2_data_source_util.L2DataSourceUtils.get_buy_index_with_cancel_data_v2(total_datas[i], buy_no_map) + buy_index = l2_data_source_util.L2DataSourceUtils.get_buy_index_with_cancel_data_v2(total_datas[i], + buy_no_map) if buy_index is not None: # 鎵惧埌涔版挙鏁版嵁鐨勪拱鍏ョ偣 if buy_index >= buy_single_index: @@ -2385,7 +2402,8 @@ f"{code}鑾峰彇鍒颁拱鍏ユ墽琛岀偣(绉瀬涓嬪崟)锛歿i} 缁熻绾拱鎵嬫暟锛歿buy_nums} 鐩爣绾拱鎵嬫暟锛歿threshold_num} 缁熻绾拱鍗曟暟锛歿buy_count}") elif L2DataUtil.is_limit_up_price_buy_cancel(_val): # 鍒ゆ柇涔板叆浣嶇疆鏄惁鍦ㄤ拱鍏ヤ俊鍙蜂箣鍓� - buy_index = l2_data_source_util.L2DataSourceUtils.get_buy_index_with_cancel_data_v2(total_datas[i], buyno_map) + buy_index = l2_data_source_util.L2DataSourceUtils.get_buy_index_with_cancel_data_v2(total_datas[i], + buyno_map) if buy_index is not None: # 鎵惧埌涔版挙鏁版嵁鐨勪拱鍏ョ偣 -- Gitblit v1.8.0