| | |
| | | """ |
| | | |
| | | import array |
| | | import logging |
| | | import threading |
| | | import time |
| | | import random |
| | |
| | | # 获取可用的窗口 |
| | | win = cls.__get_available_win() |
| | | if win is None: |
| | | logger_buy_win_distibute.error(f"无可用窗口:{code}") |
| | | raise Exception("窗口已经分配完毕,无可用窗口") |
| | | # 保存窗口分配信息 |
| | | cls.__save_code_win(code, win) |
| | | # 设置代码多试几次 |
| | | is_success = False |
| | | for i in range(0, 3): |
| | | THSGuiUtil.set_buy_window_code(cls.get_trade_win(win), code) |
| | | time.sleep(0.5) |
| | | code_name_win = cls.__get_code_name(win) |
| | | if code_name == code_name_win: |
| | | is_success = True |
| | | break |
| | | if is_success: |
| | | logger_buy_win_distibute.info(f"新分配窗口成功:{code}-{win}") |
| | | else: |
| | | logger_buy_win_distibute.info(f"新分配窗口失败:{code}-{win}") |
| | | return win |
| | | |
| | | # 删除代码窗口分配 |
| | |
| | | cls.__del_code_win(code) |
| | | return None |
| | | return win |
| | | |
| | | # 获取已分配的交易框信息 |
| | | @classmethod |
| | | def get_distributed_code_wins(cls): |
| | | key = "buywin_distribute-*" |
| | | keys = cls.__get_redis().keys(key) |
| | | results = [] |
| | | for k in keys: |
| | | code = k.split("-")[-1] |
| | | win = cls.__get_redis().get(k) |
| | | results.append((code, win)) |
| | | return results |
| | | |
| | | # 获取代码名称 |
| | | @classmethod |
| | |
| | | if name_codes.get(code_name) != code: |
| | | cls.cancel_distribute_win_for_code(code) |
| | | continue |
| | | try: |
| | | win = cls.distribute_win_for_code(code, gpcode_manager.get_code_name(code)) |
| | | print("分配的窗口:", win, THSGuiUtil.is_win_exist(win)) |
| | | except Exception as e: |
| | | logging.exception(e) |
| | | |
| | | |
| | | class GUITest: |