From 0ed2c53acd278d57a39390fd4db78c5aaf088e0a Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期五, 21 四月 2023 18:03:54 +0800 Subject: [PATCH] 开盘啦数据解析 --- l2/l2_data_manager_new.py | 80 +++++++++++++++++++++++++++++++++++++--- 1 files changed, 74 insertions(+), 6 deletions(-) diff --git a/l2/l2_data_manager_new.py b/l2/l2_data_manager_new.py index fb4bd7c..358e867 100644 --- a/l2/l2_data_manager_new.py +++ b/l2/l2_data_manager_new.py @@ -6,6 +6,7 @@ import code_data_util import code_volumn_manager import constant +import global_data_loader import global_util import gpcode_manager import industry_codes_sort @@ -15,6 +16,7 @@ from db import redis_manager import ths_industry_util import tool +from third_data import hot_block, hot_block_data_process from trade import trade_data_manager, trade_manager, trade_queue_manager, l2_trade_factor, l2_trade_util, \ trade_result_manager, first_code_score_manager from l2 import safe_count_manager, l2_data_manager, l2_data_log, l2_log, l2_data_source_util, code_price_manager @@ -24,7 +26,7 @@ from l2.l2_data_util import local_today_datas, L2DataUtil, load_l2_data, local_today_num_operate_map, local_latest_datas import l2.l2_data_util from log import logger_l2_trade, logger_l2_trade_cancel, logger_l2_trade_buy, logger_l2_process, logger_l2_error, \ - logger_buy_score + logger_place_order_score # TODO l2鏁版嵁绠$悊 from trade.trade_data_manager import CodeActualPriceProcessor @@ -173,7 +175,6 @@ score_dict[code] = score return score_dict - @classmethod # 鏁版嵁澶勭悊鍏ュ彛 # datas: 鏈鎴浘鏁版嵁 @@ -251,7 +252,9 @@ cls.__l2PlaceOrderParamsManagerDict[code] = l2_trade_factor.L2PlaceOrderParamsManager(code, is_first_code, volume_rate, volume_rate_index, - score) + score, + total_datas[-1][ + 'val']['time']) cls.volume_rate_info[code] = (volume_rate, volume_rate_index) latest_time = add_datas[len(add_datas) - 1]["val"]["time"] @@ -434,6 +437,7 @@ if cancel_data: l2_log.debug(code, "瑙﹀彂鎾ゅ崟锛屾挙鍗曚綅缃細{} 锛屾挙鍗曞師鍥狅細{}", cancel_data["index"], cancel_msg) + l2_log.trade_record(code, "鎾ゅ崟", "'index':{} , 'msg':'{}'", cancel_data["index"], cancel_msg) # 鎾ゅ崟 if cls.cancel_buy(code, cancel_msg): _start_time = l2_data_log.l2_time(code, tool.get_now_timestamp() - _start_time, @@ -470,17 +474,17 @@ if code in cls.unreal_buy_dict: cls.unreal_buy_dict.pop(code) + buy_single_index, buy_exec_index, buy_compute_index, num, count, max_num_set, buy_volume_rate = cls.__get_order_begin_pos( + code) if not can: l2_log.debug(code, "涓嶅彲浠ヤ笅鍗曪紝鍘熷洜锛歿}", reason) if need_clear_data: - buy_single_index, buy_exec_index, buy_compute_index, num, count, max_num_set, buy_volume_rate = cls.__get_order_begin_pos( - code) trade_result_manager.real_cancel_success(code, buy_single_index, buy_exec_index, local_today_datas.get(code)) return else: l2_log.debug(code, "鍙互涓嬪崟锛屽師鍥狅細{}", reason) - logger_buy_score.info(f"{code}:{cls.__l2PlaceOrderParamsManagerDict[code].score_info}") + try: l2_log.debug(code, "寮�濮嬫墽琛屼拱鍏�") trade_manager.start_buy(code, capture_timestamp, last_data, @@ -488,6 +492,12 @@ ################涓嬪崟鎴愬姛澶勭悊################ trade_result_manager.real_buy_success(code) l2_log.debug(code, "鎵ц涔板叆鎴愬姛") + params_desc = cls.__l2PlaceOrderParamsManagerDict[code].get_buy_rank_desc() + l2_log.debug(code, params_desc) + l2_log.trade_record(code, "涓嬪崟", + "'buy_start_index':{} ,'buy_exec_index':{},'volume_reate':{},'score':{},'desc':'{}'", + buy_single_index, buy_exec_index, cls.volume_rate_info[code][0], + cls.__l2PlaceOrderParamsManagerDict[code].score, params_desc) except Exception as e: l2_log.debug(code, "鎵ц涔板叆寮傚父:{}", str(e)) pass @@ -662,13 +672,71 @@ def __can_buy_first(cls, code): if not trade_manager.TradeStateManager.is_can_buy(): return False, True, f"浠婃棩宸茬姝氦鏄�" + limit_up_info = code_price_manager.Buy1PriceManager.get_limit_up_info(code) + if limit_up_info[0] is None and False: + total_data = local_today_datas.get(code) + buy_single_index, buy_exec_index, buy_compute_index, num, count, max_num_set, buy_volume_rate = cls.__get_order_begin_pos( + code) + # 涔嬪墠娌℃湁娑ㄥ仠杩� + # 缁熻涔板叆淇″彿浣嶅埌褰撳墠浣嶇疆娌℃湁鎾ょ殑澶у崟閲戦 + min_money_w = l2_data_util.get_big_money_val(float(total_data[buy_single_index]["val"]["price"])) // 10000 + left_big_num = l2.cancel_buy_strategy.SecondCancelBigNumComputer.compute_left_big_num(code, + buy_single_index, + buy_exec_index, + total_data[-1][ + "index"], + total_data, + 0, min_money_w) + if left_big_num > 0: + # 閲嶆柊鑾峰彇鍒嗘暟涓庡垎鏁扮储寮� + limit_up_time = limit_up_time_manager.get_limit_up_time(code) + if limit_up_time is None: + limit_up_time = tool.get_now_time_str() + score = first_code_score_manager.get_score(code, cls.volume_rate_info[code][0], limit_up_time, True, + left_big_num) + cls.__l2PlaceOrderParamsManagerDict[code].set_score(score) + + logger_place_order_score.info("code={},data='score_index':{},'score_info':{}", code, + cls.__l2PlaceOrderParamsManagerDict[code].score_index, + cls.__l2PlaceOrderParamsManagerDict[code].score_info) if not gpcode_manager.WantBuyCodesManager.is_in(code): + # 鏌ョ湅鍒嗘暟绛夌骇 score_index = cls.__l2PlaceOrderParamsManagerDict[code].score_index score = cls.__l2PlaceOrderParamsManagerDict[code].score + score_info = cls.__l2PlaceOrderParamsManagerDict[code].score_info + + zyltgb = global_util.zyltgb_map.get(code) + if zyltgb is None: + global_data_loader.load_zyltgb() + zyltgb = global_util.zyltgb_map.get(code) + # 鍖哄垎澶хエ锛屽皬绁� + if zyltgb >= 80 * 100000000: + if cls.volume_rate_info[code][0] < 0.5: + return False, True, f"澶у競鍊�:閲忓ぇ浜�50%鎵嶄笅鍗�,閲忔瘮锛歿cls.volume_rate_info[code][0]}" + elif zyltgb <= 35 * 100000000: + # 鑾峰彇鏉垮潡涓殑绁ㄧ殑鏁伴噺 + if score_info[1][5]["limit_up_codes_count"] < 2: + return False, True, f"灏忓競鍊�:鏉垮潡涓繀椤�2涓定鍋滄墠鑳戒拱锛屾澘鍧梴score_info[1][5]['target_block_info'][0]}-娑ㄥ仠鏁皗score_info[1][5]['limit_up_codes_count']}" + + # 灏剧洏鍋疯窇绁� + limit_up_time = score_info[1][7] + if limit_up_time is None: + limit_up_time = tool.get_now_time_str() + if int(limit_up_time.replace(":", "")) > int("143000"): + if not score_info[1][3][6][0]: + return False, True, f"灏剧洏鍋疯窇:鏃犱换浣曞舰鎬�" + if score_info[1][5]["limit_up_codes_count"] > 1: + return False, True, f"灏剧洏鍋疯窇:鏉垮潡{score_info[1][5]['target_block_info'][0]}-娑ㄥ仠鏁皗score_info[1][5]['limit_up_codes_count']}" + if float(gpcode_manager.get_limit_up_price(code)) > 30: + return False, True, f"灏剧洏鍋疯窇:鑲′环澶т簬30" + if score_index < 0: return False, True, f"鍒嗗�硷細{score}鏈揪鍒伴渶瑕佷拱鍏ョ殑鍒嗘暟绾�" + if score_index >= 3: + return False, True, f"鍒嗗�硷細{score}鏈揪鍒颁富鍔ㄤ拱鍏ュ垎鏁扮嚎" + return True, False, "" # if -1 < score_index < 3 and (0.499 <= cls.volume_rate_info[code][0] <= 0.949): # return True, False, f"鍒嗗�硷細{score}杈惧埌涓诲姩涔板叆鐨勫垎鏁扮嚎涓旈噺瓒冲锛屼拱鍏ョ瓑绾э細f{score_index},閲忔瘮锛歿cls.volume_rate_info[code][0]}" is_limited_up = gpcode_manager.FirstCodeManager.is_limited_up(code) -- Gitblit v1.8.0