| | |
| | | |
| | | 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 |
| | |
| | | tcpserver.serve_forever() |
| | | |
| | | |
| | | def startJueJin(pipe): |
| | | juejin.JueJinManager(pipe).start() |
| | | |
| | | |
| | | class GUI: |
| | |
| | | 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) |
| | | |
| | |
| | | time.sleep(0.1) |
| | | |
| | | def run(self): |
| | | # TODO |
| | | self.jueJinProcess.start() |
| | | self.serverProcess.start() |
| | | self.ocrServerProcess.start() |
| | | self.jueJinTradeProcess.start() |
| | |
| | | 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") |
| | |
| | | # 绘制开盘前的数据准备情况 |
| | | 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 |
| | |
| | | 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) |
| | |
| | | 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: |
| | |
| | | win.mainloop() |
| | | |
| | | def init(): |
| | | juejin.everyday_init() |
| | | inited_data.everyday_init() |
| | | |
| | | def set_accept_l2(): |
| | | settings.set_accept_l2(accept_l2.get()) |
| | |
| | | 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: |
| | |
| | | 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('提示', "设置成功") |
| | | |
| | | # 设置掘金信息 |
| | |
| | | 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) |
| | |
| | | |
| | | 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)) |
| | |
| | | data_export_util.export_l2_data_origin(code, datas, k) |
| | | except Exception as e1: |
| | | showerror("导出失败", str(e1)) |
| | | finally: |
| | | RedisUtils.realse(redis) |
| | | |
| | | showinfo("提示", "导出完成") |
| | | |
| | |
| | | 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())) |