From ed9e2367eea9baa6c8bea82e0f81c209ffb2a56f Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期一, 02 一月 2023 17:55:50 +0800
Subject: [PATCH] 撤单策略再次修改

---
 server.py |   57 ++++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 52 insertions(+), 5 deletions(-)

diff --git a/server.py b/server.py
index e00cf8c..daa7031 100644
--- a/server.py
+++ b/server.py
@@ -26,6 +26,7 @@
 import ths_industry_util
 import ths_util
 import tool
+import trade_data_manager
 import trade_gui
 import trade_manager
 import l2_code_operate
@@ -96,7 +97,8 @@
                         day, client, channel, code, capture_time, process_time, datas, origin_datas = l2_data_manager.parseL2Data(
                             _str)
                         # 闂撮殧1s淇濆瓨涓�鏉2鐨勬渶鍚庝竴鏉℃暟鎹�
-                        if code not in self.l2_save_time_dict or origin_start_time - self.l2_save_time_dict[code] >= 1000 and len(datas) > 0:
+                        if code not in self.l2_save_time_dict or origin_start_time - self.l2_save_time_dict[
+                            code] >= 1000 and len(datas) > 0:
                             self.l2_save_time_dict[code] = origin_start_time
                             logger_l2_latest_data.info("{}#{}#{}", code, capture_time, datas[-1])
 
@@ -157,7 +159,7 @@
                                                         "l2鏁版嵁澶勭悊鎬昏�楁椂",
                                                         True)
                     except Exception as e:
-                        logging.exception(e)
+                        logger_l2_error.exception(e)
                 elif type == 1:
                     # 璁剧疆鑲$エ浠g爜
                     data_list, is_add = data_process.parseGPCode(_str)
@@ -219,6 +221,28 @@
                         # 淇濆瓨濮旀墭淇℃伅
                         logger_trade_delegate.info(dataList)
                     try:
+                        # 璁剧疆鐢虫姤鏃堕棿
+                        for item in dataList:
+                            apply_time = item["apply_time"]
+                            if apply_time and len(apply_time) >= 8:
+                                code = item["code"]
+                                trade_state = trade_manager.get_trade_state(code)
+                                # 璁剧疆涓嬪崟鐘舵�佺殑浠g爜涓哄凡濮旀墭
+                                if trade_state == trade_manager.TRADE_STATE_BUY_PLACE_ORDER:
+                                    origin_apply_time = apply_time
+                                    apply_time = apply_time[0:6]
+                                    apply_time = "{}:{}:{}".format(apply_time[0:2], apply_time[2:4], apply_time[4:6])
+                                    ms = origin_apply_time[6:9]
+                                    if int(ms) > 500:
+                                        # 鏃堕棿+1s
+                                        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)
+
+                    try:
                         trade_manager.process_trade_delegate_data(dataList)
                     except Exception as e:
                         logging.exception(e)
@@ -251,11 +275,12 @@
                     if self.ths_l2_trade_queue_manager.save_recod(code, data):
                         if buy_time != "00:00:00":
                             logger_l2_trade_queue.info("{}-{}", code, data)
+                            self.buy1_price_manager.save(code, buy_one_price)
                             need_sync, need_cancel, cancel_msg = self.buy1_volumn_manager.save(code, buy_time,
                                                                                                int(buy_one_volumn),
                                                                                                buy_one_price)
                             if need_cancel:
-                                l2_data_manager_new.L2TradeDataProcessor.cancel_buy(code, cancel_msg)
+                                l2_data_manager_new.L2TradeDataProcessor.cancel_buy(code, cancel_msg, "trade_queue")
                             if need_sync:
                                 # 鍚屾鏁版嵁
                                 l2_data_manager_new.L2LimitUpMoneyStatisticUtil.verify_num(code, int(buy_one_volumn),
@@ -285,7 +310,6 @@
                 elif type == 50:
                     data = data_process.parse(_str)["data"]
                     if data is not None:
-                        print(data)
                         index = data["index"]
                         code_name = data["codeName"].replace(" ", "")
                         volumn = data["volumn"]
@@ -309,7 +333,7 @@
                             need_sync, need_cancel, cancel_msg = self.buy1_volumn_manager.save(code, time_, volumn,
                                                                                                price)
                             if need_cancel:
-                                l2_data_manager_new.L2TradeDataProcessor.cancel_buy(code, cancel_msg)
+                                l2_data_manager_new.L2TradeDataProcessor.cancel_buy(code, cancel_msg, "trade_queue")
                             if need_sync:
                                 # 鍚屾鏁版嵁
                                 l2_data_manager_new.L2LimitUpMoneyStatisticUtil.verify_num(code, volumn, time_)
@@ -332,6 +356,29 @@
                     data = data_process.parse(_str)["data"]
                     client_id = data["client"]
                     print("L2鑷惎鍔ㄦ垚鍔�", client_id)
+                    now_str = datetime.datetime.now().strftime("%H:%M:%S")
+                    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"):
+                        # 鍑嗗鎵归噺璁剧疆浠g爜
+                        return_json = {"code": 1, "msg": "绛夊緟鎵归噺璁剧疆浠g爜"}
+                        return_str = json.dumps(return_json)
+                        # 鑾峰彇鎺掑悕鍓�16浣嶇殑浠g爜
+                        codes = trade_data_manager.CodeActualPriceProcessor().get_top_rate_codes(16)
+                        codes = sorted(codes)
+                        if client_id == 2:
+                            codes = codes[:8]
+                        else:
+                            codes = codes[8:]
+                        codes_datas = []
+                        for i in range(0, 8):
+                            if i >= len(codes):
+                                break
+                            codes_datas.append((i, codes[i]))
+                        l2_code_operate.betch_set_client_codes(client_id, codes_datas)
+                    else:
+                        return_json = {"code": 0, "msg": "寮�鍚湪绾跨姸鎬�"}
+                        return_str = json.dumps(return_json)
 
                     # print("蹇冭烦锛�", client_id)
                 sk.send(return_str.encode())

--
Gitblit v1.8.0