From 81f328532e366eef171b71810b221a9294dda78f Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期四, 21 十二月 2023 14:31:58 +0800 Subject: [PATCH] 买入条件调整/L撤调整 --- l2/l2_data_manager_new.py | 55 +++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 45 insertions(+), 10 deletions(-) diff --git a/l2/l2_data_manager_new.py b/l2/l2_data_manager_new.py index 550d20f..e708f6e 100644 --- a/l2/l2_data_manager_new.py +++ b/l2/l2_data_manager_new.py @@ -12,7 +12,8 @@ from l2.l2_sell_manager import L2MarketSellManager, L2LimitUpSellManager from l2.transaction_progress import TradeBuyQueue from log_module import async_log_util, log_export -from third_data import kpl_data_manager, block_info +from third_data import kpl_data_manager, block_info, history_k_data_util +from third_data.history_k_data_util import HistoryKDatasUtils from utils import global_util, ths_industry_util, tool import l2_data_util from db import redis_manager_delegate as redis_manager @@ -22,7 +23,7 @@ from l2 import l2_data_manager, l2_log, l2_data_source_util, code_price_manager, \ transaction_progress, cancel_buy_strategy, l2_data_log from l2.cancel_buy_strategy import SecondCancelBigNumComputer, HourCancelBigNumComputer, DCancelBigNumComputer, \ - LCancelBigNumComputer, LatestCancelIndexManager, FastCancelBigNumComputer, LCancelRateManager + LCancelBigNumComputer, LatestCancelIndexManager, FastCancelBigNumComputer, LCancelRateManager, GCancelBigNumComputer from l2.l2_data_manager import L2DataException, OrderBeginPosInfo from l2.l2_data_util import local_today_datas, L2DataUtil, local_today_num_operate_map, local_today_buyno_map, \ local_latest_datas, local_today_canceled_buyno_map @@ -221,6 +222,7 @@ __SecondCancelBigNumComputer = SecondCancelBigNumComputer() __HourCancelBigNumComputer = HourCancelBigNumComputer() __LCancelBigNumComputer = LCancelBigNumComputer() + __GCancelBigNumComputer = GCancelBigNumComputer() __TradeStateManager = trade_manager.TradeStateManager() __CodesTradeStateManager = trade_manager.CodesTradeStateManager() __PauseBuyCodesManager = gpcode_manager.PauseBuyCodesManager() @@ -557,6 +559,25 @@ pass return None, "" + # G鎾� + def g_cancel(_buy_single_index, _buy_exec_index): + try: + b_need_cancel, b_cancel_data, extra_msg = cls.__GCancelBigNumComputer.need_cancel(code, + _buy_exec_index, + start_index, + end_index) + if b_need_cancel and b_cancel_data: + return b_cancel_data, f"G鎾�({extra_msg})" + except Exception as e: + async_log_util.error(logger_l2_error, + f"G鎾ゅ嚭閿� 鍙傛暟锛歜uy_single_index-{_buy_single_index} buy_exec_index-{_buy_exec_index} 閿欒鍘熷洜锛歿str(e)}") + # logger_l2_error.exception(e) + async_log_util.exception(logger_l2_error, e) + finally: + # l2_data_log.l2_time(code, round(t.time() * 1000) - _start_time, "宸蹭笅鍗�-L鎾ゅぇ鍗曡绠�") + pass + return None, "" + if start_index < 0: start_index = 0 @@ -573,6 +594,9 @@ cancel_data, cancel_msg = None, "" if order_begin_pos.mode == OrderBeginPosInfo.MODE_FAST: cancel_data, cancel_msg = f_cancel(order_begin_pos.buy_single_index, order_begin_pos.buy_exec_index) + + if not cancel_data: + cancel_data, cancel_msg = g_cancel(order_begin_pos.buy_single_index, order_begin_pos.buy_exec_index) # 渚濇澶勭悊 if not cancel_data: @@ -942,8 +966,6 @@ # if cls.__TradeTargetCodeModeManager.get_mode_cache() == TradeTargetCodeModeManager.MODE_ONLY_BUY_WANT_CODES: # return False, True, f"鍙拱鎯充拱鍗曚腑鐨勪唬鐮�" - if HighIncreaseCodeManager().is_in(code): - return False, True, f"娑ㄥ箙杩囬珮锛�5澶╁唴3娆℃定鍋�" return cls.can_buy_first(code, limit_up_price) # else: # return True, False, "鍦ㄦ兂涔板悕鍗曚腑" @@ -980,15 +1002,29 @@ if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < 0.6: return False, True, f"鑲′环鍒涙柊楂樻垨鑰呴�艰繎鍓嶉珮涓�30澶╁唴鏈夋定鍋�,褰撴棩閲忔瘮({cls.volume_rate_info[code][0]})灏忎簬0.6" - # 鍓嶄竴澶╃偢鏉夸箣鍚庯紝浠婃棩10:00涔嬪墠鎵嶈兘涓嬪崟 + # 涓�5涓氦鏄撴棩鏈夌偢鏉�/璺屽仠涔嬪悗 if k_format and len(k_format) >= 11 and k_format[10]: - if now_timestamp > int("100000"): - return False, True, f"涓婁釜浜ゆ槗鏃ョ偢鏉�,褰撴棩10鐐逛互鍚庝笉涓嬪崟" + if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < 0.6: + return False, True, f"涓�5涓氦鏄撴棩鐐告澘/璺屽仠,閲忔湭杈惧埌60%({cls.volume_rate_info[code][0]})" + + # 鑾峰彇閲忕殑鍙傝�冩棩鏈� + if code in global_util.max60_volumn: + day = global_util.max60_volumn[code][1] + if day in HistoryKDatasUtils.get_latest_trading_date_cache(5): + if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < 0.6: + return False, True, f"鍙傝�冮噺鍦ㄦ渶杩�5澶�,閲忔湭杈惧埌60%({cls.volume_rate_info[code][0]})" + + zyltgb = global_util.zyltgb_map.get(code) + if zyltgb >= 40 * 100000000: + return False, True, f"40浜夸互涓婄殑閮戒笉涔帮紙{zyltgb}锛�" + + if HighIncreaseCodeManager().is_in(code): + if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < 0.8: + return False, True, f"5澶╁唴3娆℃定鍋滐紝閲忔湭杈惧埌80%锛坽cls.volume_rate_info[code][0]}锛�" msg_list = [] - if can_buy_result[3] and now_timestamp <= int("094000"): + if now_timestamp <= int("094000"): msg_list.append("寮哄娍10鍒嗛挓") - zyltgb = global_util.zyltgb_map.get(code) # 鐙嫍 if not can_buy_result[0] and can_buy_result[1]: msg_list.append("鐙嫍") @@ -1019,7 +1055,6 @@ return True, False, can_buy_result[2] return True, False, can_buy_result[2] else: - zyltgb = global_util.zyltgb_map.get(code) # 闈炲己鍔�10鍒嗛挓鍙拱涓荤嚎 if not can_buy_result[0] and can_buy_result[1]: return False, True, f"闈炲己鍔�10鍒嗛挓锛岀嫭鑻椾笉涓嬪崟" -- Gitblit v1.8.0