From b7000cbf5e67e90abe53e96a4ea931afbf906e24 Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期五, 16 九月 2022 18:51:47 +0800
Subject: [PATCH] l2数据计算优化

---
 trade_manager.py |   62 +++++++++++++++++++++++--------
 1 files changed, 46 insertions(+), 16 deletions(-)

diff --git a/trade_manager.py b/trade_manager.py
index 71b3059..00d2836 100644
--- a/trade_manager.py
+++ b/trade_manager.py
@@ -4,7 +4,8 @@
 import l2_code_operate
 import mongo_data
 import tool
-from trade_gui import THSGuiTrade
+from trade_data_manager import TradeBuyDataManager
+from trade_gui import THSGuiTrade, async_call
 import time as t
 from l2_code_operate import *
 import l2_data_manager
@@ -156,7 +157,7 @@
 def forbidden_trade(code):
     add_to_forbidden_trade_codes(code)
     l2_data_manager.remove_from_l2_fixed_codes(code)
-    l2_code_operate.L2CodeOperate.get_instance().remove_l2_listen(code)
+    l2_code_operate.L2CodeOperate.get_instance().remove_l2_listen(code, "绂佹浠g爜浜ゆ槗")
 
 
 # 鏄惁鍦ㄧ姝氦鏄撲唬鐮佷腑
@@ -167,7 +168,7 @@
 
 
 # 寮�濮嬩氦鏄�
-def start_buy(code):
+def start_buy(code, capture_timestamp,last_data,last_data_index):
     # 鏄惁绂佹浜ゆ槗
     if is_in_forbidden_trade_codes(code):
         raise Exception("绂佹浜ゆ槗")
@@ -183,21 +184,44 @@
     # 涔颁竴鎵嬬殑璧勯噾鏄惁瓒冲
     if price * 100 > money:
         raise Exception("璐︽埛鍙敤璧勯噾涓嶈冻")
+
+    print("寮�濮嬩拱鍏�")
+    logger_trade.info("{}寮�濮嬩拱鍏�".format(code))
+    set_trade_state(code, TRADE_STATE_BUY_PLACE_ORDER)
+    __buy(code, price, trade_state, capture_timestamp,last_data,last_data_index)
+
+
+# 璐拱
+@async_call
+def __buy(code, price, trade_state, capture_timestamp, last_data,last_data_index):
     try:
-        print("寮�濮嬩拱鍏�")
-        logger_trade.info("{}寮�濮嬩拱鍏�".format(code))
-        set_trade_state(code, TRADE_STATE_BUY_PLACE_ORDER)
         guiTrade.buy(code, price)
-        # 涓嬪崟鎴愬姛锛屽姞鍏ュ浐瀹氫唬鐮佸簱
-        l2_data_manager.add_to_l2_fixed_codes(code)
-        print("涔板叆缁撴潫")
-        logger_trade.info("{}涔板叆鎴愬姛".format(code))
+        __place_order_success(code, capture_timestamp, last_data,last_data_index)
     except Exception as e:
-        print("涔板叆寮傚父")
+        __place_order_fail(code, trade_state)
         logger_trade.error("{}涔板叆寮傚父{}".format(code, str(e)))
-        # 鐘舵�佽繕鍘�
-        set_trade_state(code, trade_state)
         raise e
+
+
+# 涓嬪崟鎴愬姛
+def __place_order_success(code, capture_timestamp, last_data,last_data_index):
+    # 涔板叆缁撴潫鐐�
+    use_time = round(time.time() * 1000) - capture_timestamp
+    logger_trade.info("{}-浠庢埅鍥惧埌涓嬪崟鎴愬姛鎬昏垂鏃讹細{}".format(code, use_time))
+    # 涓嬪崟鎴愬姛锛屽姞鍏ュ浐瀹氫唬鐮佸簱
+    l2_data_manager.add_to_l2_fixed_codes(code)
+    # 璁板綍涓嬪崟鐨勯偅涓�甯у浘鐗囩殑鎴浘鏃堕棿涓庝氦鏄撶敤鏃�
+    TradeBuyDataManager.set_buy_position_info(code, capture_timestamp, use_time, last_data,last_data_index)
+
+    print("涔板叆缁撴潫")
+    logger_trade.info("{}涔板叆鎴愬姛".format(code))
+
+
+# 涓嬪崟澶辫触
+def __place_order_fail(code, trade_state):
+    print("涔板叆寮傚父")
+    # 鐘舵�佽繕鍘�
+    set_trade_state(code, trade_state)
 
 
 # 寮�濮嬪彇娑堜拱鍏�
@@ -212,9 +236,7 @@
         logger_trade.info("{}寮�濮嬫挙鍗�".format(code))
         set_trade_state(code, TRADE_STATE_BUY_CANCEL_ING)
         guiTrade.cancel_buy(code)
-        # 涓嬪崟鎴愬姛锛屽姞鍏ュ浐瀹氫唬鐮佸簱
-        l2_data_manager.remove_from_l2_fixed_codes(code)
-        logger_trade.info("{}鎾ゅ崟鎴愬姛".format(code))
+        __cancel_success(code)
     except Exception as e:
         # 鐘舵�佽繕鍘�
         set_trade_state(code, trade_state)
@@ -222,6 +244,14 @@
         raise e
 
 
+# 鍙栨秷濮旀墭鎴愬姛
+def __cancel_success(code):
+    TradeBuyDataManager.remove_buy_capture_time(code)
+    # 涓嬪崟鎴愬姛锛屽姞鍏ュ浐瀹氫唬鐮佸簱
+    l2_data_manager.remove_from_l2_fixed_codes(code)
+    logger_trade.info("{}鎾ゅ崟鎴愬姛".format(code))
+
+
 # 澶勭悊浜ゆ槗鎴愬姛鏁版嵁
 def process_trade_success_data(datas):
     if datas is None:

--
Gitblit v1.8.0