🚀 AI 一键生成 qmt 策略代码

QMT策略回测提示 'utf-8' codec can't decode byte 0xbb 怎么办?

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

问题描述

任何代码回测日志提示 'utf-8' codec can't decode byte 0xbb in position 0: invalid

【2024-04-08 16:12:54.637】 0D:\qmt\python\新建策略文件.py_SH00030032SyntaxError:(unicode error) 'utf-8' codec can't decode byte 0xbb in position 0: invalid start byte (<string>, line 13)
不知道是什么原因,求帮助

解决方案

在 QMT(迅投/国信)量化平台中遇到 SyntaxError: (unicode error) 'utf-8' codec can't decode byte 0xbb in position 0: invalid start byte 报错,通常是因为代码文件的编码格式与 Python 解释器预期的编码格式不匹配。特别是当你的代码中包含中文字符(如中文注释、中文打印输出等)时,最容易触发此错误。

根据 QMT 官方 API 文档的规范,QMT 统一脚本的编码格式是 GBK

解决办法

你只需要在你的 Python 策略代码的**最前一行(第一行)**加上编码声明即可:

#coding:gbk

或者

#encoding:gbk

完整示例

修改后的代码结构应该如下所示:

#coding:gbk

def init(ContextInfo):
    # 初始化函数
    print("策略初始化成功")
    ContextInfo.set_universe(['000300.SH'])

def handlebar(ContextInfo):
    # 盘中运行函数
    print("当前运行到K线索引:", ContextInfo.barpos)

补充排查步骤

如果加上 #coding:gbk 后仍然报错,请检查以下几点:

  1. 确保声明在第一行#coding:gbk 必须放在文件的绝对第一行,前面不能有任何空行或其他注释。
  2. 检查外部编辑器编码:如果你是在 QMT 自带的【策略编辑器】之外(例如使用 VSCode、PyCharm 等)编写的 .py 文件,然后导入到 QMT 中,请确保在外部编辑器中将文件保存为 GBK 编码(或 ANSI 编码),而不是 UTF-8。
  3. 重新编译运行:修改代码并添加编码声明后,记得点击编辑器上方的“编译”按钮保存策略,然后再点击“运行”或“回测”。