From 0ed2c53acd278d57a39390fd4db78c5aaf088e0a Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期五, 21 四月 2023 18:03:54 +0800
Subject: [PATCH] 开盘啦数据解析

---
 server.py |   95 +++++++++++++++++++++++++++++++++++------------
 1 files changed, 71 insertions(+), 24 deletions(-)

diff --git a/server.py b/server.py
index edde21d..0492870 100644
--- a/server.py
+++ b/server.py
@@ -22,6 +22,7 @@
 import gpcode_manager
 import authority
 import juejin
+import limit_up_time_manager
 from l2 import l2_data_manager_new, l2_data_manager, l2_data_log, l2_log, code_price_manager
 import l2_data_util
 from l2.cancel_buy_strategy import HourCancelBigNumComputer, L2LimitUpMoneyStatisticUtil
@@ -34,7 +35,7 @@
 from third_data import hot_block_data_process
 from ths import l2_listen_pos_health_manager
 from trade import trade_gui, trade_data_manager, trade_manager, l2_trade_util, deal_big_money_manager, \
-    first_code_score_manager
+    first_code_score_manager, current_price_process_manager
 import l2_code_operate
 from code_data_util import ZYLTGBUtil
 import l2.transaction_progress
@@ -272,16 +273,17 @@
                         # 淇濆瓨鏈瓫閫夌殑棣栨澘浠g爜
                         new_add_codes = gpcode_first_screen_manager.set_target_no_screen_codes(codes)
                         # 淇濆瓨鑷敱娴侀�氳偂鏈�
-                        zyltgb_list = []
-                        for data in dataList:
-                            code = data["code"]
-                            if code in global_util.zyltgb_map:
-                                continue
-                            zyltgb_list.append(
-                                {"code": code, "zyltgb": data["zyltgb"], "zyltgb_unit": data["zyltgbUnit"]})
-                        if zyltgb_list:
-                            ZYLTGBUtil.save_list(zyltgb_list)
-                            global_data_loader.load_zyltgb()
+                        if dataList:
+                            zyltgb_list = []
+                            for data in dataList:
+                                code = data["code"]
+                                if code in global_util.zyltgb_map:
+                                    continue
+                                zyltgb_list.append(
+                                    {"code": code, "zyltgb": data["zyltgb"], "zyltgb_unit": data["zyltgbUnit"]})
+                            if zyltgb_list:
+                                ZYLTGBUtil.save_list(zyltgb_list)
+                                global_data_loader.load_zyltgb()
 
                         bad_codes = set()
 
@@ -301,8 +303,8 @@
                                 need_get_volumn = True
                             if need_get_volumn:
                                 volumes_data = juejin.get_volumns_by_code(code, 150)
-                                volumes = juejin.parse_max_volume(volumes_data[:60], code_nature_analyse.is_new_top(
-                                    gpcode_manager.get_limit_up_price(code), volumes_data[:60]))
+                                volumes = juejin.parse_max_volume(volumes_data[:90], code_nature_analyse.is_new_top(
+                                    gpcode_manager.get_limit_up_price(code), volumes_data[:90]))
                                 logger_first_code_record.info("{} 鑾峰彇鍒伴鏉�60澶╂渶澶ч噺锛歿}", code, volumes)
                                 code_volumn_manager.set_histry_volumn(code, volumes[0], volumes[1], volumes[2])
                                 # 鍒ゆ柇K绾垮舰鎬�
@@ -330,6 +332,29 @@
                                 if not gpcode_manager.is_in_gp_pool(lc):
                                     # 绉婚櫎浠g爜
                                     l2_code_operate.L2CodeOperate.get_instance().add_operate(0, lc, "浠g爜琚Щ闄�")
+
+                        if new_add_codes:
+                            # 浣庡垎鍊间唬鐮佺姝氦鏄�
+                            for code in new_add_codes:
+                                try:
+                                    score, score_list = first_code_score_manager.get_score(code, 0, None, False)
+                                    if score < 0:
+                                        trade_manager.ForbiddenBuyCodeByScoreManager.add_code(code)
+                                    # elif score >= 200:
+                                    #     # 濡傛灉娌℃湁娑ㄥ仠杩�
+                                    #     limit_up_time = limit_up_time_manager.get_limit_up_time(code)
+                                    #     if limit_up_time is None and int(tool.get_now_time_str().replace(":","")) > int("113000"):
+                                    #         gpcode_manager.WantBuyCodesManager.add_code(code)
+                                except Exception as e:
+                                    logging.exception(e)
+
+                        # if dataList and int(tool.get_now_time_str().replace(":","")) > int("113000"):
+                        #     for data in dataList:
+                        #         code = data["code"]
+                        #         if gpcode_manager.WantBuyCodesManager.is_in(code):
+                        #             score, score_list = first_code_score_manager.get_score(code, 0, None, False)
+                        #             if score < 200:
+                        #                 gpcode_manager.WantBuyCodesManager.remove_code(code)
 
                         # 淇濆瓨鐜颁环
                         if dataList:
@@ -479,13 +504,17 @@
                         buy_time = data["buyTime"]
                         buy_one_price = data["buyOnePrice"]
                         buy_one_volumn = data["buyOneVolumn"]
+                        sell_one_price = data["sellOnePrice"]
+                        sell_one_volumn = data["sellOneVolumn"]
+
                         buy_queue = data["buyQueue"]
                         if buy_one_price is None:
                             print('涔�1浠锋病鏈夛紝', code)
                         limit_up_price = gpcode_manager.get_limit_up_price(code)
 
                         if limit_up_price is not None:
-                            code_price_manager.Buy1PriceManager.process(code, buy_one_price, buy_time, limit_up_price)
+                            code_price_manager.Buy1PriceManager.process(code, buy_one_price, buy_time, limit_up_price,
+                                                                        sell_one_price, sell_one_volumn)
                             _start_time = time.time()
                             msg += "涔�1浠锋牸澶勭悊锛�" + f"{_start_time - __start_time} "
 
@@ -602,7 +631,7 @@
                             volumn = item["volume"]
                             volumnUnit = item["volumeUnit"]
                             code_volumn_manager.save_today_volumn(item["code"], volumn, volumnUnit)
-                        juejin.accept_prices(datas)
+                        current_price_process_manager.accept_prices(datas)
                 elif type == 50:
                     data = data_process.parse(_str)["data"]
                     if data is not None:
@@ -756,14 +785,29 @@
                     # 鍔犲叆鐧藉悕鍗�
                     data = json.loads(_str)
                     codes = data["data"]["codes"]
-                    for code in codes:
-                        l2_trade_util.WhiteListCodeManager.add_code(code)
-                        name = gpcode_manager.get_code_name(code)
-                        if not name:
-                            results = juejin.JueJinManager.get_gp_codes_names([code])
-                            if results:
-                                gpcode_manager.CodesNameManager.add_first_code_name(code, results[code])
-                    return_str = json.dumps({"code": 0})
+                    try:
+                        for code in codes:
+                            # 鑷敱娴侀�氬競鍊�>50浜�,鑲′环楂樹簬30鍧楃殑涓嶈兘鍔犵櫧鍚嶅崟
+                            limit_up_price = gpcode_manager.get_limit_up_price(code)
+                            if float(limit_up_price) > 30:
+                                raise Exception("鑲′环楂樹簬30鍏�")
+                            # 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 > 50 * 100000000:
+                            #     raise Exception("鑷敱娴侀�氳偂鏈ぇ浜�50浜�")
+
+                            l2_trade_util.WhiteListCodeManager.add_code(code)
+                            name = gpcode_manager.get_code_name(code)
+                            if not name:
+                                results = juejin.JueJinManager.get_gp_codes_names([code])
+                                if results:
+                                    gpcode_manager.CodesNameManager.add_first_code_name(code, results[code])
+                        return_str = json.dumps({"code": 0})
+                    except Exception as e:
+                        return_str = json.dumps({"code": 1, "msg": str(e)})
+
                 elif type == 203:
                     # 绉婚櫎榛戝悕鍗�
                     data = json.loads(_str)
@@ -826,6 +870,9 @@
                     else:
                         trade_manager.TradeStateManager.close_buy()
                     return_str = json.dumps({"code": 0, "msg": ("寮�鍚垚鍔�" if is_open else "鍏抽棴鎴愬姛")})
+                elif type == 502:
+                    can_buy = trade_manager.TradeStateManager.is_can_buy()
+                    return_str = json.dumps({"code": 0, "data": {"can_buy": can_buy}})
 
                 sk.send(return_str.encode())
 
@@ -920,7 +967,7 @@
     for code in codes:
         try:
             global_data_loader.load_zyltgb()
-            limit_up_price =  float(gpcode_manager.get_limit_up_price(code))
+            limit_up_price = float(gpcode_manager.get_limit_up_price(code))
             volumes_data = juejin.get_volumns_by_code(code, 150)
             volumes_data = volumes_data[1:]
             volumes = juejin.parse_max_volume(volumes_data[:60],

--
Gitblit v1.8.0