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