Administrator
2023-10-30 fb47d36048e94b9a506d5c153e3dd19a01e37df1
gui.py
@@ -9,14 +9,14 @@
import win32gui
import data_export_util
from db.redis_manager_delegate import RedisUtils
from utils import data_export_util
import multiprocessing
import log
from db import mysql_data, redis_manager
from log_module import log, log_export
from db import mysql_data_delegate as mysql_data, redis_manager_delegate as redis_manager
import server
import settings
from juejin import JueJinManager
from config import settings
from ths.l2_code_operate import L2CodeOperate
from trade.l2_trade_factor import L2TradeFactorUtil
from ocr import ocr_server
@@ -83,8 +83,6 @@
    tcpserver.serve_forever()
def startJueJin(pipe):
    juejin.JueJinManager(pipe).start()
class GUI:
@@ -94,7 +92,6 @@
        gs_gui_pipe, gs_server_pipe = multiprocessing.Pipe()
        self.serverProcess = multiprocessing.Process(target=createServer, args=(p1, gs_server_pipe,))
        self.jueJinProcess = multiprocessing.Process(target=startJueJin, args=(p2,))
        self.jueJinTradeProcess = multiprocessing.Process(target=trade_juejin.run)
        self.ocrServerProcess = multiprocessing.Process(target=createOCRServer)
@@ -128,8 +125,6 @@
            time.sleep(0.1)
    def run(self):
        # TODO
        self.jueJinProcess.start()
        self.serverProcess.start()
        self.ocrServerProcess.start()
        self.jueJinTradeProcess.start()
@@ -162,15 +157,18 @@
            text.delete('1.0', END)
            # 验证redis
            redis = redis_manager.RedisManager().getRedis()
            try:
                redis = redis_manager.RedisManager().getRedis()
                redis.set("test", "1")
                redis.delete("test")
                RedisUtils.set( redis,"test", "1",auto_free=False)
                RedisUtils.delete(redis, "test", auto_free=False)
                text.insert(END, "redis连接成功!\n")
            except:
                error = "redis连接失败...\n"
                text.insert(END, error)
                _set_error_color(text, 1, error)
            finally:
                RedisUtils.realse(redis)
            # 验证mongodb
            try:
                counts = mysql_data.Mysqldb().select_one("select count(*) from clients")
@@ -225,12 +223,11 @@
    # 绘制开盘前的数据准备情况
    def __draw_pre_data_check(self, frame):
        def refresh_close_price_data():
            redis = redis_manager.RedisManager(0).getRedis()
            count = len(redis.keys("price-pre-*"))
            count = len(RedisUtils.keys(redis_manager.RedisManager(0).getRedis(), "price-pre-*"))
            sv_num.set("获取到收盘价数量:{}".format(count))
        def re_get_close_price():
            juejin.re_set_price_pres(gpcode_manager.get_gp_list())
            inited_data.re_set_price_pres(gpcode_manager.get_gp_list())
        def get_limit_up_codes_win():
            width = 500
@@ -346,7 +343,7 @@
            try:
                if tool.trade_time_sub(tool.get_now_time_str(), "09:30:00") > 0:
                    raise Exception("只能9:30之前重新分配窗口")
                datas = JueJinManager.get_codes_limit_rate(gpcode_manager.get_gp_list())
                datas = HistoryKDatasUtils.get_codes_limit_rate(gpcode_manager.get_gp_list())
                matrix = numpy.array(datas)
                codes = matrix[:, 0].tolist()
                trade_gui.re_distribute_buy_win(codes)
@@ -376,7 +373,7 @@
                cl_win.configure(text="异常:{}".format(str(e)), foreground="#FF7F27")
            try:
                juejin_length = JueJinManager.get_listen_codes_lenth()
                juejin_length = 0
                codes_length = len(gpcode_manager.get_gp_list())
                cl_codes.configure(text="{}/{}".format(juejin_length, codes_length), foreground="#008000")
            except Exception as e:
@@ -605,7 +602,7 @@
            win.mainloop()
        def init():
            juejin.everyday_init()
            inited_data.everyday_init()
        def set_accept_l2():
            settings.set_accept_l2(accept_l2.get())
@@ -726,7 +723,7 @@
                time.sleep(1)
        def refresh_data():
            money = trade_manager.get_available_money()
            money = trade_manager.AccountAvailableMoneyManager().get_available_money()
            if money is not None:
                sv_trade_money.set(money)
            else:
@@ -870,7 +867,7 @@
            if len(account.strip()) < 1 or len(sid.strip()) < 1 or len(token.strip()) < 1:
                showinfo('提示', "数据不完整")
                return
            juejin.setAccountInfo(account, sid, token)
            inited_data.setAccountInfo(account, sid, token)
            showinfo('提示', "设置成功")
        # 设置掘金信息
@@ -902,7 +899,7 @@
        frame.grid(row=0, column=2, pady=5, padx=5)
        # 设置参数
        account, sid, token = juejin.getAccountInfo()
        account, sid, token = inited_data.getAccountInfo()
        account_var.set(account)
        sid_var.set(sid)
        token_var.set(token)
@@ -947,10 +944,10 @@
        def export_l2_data_origin(code):
            redis = redis_manager.RedisManager(1).getRedis()
            keys = redis.keys("big_data-{}-*".format(code))
            try:
                keys = RedisUtils.keys(redis, "big_data-{}-*".format(code), auto_free=False)
                for k in keys:
                    datas = redis.get(k)
                    datas = redis.get(k, auto_free=False)
                    datas = json.loads(datas)
                    _t = k.split("-")[2]
                    k = time.strftime("%Y_%m_%d_%H_%M_%S_", time.localtime(float(_t) / 1000))
@@ -958,6 +955,8 @@
                    data_export_util.export_l2_data_origin(code, datas, k)
            except Exception as e1:
                showerror("导出失败", str(e1))
            finally:
                RedisUtils.realse(redis)
            showinfo("提示", "导出完成")
@@ -1016,7 +1015,7 @@
        btn = FlatButton(frame, text="获取m值", command=lambda: compute_m(code.get()))
        btn.place(x=10, y=130)
        btn = FlatButton(frame, text="导出交易日志", command=lambda: log.export_l2_log(code.get()))
        btn = FlatButton(frame, text="导出交易日志", command=lambda: log_export.export_l2_log(code.get()))
        btn.place(x=80, y=130)
        btn = FlatButton(frame, text="清空l2数据", command=lambda: clear_l2(code.get()))