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