From 1252c9489b631905fbce608109260760537b224f Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期日, 05 二月 2023 19:19:34 +0800
Subject: [PATCH] S撤,安全笔数计算优化

---
 server.py |   74 +++++++++++++++++++++++++-----------
 1 files changed, 51 insertions(+), 23 deletions(-)

diff --git a/server.py b/server.py
index 4a6fcd5..8e11b4e 100644
--- a/server.py
+++ b/server.py
@@ -1,13 +1,16 @@
 """
 鎺ュ彈瀹㈡埛绔暟鎹殑鏈嶅姟鍣�
 """
-import datetime
+import decimal
 import json
 import logging
+import random
 import socketserver
 import socket
 import threading
 import time
+
+import cv2
 
 import alert_util
 import client_manager
@@ -22,7 +25,9 @@
 import l2_data_manager
 import l2_data_manager_new
 import l2_data_util
-import limit_up_time_manager
+from l2.cancel_buy_strategy import HourCancelBigNumComputer
+
+from ocr import ocr_util
 import ths_industry_util
 import ths_util
 import tool
@@ -31,9 +36,10 @@
 import trade_manager
 import l2_code_operate
 from code_data_util import ZYLTGBUtil
+import l2.transaction_progress
 
 from log import logger_l2_error, logger_device, logger_trade_delegate, logger_buy_1_volumn_record, \
-    logger_l2_trade_queue, logger_l2_latest_data
+    logger_l2_trade_queue, logger_l2_latest_data, logger_l2_trade_buy_queue
 from trade_queue_manager import THSBuy1VolumnManager, Buy1PriceManager, thsl2tradequeuemanager
 
 
@@ -58,6 +64,8 @@
     buy1_price_manager = Buy1PriceManager()
     l2_trade_queue_time_dict = {}
     l2_save_time_dict = {}
+    l2_trade_buy_queue_dict = {}
+    tradeBuyQueue = l2.transaction_progress.TradeBuyQueue()
 
     def setup(self):
         super().setup()  # 鍙互涓嶈皟鐢ㄧ埗绫荤殑setup()鏂规硶锛岀埗绫荤殑setup鏂规硶浠�涔堥兘娌″仛
@@ -78,7 +86,7 @@
         # print("- " * 30)
         sk: socket.socket = self.request
         while True:
-            data = sk.recv(1024000)
+            data = sk.recv(1024 * 1024 * 20)
             if len(data) == 0:
                 # print("瀹㈡埛绔柇寮�杩炴帴")
                 break
@@ -92,6 +100,7 @@
                     try:
                         origin_start_time = round(time.time() * 1000)
                         __start_time = round(time.time() * 1000)
+                        do_id = random.randint(0, 100000)
 
                         # level2鐩樺彛鏁版嵁
                         day, client, channel, code, capture_time, process_time, datas, origin_datas = l2_data_manager.parseL2Data(
@@ -105,12 +114,12 @@
                         # 10ms鐨勭綉缁滀紶杈撳欢鏃�
                         capture_timestamp = __start_time - process_time - 10
                         # print("鎴浘鏃堕棿锛�", process_time)
-                        __start_time = l2_data_log.l2_time(code, round(time.time() * 1000) - __start_time,
+                        __start_time = l2_data_log.l2_time(code, do_id, round(time.time() * 1000) - __start_time,
                                                            "鎴浘鏃堕棿锛歿} 鏁版嵁瑙f瀽鏃堕棿".format(process_time))
 
                         cid, pid = gpcode_manager.get_listen_code_pos(code)
 
-                        __start_time = l2_data_log.l2_time(code, round(time.time() * 1000) - __start_time,
+                        __start_time = l2_data_log.l2_time(code, do_id, round(time.time() * 1000) - __start_time,
                                                            "l2鑾峰彇浠g爜浣嶇疆鑰楁椂")
                         # 鍒ゆ柇鐩爣浠g爜浣嶇疆鏄惁涓庝笂浼犳暟鎹綅缃竴鑷�
                         if cid is not None and pid is not None and client == int(cid) and channel == int(pid):
@@ -119,16 +128,19 @@
                                 l2_code_operate.verify_with_l2_data_pos_info(code, client, channel)
                                 __start_time = round(time.time() * 1000)
                                 if gpcode_manager.is_listen(code):
-                                    __start_time = l2_data_log.l2_time(code, round(time.time() * 1000) - __start_time,
+                                    __start_time = l2_data_log.l2_time(code, do_id,
+                                                                       round(time.time() * 1000) - __start_time,
                                                                        "l2澶栭儴鏁版嵁棰勫鐞嗚�楁椂")
-                                    l2_data_manager_new.L2TradeDataProcessor.process(code, datas, capture_timestamp)
-                                    __start_time = l2_data_log.l2_time(code, round(time.time() * 1000) - __start_time,
+                                    l2_data_manager_new.L2TradeDataProcessor.process(code, datas, capture_timestamp,
+                                                                                     do_id)
+                                    __start_time = l2_data_log.l2_time(code, do_id,
+                                                                       round(time.time() * 1000) - __start_time,
                                                                        "l2鏁版嵁鏈夋晥澶勭悊澶栭儴鑰楁椂",
                                                                        False)
                                     # 淇濆瓨鍘熷鏁版嵁鏁伴噺
                                     l2_data_util.save_l2_latest_data_number(code, len(origin_datas))
                                     if round(time.time() * 1000) - __start_time > 20:
-                                        l2_data_log.l2_time(code, round(time.time() * 1000) - __start_time,
+                                        l2_data_log.l2_time(code, do_id, round(time.time() * 1000) - __start_time,
                                                             "寮傛淇濆瓨鍘熷鏁版嵁鏉℃暟鑰楁椂",
                                                             False)
 
@@ -155,7 +167,7 @@
                                 __end_time = round(time.time() * 1000)
                                 # 鍙褰曞ぇ浜�40ms鐨勬暟鎹�
                                 if __end_time - origin_start_time > 100:
-                                    l2_data_log.l2_time(code, round(time.time() * 1000) - origin_start_time,
+                                    l2_data_log.l2_time(code, do_id, round(time.time() * 1000) - origin_start_time,
                                                         "l2鏁版嵁澶勭悊鎬昏�楁椂",
                                                         True)
                     except Exception as e:
@@ -238,7 +250,6 @@
                                         apply_time = tool.trade_time_add_second(apply_time, 1)
 
                                     print(apply_time)
-                                    l2_data_manager_new.SecondAverageBigNumComputer.set_apply_time(code, apply_time)
                     except Exception as e:
                         logging.exception(e)
 
@@ -271,6 +282,29 @@
                     buy_time = data["buyTime"]
                     buy_one_price = data["buyOnePrice"]
                     buy_one_volumn = data["buyOneVolumn"]
+                    buy_queue = data["buyQueue"]
+                    buy_queue_result_list = self.tradeBuyQueue.save(code, gpcode_manager.get_limit_up_price(code),
+                                                                    buy_queue)
+                    if buy_queue_result_list:
+                        # 鏈夋暟鎹�
+                        try:
+                            buy_one_price_ = decimal.Decimal(round(float(buy_one_price), 2)).quantize(decimal.Decimal("0.00"))
+                            buy_progress_index = self.tradeBuyQueue.save_traded_index(code,buy_one_price_,
+                                                                                      buy_queue_result_list)
+                            if buy_progress_index is not None:
+                                HourCancelBigNumComputer.set_trade_progress(code,buy_progress_index)
+                            logger_l2_trade_buy_queue.info("鑾峰彇鎴愪氦浣嶇疆鎴愬姛锛� code-{} index-{}  鏁版嵁-{}", code,
+                                                           buy_progress_index,
+                                                           json.loads(buy_queue_result_list))
+                        except Exception as e:
+                            logger_l2_trade_buy_queue.warning("鑾峰彇鎴愪氦浣嶇疆澶辫触锛� code-{} 鍘熷洜-{}  鏁版嵁-{}", code, str(e),
+                                                              json.loads(buy_queue_result_list))
+
+                    # buy_queue鏄惁鏈夊彉鍖�
+                    if self.l2_trade_buy_queue_dict.get(code) is None or buy_queue != self.l2_trade_buy_queue_dict.get(
+                            code):
+                        self.l2_trade_buy_queue_dict[code] = buy_queue
+                        logger_l2_trade_buy_queue.info("{}-{}", code, buy_queue)
                     # 淇濆瓨鏈�杩戠殑璁板綍
                     if self.ths_l2_trade_queue_manager.save_recod(code, data):
                         if buy_time != "00:00:00":
@@ -352,14 +386,14 @@
                         if client_id in l2_clients:
                             alert_util.alarm()
                 elif type == 60:
-                    # 蹇冭烦淇℃伅
+                    # L2鑷惎鍔ㄦ垚鍔�
                     data = data_process.parse(_str)["data"]
                     client_id = data["client"]
                     print("L2鑷惎鍔ㄦ垚鍔�", client_id)
                     now_str = tool.get_now_time_str()
                     ts = tool.get_time_as_second(now_str)
-                    # 9鐐�25鍒�9鐐�28涔嬮棿鐨勮嚜鍚姩灏遍渶瑕佹壒閲忚缃唬鐮�
-                    if tool.get_time_as_second("09:24:50") <= ts <= tool.get_time_as_second("09:28:00"):
+                    # 9鐐�25鍒�9鐐�28涔嬮棿鐨勮嚜鍚姩灏遍渶瑕佹壒閲忚缃唬鐮�,鐩墠姘歌繙涓嶆墽琛�
+                    if tool.get_time_as_second("09:24:50") <= ts <= tool.get_time_as_second("09:28:00") and False:
                         # 鍑嗗鎵归噺璁剧疆浠g爜
                         return_json = {"code": 1, "msg": "绛夊緟鎵归噺璁剧疆浠g爜"}
                         return_str = json.dumps(return_json)
@@ -382,17 +416,10 @@
                                 break
                             else:
                                 time.sleep(3)
-
-
                     else:
                         return_json = {"code": 0, "msg": "寮�鍚湪绾跨姸鎬�"}
                         return_str = json.dumps(return_json)
 
-                    # print("蹇冭烦锛�", client_id)
-                elif type == 100:
-                    # 鍥惧儚璇嗗埆
-                    return_str = data_process.toJson({"code": 0, "data": {"datas": []}})
-                    pass
                 sk.send(return_str.encode())
 
         # print("----------handler end ----------")
@@ -473,7 +500,8 @@
 
 if __name__ == "__main__":
     try:
-        thsl2tradequeuemanager().test()
+        a=round(float("0002.90"),2)
+        print(decimal.Decimal(a).quantize(decimal.Decimal("0.00")))
         # repair_ths_main_site(2)
     except Exception as e:
         print(str(e))

--
Gitblit v1.8.0