QMT使用教程:从安装、数据下载到回测实盘,一篇讲透
QMT使用教程:从安装、数据下载到回测实盘,一篇讲透
文 / 老汪算法
如果你想做A股量化,最后大概率绕不开一个名字:QMT。
原因很简单。对很多已经准备接近实盘的人来说,QMT不是一个“讲概念”的平台,而是一套真正能把行情、策略、回测、下单、委托回报连起来的交易终端。
但QMT的资料有一个明显问题:
• 官方知识库很全,但对新手不算友好
• 社区文章很多,但经常只讲某一个片段
• 有人只讲安装,有人只讲代码,有人只讲下单,很少有人把整条链路讲完整
所以这篇我想做的不是“再抄一遍文档”,而是把QMT最关键的上手路径,按真正使用的顺序,整理成一篇能直接照着走的教程。
如果你只想先记住一句话,那就是:
QMT最重要的不是先把代码写多复杂,而是先把“安装—数据—回测—运行—委托回报”这条链跑通。
01|QMT到底是什么,适合谁用?
先说最朴素的理解。
QMT本质上是一套量化交易终端。根据迅投知识库的说法,它内置Python运行环境,核心提供两件事:
• 行情数据
• 交易下单
也就是说,它不是一个单纯的研究平台,也不是只做回测的云端网站,而是更接近“能把策略真正推向交易执行”的本地化终端。
它更适合下面这几类人:
第一类:已经不满足只看回测的人
你已经在别的平台做过基础回测,接下来想把策略往真实交易环境推。
第二类:希望把研究、行情和交易放在一套系统里的人
你不想数据一套、回测一套、下单再一套,希望流程尽量连起来。
第三类:准备做A股或ETF量化实盘的人
尤其是希望用券商正式交易环境跑策略的人,QMT通常会比“只会回测的工具”更接近真实需求。
但它不一定适合所有纯新手。
如果你连数据结构、回测、成交逻辑、仓位管理这些基础概念都没跑通过,一上来就进QMT,往往会先卡在环境、接口和下单机制里。
所以QMT更像一个从研究走向执行的桥梁,而不是零基础第一站。
02|开始之前,你得先准备什么?
真正开始之前,先把几个前提条件讲清楚。
1. 先确认你已经开通了QMT权限
QMT通常不是随便下载安装就能完整使用的。
你需要通过券商渠道开通,具体到什么权限、给不给量化终端、是大QMT还是MiniQMT、支持到什么程度,不同券商口径会不一样。
所以这里最稳的动作不是到处搜“哪家一定能开”,而是直接问你的客户经理:
• 是否支持QMT / MiniQMT
• 是否支持Python策略
• 是否支持模拟 / 实盘
• 是否支持本地策略交易
2. 先确认你要做的是哪一类策略
QMT里不同运行机制,适合不同场景。
如果你只是想跑一个按日线执行的策略,和你要做盘中随分笔触发的策略,后面写法和运行方式都不一样。
3. 接受一个现实:不同券商界面和配置会有差异
这点非常重要。
QMT的大逻辑是一样的,但不同券商版本、不同权限包、不同终端配置,具体界面和菜单位置可能会有区别。
所以你在看教程时,最该抓的是“流程”和“机制”,而不是死记某个截图位置。
03|安装QMT,第一步不要急着写代码
很多人第一次接触QMT,最容易犯的错就是:
软件刚装好,就立刻去找Python接口。
其实更稳的顺序应该是:
第一步:先把客户端本身装好、登上去
正常情况下,客户经理会提供下载地址。安装完后,先确认你能正常登录交易端,能看到行情、账户和功能菜单。
第二步:找到数据管理/补充行情的位置
这是后面回测和读取本地历史数据的前提。
很多人代码没问题,结果策略跑不起来,最后发现不是代码错了,而是本地历史行情根本没下全。
第三步:下载Python库
社区教程里有一个反复提到的细节:QMT里一般会提供Python库下载入口。如果库没装好,后面导入 xtquant 相关模块就会报错。
第四步:确认本地数据目录和 `userdata_mini` 路径
如果你后面要做MiniQMT / xtquant方式连接,本地路径是最常见的坑之一。很多示例代码第一行就卡在这里。
也就是说,QMT第一步的核心不是“把策略写出来”,而是先把客户端、数据、Python环境、路径四件事确认干净。
04|QMT里最重要的三个运行机制,先搞懂再写策略
这部分非常关键。
根据迅投知识库,QMT里常见的运行机制,核心可以分成三类:
• 逐K线驱动:handlebar
• 事件驱动:subscribe订阅推送
• 定时任务:run_time定时运行
很多新手不是不会写代码,而是一开始根本没搞明白自己应该用哪一类。
1. handlebar:最适合先学的入口
这是最容易理解的一种。
简单说,它的逻辑是:
• 历史回测时,系统按历史K线从左到右跑
• 盘中时,每来一个新的分笔/新K线触发一次策略处理
它适合做什么?
• 双均线
• 趋势跟踪
• 日线/分钟线级别的规则策略
• 需要回测和实盘逻辑比较一致的模型
如果你是第一次在QMT里写策略,我最建议你先从handlebar开始。
2. subscribe:适合盘中实时订阅触发
这种方式更偏事件驱动。
你先订阅某个品种的行情,行情一更新,就触发回调函数。
它适合什么?
• 对盘中变化更敏感的策略
• 需要随着分笔、tick、实时数据变化立刻做判断的策略
它的问题也很明显:
• 思维方式比handlebar更碎
• 新手更容易把状态管理写乱
3. run_time:适合固定频率轮询
这种方式不是等行情推你,而是你自己设一个固定时间间隔,不断运行某个函数。
它适合什么?
• 定时扫描全市场
• 固定周期刷新条件
• 不依赖每个tick都立即响应的任务型策略
如果用一句话总结这三类运行机制,就是:
• 想先学完整闭环,用handlebar
• 想盘中实时订阅,用subscribe
• 想定时调度任务,用run_time
05|先把回测跑通:这是QMT最值得你认真做的一步
很多人上来就想实盘,但我还是建议你先把回测完整跑一遍。
根据迅投知识库,QMT回测有几个特别重要的点:
1. 回测之前,先补全历史行情
官方写得很清楚:回测依赖本地历史数据。
所以第一次做回测,最好先把你要用的:
• 周期(如日线、1分钟)
• 品种范围(如沪深A股)
• 历史时间范围
补齐。
2. 回测取的是本地数据,不是实时订阅
知识库特别提到:回测模型读取本地数据时,应该优先使用本地行情读取方式,而不是把订阅实时行情那套逻辑混进去。
这件事的意义很大:
回测不是在假装盘中实时交易,而是在用固定历史数据验证策略逻辑。
3. 回测撮合不是实盘撮合
这个细节很多人会忽略。
官方资料里写到,回测时如果你的指定价格落在当前K线高低点之间,会按指定价格撮合;如果超过范围,会按当前K线收盘价撮合。
这意味着什么?
意味着回测结果天然会比真实市场“干净”。
所以你看回测收益时,一定要保留一点怀疑,别把它直接当实盘预告片。
4. 第一个回测策略,建议就用双均线
这不是因为双均线最好,
而是因为它足够简单,最适合拿来测试整条链。
你需要验证的不是“这个策略会不会暴富”,而是下面这些事:
• 数据能不能正常读取
• 指标能不能正常计算
• 信号能不能正常生成
• 回测能不能正常出结果
• 资金曲线和日志能不能看懂
只要这套链第一次通了,后面你再加复杂度,心里会稳很多。
06|进入实盘前,先理解QMT里的两种交易思路
这部分是很多人第一次用QMT时最容易懵的地方。
迅投知识库对实盘交易,实际上强调了两种不同思路:
第一种:逐K线生效
可以理解成:
你希望盘中策略尽量模拟“按K线收完再做决定”的效果。
这种方式更适合:
• 日线策略
• 分钟线策略
• 你希望策略判断和K线节奏对齐
它的好处是思路更整齐,坏处是会有信号延迟和逐K线处理逻辑。
第二种:立即下单
知识库里提到,某些快速交易参数模式下,信号可以在触发后立即发出委托,不再等下一根K线确认。
这种方式更适合:
• 盘中实时策略
• 更重视即时执行的策略
但这里对新手有个很重要的提醒:
一旦进入立即下单逻辑,状态管理、委托跟踪、重复报单控制都会明显变复杂。
所以如果你是第一次跑实盘模型,不要一上来就选最激进的模式。
先把“能稳定跑、能稳定看懂委托和回报”这件事搞定,比什么都重要。
07|QMT里最关键的实操链路,到底长什么样?
如果你已经装好软件,也看过文档,我建议你把实操顺序固定成下面这样:
第一步:开客户端,确认账户已登录
包括交易账户、行情、相关模块都能正常使用。
第二步:补数据
你要做什么周期、什么品种,就先把数据下全。
第三步:写最简单的策略骨架
最典型的就是:
• init() 里做初始化
• handlebar() 里写主逻辑
社区教程里大量示例都是这个结构,因为它最容易上手。
第四步:先跑回测
看日志、看净值、看持仓变化。
不要急着开实盘。
第五步:切到模拟交易模式
这一步特别关键。
在QMT里,模拟和实盘运行模式不是一回事。你完全可以在策略层面先跑模拟信号,不真实发委托,先看信号、看流程、看逻辑是不是对的。
第六步:最后才上真实交易模式
当你已经确认:
• 信号对
• 委托逻辑对
• 仓位逻辑对
• 订单不会乱发
• 回报能跟踪
再上真实交易。
这才是最健康的QMT入门路线。
08|如果你用Python API接MiniQMT,最容易卡在哪?
社区教程里,MiniQMT / xtquant这一路的坑其实很集中。
1. 路径写错
比如 userdata_mini 路径不对,这是最常见的问题之一。
2. Python库没装好
如果 xtquant 导不进去,后面什么都别谈。
3. 会话ID和多策略管理混乱
有些示例里会特别提到不同策略最好使用不同的会话编号,否则容易混。
4. 回调没注册 or 线程没启动
很多交易回报、持仓变化、委托状态,依赖回调函数。
如果你只会下单,不会看回调,后面排错会非常痛苦。
5. 账号明明登录了,但程序侧没连上
这也是典型坑。客户端能看,不代表Python侧已经正确建立连接。
所以如果你走MiniQMT + Python API这条路,建议一定先完成下面几个最小动作:
• 能连上客户端
• 能查到账户
• 能查到持仓
• 能取到行情
• 能发一笔最简单的模拟/测试委托
• 能收到回报
这六件事都跑通,后面你再谈策略,才算真正开始。
09|QMT里哪些细节最容易把新手坑住?
这部分我直接给你做成“避坑清单”。
坑1:只看代码,不看数据准备
很多策略报错、回测异常,根本不是策略错,而是本地行情数据不完整。
坑2:只会发单,不会管回报
交易系统最怕的不是“不会下单”,而是“下了单不知道发生了什么”。
坑3:一上来就用复杂策略
QMT不是拿来炫技巧的,第一步应该先把最简单策略跑顺。
坑4:把模拟信号和实盘模式混为一谈
先模拟,再实盘,这个顺序别省。
坑5:回测好看,就默认实盘也会一样
QMT再接近实盘,也不能把回测当实盘复印件。
坑6:不做委托状态管理
尤其是快速交易、实时策略,最怕重复报单、超单、状态丢失。
坑7:对价格和成交假设太乐观
官方知识库明确提到,实盘里价格笼子、可用数量、真实交易所撮合规则都会影响能不能成交。
也就是说,QMT真正难的地方,不是软件会不会点,
而是你有没有把它当成一套完整交易系统来看。
10|如果你今天就要开始,我建议你按这个顺序走
如果你现在就是要开始学QMT,我建议最现实的路径是:
第1步:先开通权限、装好客户端、下好Python库
把环境问题先清掉。
第2步:补历史数据
先把本地回测数据准备完整。
第3步:用最简单的双均线写一个handlebar策略
别一上来就做复杂策略。
第4步:先跑回测
把日志、净值、交易记录看明白。
第5步:切模拟信号模式
确认盘中流程和委托逻辑。
第6步:最后再小资金实盘
真正上线前,先把仓位压小。
如果你能按这个顺序走,QMT这件事会清晰很多。
11|我最后给你的结论
如果你问我:QMT到底值不值得学?
我的回答是:
如果你只是想玩回测,QMT不是唯一选择;但如果你已经准备把A股量化往真实交易推进,QMT非常值得认真学。
因为它真正的价值,不在于“会不会写某个函数”,
而在于它让你开始直面量化最真实的部分:
• 数据要自己准备
• 逻辑要自己验证
• 模拟和实盘要分清
• 委托和回报要自己管理
• 交易系统不是写出来,而是跑出来的
这也是为什么,QMT一旦学明白,对量化理解会明显上一个台阶。
参考来源(整理时重点参考)
1. 迅投知识库《快速开始》
https://dict.thinktrader.net/innerApi/start_now.html
2. 迅投知识库《完整实例》
https://dict.thinktrader.net/nativeApi/code_examples.html
—— 在嘈杂的信号中,捕捉时代的呼吸。
夜雨聆风