🚀 AI 一键生成 qmt 策略代码

QMT回测报错 frozen importlib._bootstrap 与策略被手动停止的解决办法

qmt | 发布时间: 2026/5/27
以下内容由 EasyQuant 生成。

问题描述

请问frozen importlib._bootstrap怎么解决

QMT 在回测时,在调试另一个回测程序,所以又点击了回测,就发现回测程序不执行第一个回测日期了。重新覆盖安装或者重新下载 python 库都不行。现在只要启动 QMT,点击回测就报以下错误,请问怎么解决?

【2025-03-08 23:58:44.457】 0E:\programs\e 海方舟-量化交易版\python\短线热点回测_20250307_02.py_SH0003009KeyboardInterrupt:策略被手动停止
【2025-03-08 23:58:44.457】 Traceback (most recent call last):

File "", line 966, in _find_and_load

KeyboardInterrupt: 策略被手动停止

【2025-03-08 23:58:44.458】 0E:\programs\e 海方舟-量化交易版\python\短线热点回测_20250307_02.py_SH0003009KeyboardInterrupt:策略被手动停止【2025-03-08 23:58:45.019】 start back test mode

解决方案

在 QMT(如 e海方舟-量化交易版)中遇到 frozen importlib._bootstrapKeyboardInterrupt:策略被手动停止 的报错,通常是因为在 Python 引擎正在导入(import)第三方库或初始化时,进程被强行中断(例如你提到在运行一个回测时又点击了另一个回测)。

由于 QMT 的 Python 环境是内嵌的,这种强行中断会导致 Python 解释器的内部导入锁(import lock)卡死,或者产生残留的僵尸进程,从而导致后续无论怎么点击回测都会直接报错。

以下是彻底解决该问题的排查与修复步骤:

1. 彻底清理残留进程(最关键)

虽然你重新安装了软件,但如果后台有残留的 Python 进程未被关闭,问题依然会存在。

  • 方法一:关闭 QMT 软件,打开 Windows 任务管理器(Ctrl+Shift+Esc),在“详细信息”或“进程”中寻找所有名为 python.exextquant 或与 QMT 相关的后台进程,右键将其结束任务
  • 方法二(推荐):最简单粗暴的方法是直接重启电脑。重启可以彻底清空内存中卡死的 Python 导入锁和僵尸进程。

2. 清理 Python 编译缓存文件

中断导入可能会导致生成损坏的 .pyc 缓存文件。下次运行时 Python 会读取损坏的缓存,再次报错。

  • 进入你的策略代码所在目录(如报错中的 E:\programs\e 海方舟-量化交易版\python\)。
  • 寻找名为 __pycache__ 的文件夹,将其整个删除
  • 如果在该目录下看到任何以 .pyc 结尾的文件,也一并删除。

3. 检查策略代码中的阻塞操作

如果重启电脑和清理缓存后,点击回测依然立刻报这个错,说明你的代码中可能存在导致 QMT 引擎超时并自动触发 KeyboardInterrupt 的逻辑:

  • 死循环:检查 init(ContextInfo) 或全局作用域中是否有 while True: 等死循环。
  • 耗时过长的导入:如果在代码开头 import 了非常庞大的自定义库,或者在导入时执行了耗时的网络请求/数据库读取,QMT 可能会认为策略卡死而强行发送中断信号。
  • time.sleep():尽量不要在 QMT 的主线程(尤其是 inithandlebar 中)使用长期的 time.sleep()

4. 彻底重置 QMT 环境

你提到“重新覆盖安装”无效,通常是因为覆盖安装不会删除用户数据和配置
如果上述步骤都不行,请尝试彻底重置:

  1. 备份你的策略代码文件(.py 文件)。
  2. 在控制面板中正常卸载 QMT(e海方舟量化版)。
  3. 手动删除安装目录(如 E:\programs\e 海方舟-量化交易版\),确保里面没有任何残留文件。
  4. 重新下载最新版客户端并安装。

💡 预防建议

QMT 的回测引擎在处理高并发时相对脆弱。在日常使用中:

  • 不要在回测未结束时频繁点击运行/回测。如果需要停止,请先点击界面上的“停止”按钮,等待日志输出“策略已停止”后,再运行下一个策略。
  • 如果需要同时对比多个策略,建议使用 QMT 的批量回测功能,或者在代码逻辑中分离,而不是在界面上强行并发点击。