From dd76d8dc94da81299d796b5b90ae54c072454e86 Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期一, 18 十一月 2024 16:20:09 +0800 Subject: [PATCH] 买入策略修改 --- l2/l2_data_manager_new.py | 55 ++++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 42 insertions(+), 13 deletions(-) diff --git a/l2/l2_data_manager_new.py b/l2/l2_data_manager_new.py index 9fa5594..bd0979b 100644 --- a/l2/l2_data_manager_new.py +++ b/l2/l2_data_manager_new.py @@ -17,6 +17,7 @@ from l2.place_order_single_data_manager import L2TradeSingleDataProcessor from log_module import async_log_util, log_export from third_data import kpl_data_manager, block_info +from trade.buy_radical.radical_buy_data_manager import EveryLimitupBigDealOrderManager from utils import global_util, tool, buy_condition_util, buy_strategy_util, trade_util import l2_data_util from db import redis_manager_delegate as redis_manager @@ -2030,11 +2031,28 @@ 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) # 濡傛灉鏈夊ぇ鍗曟垚浜ゅ氨涓嶉渶瑕佺湅澶у崟 - total_deal_money = BigOrderDealManager().get_total_buy_money(code) + + if constant.CAN_RADICAL_BUY_NEED_BIG_ORDER_EVERYTIME: + # 姣忔涓嬪崟閮介渶瑕佸ぇ鍗� + total_deal_money = EveryLimitupBigDealOrderManager.get_big_buy_deal_order_money(code) + else: + # 鍙渶瑕佹�绘垚浜ょ殑澶у崟 + total_deal_money = BigOrderDealManager().get_total_buy_money(code) + refer_sell_data = L2MarketSellManager().get_refer_sell_data(code, radical_data[3]) + # 鍙傝�冩�诲崠棰� + refer_sell_money = 0 + if refer_sell_data: + refer_sell_money = refer_sell_data[1] THRESHOLD_MONEY = 2990000 - if total_deal_money >= THRESHOLD_MONEY: + if refer_sell_money >= 1e7: + THRESHOLD_MONEY = 2990000 * 2 + else: + THRESHOLD_MONEY = 2990000 + if total_deal_money >= THRESHOLD_MONEY: min_num = int(5000 / limit_up_price) + # 鎬诲鎵樺ぇ鍗曢噾棰� + total_delegating_big_money = 0 single_index = None for i in range(start_index, end_index + 1): data = total_datas[i] @@ -2050,17 +2068,17 @@ # 鍒ゆ柇鏄惁涓哄ぇ鍗� order_money = dealing_active_order_info[2] + round(val["price"], 2) * val["num"] * 100 if order_money >= bigger_money: - total_deal_money += order_money - if total_deal_money >= THRESHOLD_MONEY: - single_index = i - break + total_delegating_big_money += order_money + if total_delegating_big_money + total_deal_money >= THRESHOLD_MONEY: + single_index = i + break if int(val["orderNo"]) <= radical_data[1]: # 涓诲姩涔板崟鍚庣殑鏁版嵁涓嶇畻 continue - total_deal_money += round(val["price"], 2) * val["num"] * 100 - if total_deal_money >= THRESHOLD_MONEY: + total_delegating_big_money += round(val["price"], 2) * val["num"] * 100 + if total_delegating_big_money + total_deal_money >= THRESHOLD_MONEY: single_index = i break if single_index is not None: @@ -2074,14 +2092,22 @@ if not radical_data: return False, None, "涓嶆弧瓒虫縺杩涗拱鐨勬潯浠�" - if t.time() > radical_data[0] and not is_radical_buy: - # 娌℃壂鍏ヨ繃鎵嶉渶瑕佸垽鏂椂闂� - return False, None, "瓒呰繃鐢熸晥鏃堕棿" + + if constant.CAN_RADICAL_BUY_AT_LIMIT_UP: + # 鏉夸笂鏀鹃噺鍙壂鍏� + if t.time() > radical_data[0] and not is_radical_buy: + # 娌℃壂鍏ヨ繃鎵嶉渶瑕佸垽鏂椂闂� + return False, None, "瓒呰繃鐢熸晥鏃堕棿" + else: + # 鏉夸笂鏀鹃噺涓嶅彲鎵叆 + if t.time() > radical_data[0]: + return False, None, "瓒呰繃鐢熸晥鏃堕棿" + result = __can_order() l2_log.debug(code, f"L2鎵叆鍒ゆ柇锛歿result}") if result[0]: - # 宸茬粡鎵叆涓嬭繃鍗曠殑灏遍渶瑕佸垽鏂澘涓婃斁閲忕殑璺濈 - if is_radical_buy: + # 宸茬粡鎵叆涓嬭繃鍗曚笖鍏佽鏉夸笂鏀鹃噺鎵叆鐨勫氨闇�瑕佸垽鏂澘涓婃斁閲忕殑璺濈 + if is_radical_buy and constant.CAN_RADICAL_BUY_AT_LIMIT_UP: is_limit_up_buy = cls.__is_at_limit_up_buy(code) if is_limit_up_buy: # 鍒ゆ柇鎴愪氦杩涘害鍒板綋鍓嶆暟鎹殑绗旀暟锛屽鏋滃皯浜�10绗斾笖杩樻湁鏈垚浜ょ殑澶у崟锛�>=299锛夊氨鍙互涓嬪崟 @@ -2098,6 +2124,9 @@ deal_codes) if not buy_blocks: return False, result[1], f"鏉垮潡浠g爜宸叉湁鎴愪氦锛歿radical_data[2]}" + # 濡傛灉鏉夸笂鏀鹃噺涓嶅彲涔板叆灏遍渶瑕佸垹闄や俊鍙� + if not constant.CAN_RADICAL_BUY_AT_LIMIT_UP and code in RadicalBuyDealCodesManager.buy_by_l2_delegate_expire_time_dict: + RadicalBuyDealCodesManager.buy_by_l2_delegate_expire_time_dict.pop(code) return True, result[1], radical_data[2] return result -- Gitblit v1.8.0