| | |
| | | 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): |
| | |
| | | # 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) |
| | |
| | | win32gui.PostMessage(win, win32con.WM_KEYDOWN, 66, 0); |
| | | |
| | | logger_trade_gui.info("执行买入结束:code-{} 耗时:{}".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() |
| | |
| | | self.buy_cancel_lock.release() |
| | | # 清空代码框 |
| | | 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: |
| | |
| | | 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) |
| | |
| | | |
| | | |
| | | 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") |