From 6e71fbcb119e7068ba35380edaa5cc66e7c71f1b Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期四, 27 十月 2022 16:21:05 +0800
Subject: [PATCH] 交易体系完善

---
 trade_gui.py |   60 +++++++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 45 insertions(+), 15 deletions(-)

diff --git a/trade_gui.py b/trade_gui.py
index 2d218d1..6f0abc8 100644
--- a/trade_gui.py
+++ b/trade_gui.py
@@ -8,22 +8,15 @@
 import random
 
 import win32gui
-import win32api
 import win32con
 
-import global_util
+import constant
 import gpcode_manager
+import l2_trade_util
 import redis_manager
 import tool
 from log import *
-from threading import Thread
-
-
-def async_call(fn):
-    def wrapper(*args, **kwargs):
-        Thread(target=fn, args=args, kwargs=kwargs).start()
-
-    return wrapper
+from tool import async_call
 
 
 class THSGuiTrade(object):
@@ -256,7 +249,7 @@
             #     raise Exception(error)
 
             # TODO 鏆傛椂涓嶉獙璇佹定鍋滀环
-            if not global_util.TEST:
+            if not constant.TEST:
                 if abs(float(limit_up_price_now) - float(limit_up_price)) >= 0.01:
                     error = "娑ㄥ仠浠烽獙璇佸嚭閿� {}-{}".format(limit_up_price, limit_up_price_now)
                     raise Exception(error)
@@ -271,7 +264,11 @@
             win32gui.PostMessage(win, win32con.WM_KEYDOWN, 66, 0);
 
             logger_trade_gui.info("鎵ц涔板叆缁撴潫锛歝ode-{} 鑰楁椂:{}".format(code, int(round(time.time() * 1000)) - start))
-            self.close_delegate_success_dialog()
+            # 杩囨椂
+            # self.close_delegate_success_dialog()
+
+            self.refresh_data()
+
             # 寰幆璇诲彇涓嬪崟缁撴灉,鏈�澶氱瓑寰�10s
             # for i in range(0, 50):
             #     hwnd = self.getTradeResultWin()
@@ -388,6 +385,27 @@
             self.buy_cancel_lock.release()
             # 娓呯┖浠g爜妗�
             self.input_number(code_input, "")
+
+    # 鍒锋柊浜ゆ槗绐楀彛鏁版嵁
+    @async_call
+    def refresh_data(self):
+        # 鑾峰彇鍒颁笓涓氫笅鍗曢〉闈�
+        win = self.getCancelBuyWin()
+        child_win = None
+        refresh_btn = None
+        for i in range(0, 20):
+            child_win = win32gui.FindWindowEx(win, child_win, "#32770", None)
+            if not child_win:
+                break
+            if not win32gui.IsWindowVisible(child_win):
+                continue
+            temp = win32gui.FindWindowEx(child_win, None, "Button", "杩樺師")
+            if temp:
+                refresh_btn = win32gui.GetDlgItem(child_win, 0x00000457)
+                break
+        if refresh_btn:
+            # 鐐瑰嚮鍒锋柊
+            THSGuiUtil.click(refresh_btn)
 
 
 class THSGuiUtil:
@@ -764,8 +782,20 @@
         for code in old_codes:
             if code not in codes_:
                 cls.cancel_distribute_win_for_code(code)
-        add_codes = codes[0:10]
-        del_codes = codes[10:]
+
+        # 鍒犻櫎绂佹鐨勪唬鐮�
+        new_codes = []
+        new_delete_codes = []
+        for code in codes:
+            if not l2_trade_util.is_in_forbidden_trade_codes(code):
+                # 鍙栨秷鍒嗛厤
+                new_codes.append(code)
+            else:
+                new_delete_codes.append(code)
+
+        add_codes = new_codes[0:10]
+        del_codes = new_codes[10:]
+        del_codes.extend(new_delete_codes)
 
         for code in del_codes:
             cls.cancel_distribute_win_for_code(code)
@@ -813,7 +843,7 @@
 
 
 if __name__ == '__main__':
-    THSGuiTrade().buy("002853", "18.98", THSBuyWinManagerNew.get_buy_wins()[5])
+    THSGuiTrade().buy("002900", "16.18")
     # GUITest().test_distribute()
     # try:
     #     THSGuiUtil.set_buy_window_code(0x000112D0, "000333")

--
Gitblit v1.8.0