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