From be73e2b78857adaf006063275726b69c4c60f0d7 Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期三, 12 十月 2022 11:54:25 +0800
Subject: [PATCH] 买撤策略修改;加入报警功能

---
 gui.py |   99 ++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 80 insertions(+), 19 deletions(-)

diff --git a/gui.py b/gui.py
index 56ca360..8bfe3ce 100644
--- a/gui.py
+++ b/gui.py
@@ -5,13 +5,13 @@
 from tkinter.messagebox import *
 import tkintertable
 
-
 import win32gui
 
+import alert_util
 import data_export_util
 import multiprocessing
 
-
+import global_util
 import redis_manager
 import mongo_data
 import server
@@ -163,7 +163,7 @@
             win.resizable(height=False, width=False)
 
             limit_up_datas = {}
-            limit_up_datas["row{}".format(0)] = {'浠g爜': '', '棣栨娑ㄥ仠鏃堕棿': '', '鐜颁环': '','娑ㄥ箙':'', '娑ㄥ仠灏佸崟棰�': ''}
+            limit_up_datas["row{}".format(0)] = {'浠g爜': '', '棣栨娑ㄥ仠鏃堕棿': '', '鐜颁环': '', '娑ㄥ箙': '', '娑ㄥ仠灏佸崟棰�': ''}
 
             cl = Label(win, text="鏇存柊鏃堕棿锛�", bg="#DDDDDD", fg="#666666")
             cl.place(x=10, y=10)
@@ -218,6 +218,66 @@
         btn = Button(frame, text="浠婃棩娑ㄥ仠", command=get_limit_up_codes_win)
         btn.place(x=300, y=150)
 
+    # 缁樺埗浜ゆ槗鐘舵��
+    def __draw_trade_state(self, frame):
+        def refresh_data():
+            normal=True
+            if l2_code_operate.L2CodeOperate.is_read_queue_valid():
+                cl_queue.configure(text="姝e父", foreground="#008000")
+            else:
+                cl_queue.configure(text="寮傚父", foreground="#FF7F27")
+                normal=False
+            try:
+                trade_gui.THSGuiTrade.checkEnv()
+                cl_win.configure(text="姝e父", foreground="#008000")
+            except Exception as e:
+                normal = False
+                cl_win.configure(text="寮傚父:{}".format(str(e)),foreground="#FF7F27")
+            # 鐘舵�佹湁闂锛岄渶瑕佹姤璀�
+            if not normal:
+                alert_util.alarm()
+
+        def update_data():
+            while True:
+                # 鍒锋柊鏁版嵁
+                try:
+                    if auo_refresh.get() > 0:
+                        refresh_data()
+                except:
+                    pass
+                time.sleep(2)
+
+        start_y=230
+
+        btn = Button(frame, text="鍒锋柊鐘舵��", command=refresh_data)
+        btn.place(x=10, y=start_y)
+
+
+        auo_refresh = IntVar()
+        ch1 = Checkbutton(frame, text='鑷姩鍒锋柊', variable=auo_refresh, onvalue=1, offvalue=0, background="#DDDDDD",
+                          activebackground="#DDDDDD")
+        # 榛樿鑷姩鍒锋柊
+        auo_refresh.set(1)
+        ch1.place(x=100, y=start_y)
+
+        y_=start_y+30
+        cl = Label(frame, text="鎿嶄綔闃熷垪鐘舵�侊細", bg="#DDDDDD")
+        cl.place(x=10, y=y_)
+        cl_queue = Label(frame, text="鏈煡", bg="#DDDDDD")
+        cl_queue.place(x=100, y=y_)
+
+        cl = Label(frame, text="浜ゆ槗绐楀彛鐘舵�侊細", bg="#DDDDDD")
+        cl.place(x=200, y=y_)
+        cl_win = Label(frame, text="鏈煡", bg="#DDDDDD")
+        cl_win.place(x=300, y=y_)
+
+        refresh_data()
+        # 娣诲姞鏇存柊绾跨▼
+        t1 = threading.Thread(target=lambda: update_data())
+        # 鍚庡彴杩愯
+        t1.setDaemon(True)
+        t1.start()
+
     # 缁樺埗l2鏁版嵁鐘舵��
     def __draw_l2_state(self, root):
         def update_data():
@@ -233,7 +293,7 @@
         def refresh_data():
             for client_id in code_sv_map:
                 ip = data_process.getActiveClientIP(client_id)
-                ths_dead=data_process.getTHSState(client_id)
+                ths_dead = data_process.getTHSState(client_id)
                 if ip is not None and len(ip) > 0:
                     if ths_dead:
                         client_state[client_id].configure(text="(鍦ㄧ嚎锛歿})".format(ip), foreground="#FF7F27")
@@ -342,6 +402,7 @@
         ch1 = Checkbutton(frame, text='鑷姩鍒锋柊', variable=auo_refresh, onvalue=1, offvalue=0, background="#DDDDDD",
                           activebackground="#DDDDDD")
         ch1.place(x=width - 80, y=5)
+        auo_refresh.set(1)
 
         l2_client_count = 0
         code_sv_map = {}
@@ -350,13 +411,13 @@
         for key in self.l2_codes:
 
             client_lb = Label(frame, text="璁惧:{}".format(key), background="#DDDDDD")
-            client_lb.place(x=30, y=40 + l2_client_count * 30)
+            client_lb.place(x=38, y=40 + l2_client_count * 30)
             btn = Button(frame, text="妫�娴�", command=key)
             btn.bind('<Button-1>', check)
-            btn.place(x=0, y=35 + l2_client_count * 30)
+            btn.place(x=5, y=35 + l2_client_count * 30)
 
             client_state_lb = Label(frame, text="(鏈煡)", background="#DDDDDD", font=('寰蒋闆呴粦', 8))
-            client_state_lb.place(x=75, y=40 + l2_client_count * 30)
+            client_state_lb.place(x=80, y=40 + l2_client_count * 30)
             client_state[key] = client_state_lb
 
             code_sv_map[key] = []
@@ -471,7 +532,7 @@
         ch1 = Checkbutton(frame, text='鑷姩鍒锋柊', variable=auo_refresh, onvalue=1, offvalue=0, background="#DDDDDD",
                           activebackground="#DDDDDD")
         ch1.place(x=width - 80, y=5)
-
+        auo_refresh.set(1)
         # ------琛ㄥご缁撴潫------
 
         # 濮旀墭琛ㄦ牸
@@ -597,29 +658,28 @@
                 showwarning('璀﹀憡', e)
 
         def export_l2_data(code):
-            if code not in  l2_data_manager.local_today_datas:
+            if code not in l2_data_manager.local_today_datas:
                 l2_data_manager.load_l2_data(code)
             datas = l2_data_manager.local_today_datas[code]
             try:
-                path=data_export_util.export_l2_data(code,datas)
-                showinfo("鎻愮ず","瀵煎嚭鎴愬姛锛岃矾寰勪负锛�"+path)
+                path = data_export_util.export_l2_data(code, datas)
+                showinfo("鎻愮ず", "瀵煎嚭鎴愬姛锛岃矾寰勪负锛�" + path)
             except Exception as e1:
-                showerror("瀵煎嚭澶辫触",str(e1))
+                showerror("瀵煎嚭澶辫触", str(e1))
 
         def export_l2_data_origin(code):
             redis = redis_manager.RedisManager(1).getRedis()
             keys = redis.keys("big_data-{}-*".format(code))
             try:
                 for k in keys:
-                    datas=redis.get(k)
-                    datas=json.loads(datas)
-                    datas=datas["data"]["data"]
+                    datas = redis.get(k)
+                    datas = json.loads(datas)
                     _t = k.split("-")[2]
-                    k = time.strftime("%Y_%m_%d_%H_%M_%S_",time.localtime(float(_t)/1000))
-                    k = "{}{}".format(k,_t[-3:])
-                    data_export_util.export_l2_data_origin(code, datas,k)
+                    k = time.strftime("%Y_%m_%d_%H_%M_%S_", time.localtime(float(_t) / 1000))
+                    k = "{}{}".format(k, _t[-3:])
+                    data_export_util.export_l2_data_origin(code, datas, k)
             except Exception as e1:
-                    showerror("瀵煎嚭澶辫触", str(e1))
+                showerror("瀵煎嚭澶辫触", str(e1))
 
             showinfo("鎻愮ず", "瀵煎嚭瀹屾垚")
 
@@ -685,6 +745,7 @@
         self.__draw_juejin(root)
         self._draw_check(root)
         self.__draw_l2_state(root)
+        self.__draw_trade_state(root)
         self.__draw_trade_data(root)
         self.__draw_test(root)
 

--
Gitblit v1.8.0