🚀 AI 一键生成 qmt 策略代码
立即体验
👉 AI 生成代码 👈

QMT 平台策略运行无结果、模拟账户无变动、K线不显示的原因及解决办法

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

问题描述

各位大神,请教无结果输出问题

日志里面有成交,但模拟账户没有变动,K 线也出不来,可能是什么原因?谢谢

解决方案

遇到 QMT 平台中“日志有成交,但模拟账户无变动且 K 线不显示”的问题,通常是由于运行模式选择错误账号绑定遗漏图表输出配置不当引起的。以下是详细的排查步骤和解决方法:

1. 检查运行模式(回测 vs 运行)

QMT 平台分为“回测”和“运行”两种模式:

  • 回测模式:点击“回测”按钮,策略会基于历史数据运行,调用的是虚拟账号。此时日志里打印的成交是历史回测的撮合结果,不会反映在您的模拟交易账户或实盘账户中。
  • 运行模式:点击“运行”按钮,策略会根据实时行情驱动。如果您希望模拟账户有变动,必须确保策略处于“运行”模式,并且在“模型交易”中将其设置为“实盘/模拟”状态。

2. 检查资金账号是否正确绑定

如果在模拟/实盘模式下账户依然没有变动,请检查代码中是否正确设置了交易账号。在 init 函数中必须调用 ContextInfo.set_account() 绑定您的模拟资金账号,并且在下单函数(如 passorder)中传入正确的账号。

正确示例:

def init(ContextInfo):
    # 绑定您的模拟资金账号
    ContextInfo.account = '您的模拟账号ID'
    ContextInfo.set_account(ContextInfo.account)

def handlebar(ContextInfo):
    # 下单时传入正确的账号
    passorder(23, 1101, ContextInfo.account, '000001.SZ', 5, -1, 100, ContextInfo)

3. 排查 K 线不显示的原因

K 线或指标无法在图表上显示,通常有以下几个原因:

  • 未补充历史数据:QMT 是基于本地数据驱动的。请前往【数据管理】补充对应品种和周期的历史数据。
  • 未调用绘图函数:如果希望在主图或副图上看到策略生成的信号或指标线,必须在 handlebar 中调用 ContextInfo.paint() 函数。例如:ContextInfo.paint('my_indicator', value, -1, 0)
  • 运行位置设置错误:在策略编辑器的【基本信息】中,检查“位置”是否设置正确(主图、主图叠加或副图)。如果在非行情界面点击运行,策略会默认使用基本信息中设置的“默认品种”和“默认周期”,如果这些没有设置,图表可能无法正常渲染。

总结建议

  1. 确认点击的是运行而不是回测。
  2. 检查 init 中是否写了 ContextInfo.set_account('模拟账号')
  3. 检查【数据管理】中是否下载了该股票的 K 线数据。
  4. 确保在行情界面(主图)下启动策略,或者在策略参数中指定了正确的默认品种。