xtquant_manager.account¶
XtQuantAccount — 单账号封装
将一个 miniQMT 账号实例的完整生命周期封装在此类中: - 连接管理(connect / disconnect / reconnect) - 所有 xttrader + xtdata 操作(统一超时保护 + 指标记录) - 健康探测(is_healthy / ping) - 指数退避重连
AccountConfig
dataclass
¶
AccountConfig(account_id: str, qmt_path: str, account_type: str = 'STOCK', session_id: Optional[int] = None, call_timeout: float = 3.0, download_timeout: float = 30.0, connect_timeout: float = 30.0, reconnect_base_wait: float = 60.0, max_reconnect_attempts: int = 5, ping_stock: str = '000001.SZ', ping_staleness_threshold: float = 300.0)
账号配置
XtQuantAccount ¶
单账号封装,线程安全。
- 所有对外 API 调用都通过 _call() 包装,保证超时保护 + 指标记录
- connect() 失败返回 False,不抛异常
- reconnect() 使用指数退避,最大等待 1 小时
is_healthy ¶
快速内存检查(无 I/O)。
这里只判断连接对象和连接标志是否处于可用状态,不把 ping 过期当作 “不健康”。ping 过期只表示需要做一次例行真实探测,由 needs_ping() 单独表达,避免健康账号每 5 分钟产生一次误导性的 Level 0 失败日志。
needs_ping ¶
是否需要执行例行真实探测。
该方法只用于 HealthMonitor 的正常巡检路径:连接状态仍健康,但距离 上次 ping 成功已经超过阈值,需要主动探测 xtdata + xttrader,及时发现 QMT 进程崩溃、xttrader 隐性断连等问题。
ping ¶
真实探测:同时验证 xtdata 和 xttrader 连接。
xtdata 探测:调用 get_full_tick,验证行情接口是否存活。 xttrader 探测:调用 query_stock_asset,验证交易接口是否存活。
QMT 进程重启后 xttrader 会断开,但 xtdata 可能因缓存仍能返回数据。 若仅探测 xtdata 会漏判 xttrader 断连,因此必须同时探测两者。
xttrader 探测失败时主动重置 _connected=False,确保 is_healthy() 下次返回 False,从而触发 HealthMonitor 的 Level 2 重连。
get_instrument_detail ¶
获取证券信息(含名称),失败返回空 dict。 xtdata 本地缓存调用,无网络开销。
get_market_data_ex ¶
get_market_data_ex(fields: list, stock_list: List[str], period: str = '1d', start_time: str = '20200101', end_time: str = '') -> dict
获取历史行情数据,失败返回空 dict
download_history_data ¶
download_history_data(stock_code: str, period: str = '1d', start_time: str = '20200101', end_time: str = '') -> bool
下载历史数据到本地,成功返回 True
order_stock ¶
order_stock(stock_code: str, order_type: int, order_volume: int, price_type: int, price: float, strategy_name: str = '', order_remark: str = '') -> int
下单(同步),成功返回 order_id (>0),失败返回 -1
query_positions ¶
查询持仓,返回 list[dict](与 easy_qmt_trader.position() 的行数据兼容)。 失败返回空列表。
register_disconnect_callback ¶
注册断连事件回调。 QMT 连接断开时(on_disconnected 触发)立即调用 cb()。 主要供 HealthMonitor 注册以即时重置冷却计时器。