
简介迅投QMT极速策略交易系统开发文档以PDF形式呈现内容出自北京睿智融科官方系统说明面向券商、期货公司及量化交易开发者用于了解QMT平台在行情显示、投研建模、自动化交易与风控管理等方面的整体架构与操作流程。文档共1个文件PDF格式大小约50.77MB内容按正式系统说明体例编排开篇为系统概述和交易终端运行环境随后依次展开功能模块总述、我的板块、模型研究与模型交易、行情模块含管理面板、个股分析、分时界面、Level2行情、交易模块账号管理与各类交易服务、极简模式、投资研究及其他设置并附有指定快捷键汇总目录层级清晰便于按需定位。全文对多账户批量管理、对冲与组合下单、算法交易、多层次并行风控等能力均有涉及也覆盖股票、期货、融资融券、组合交易等多种交易类型正文对每个功能模块的操作界面、入口和适用场景均有分步说明能帮助读者快速理解各模块联动逻辑可作为量化策略开发、终端部署和日常运维的配套参考。目前已有945人学习下载适合需要快速上手QMT终端或搭建极速交易环境的开发者查阅。 干量化的朋友应该没人不知道迅投QMT。这几年它几乎成了国内中小私募和资深个人玩家跑实盘的主流选择社区里求开发文档、求教程、求踩坑经验的帖子从来不少。但说句实话QMT的开发文档一直做得比较零散官方给的PDF经常更新不及时接口说明又藏在客户端安装目录里新手上手最难受的不是策略怎么写而是“到底该看哪份文档、去哪取、取到之后怎么用”。这篇文章我把最近这段时间摸过的开发文档、接口资料和实战经验一起整理出来。不管你是刚接触QMT准备跑模拟还是已经从PTrade转过来准备接实盘按这篇的路径去拿文档、理解核心接口、排掉高频坑能省下不少和客服来回扯皮的时间。内容不涉及具体券商内部资料都是公开文档和代码注释里能拿到的信息。1. 先想清楚你拿到的到底是什么版本的QMT很多人一上来就去搜“QMT开发文档”下了一大堆文件结果发现接口对不上、函数找不到。原因很简单QMT在不同环境下的开发接口根本不是一回事。1.1 客户端版本和“极简模式”的差别迅投QMT的客户端日常我们看到的是集成行情、交易、策略编辑器的完整终端。但真正的程序化开发大多数走的是“极简模式”也就是行业里经常说的miniQMT。极简模式不加载图形界面里的策略编辑功能而是专门为外部Python脚本、VBA脚本提供一个常驻的量化交易服务通道。两者在开发文档上最大的差异是完整版终端里的策略编辑器用VBA或Python编写文档重点是“策略文件格式、内置函数、回测面板配置”miniQMT外部接口重点是xtquant这个Python包文档核心是“连接、订阅行情、查询账户、下单、接收回调”这一套事务。我的建议很明确如果你做的是中低频策略用外部Python直连miniQMT效率最高文档也最稳定。别把时间耗在策略编辑器上那个生态更适合不会写代码的人。1.2 内置Python环境与外置Python环境开发文档里隐藏得比较深的一点是QMT客户端自带了Python环境。你打开安装目录能看到bin下面就有python.exe和一堆依赖库。如果你在客户端里跑策略可以用这个内置环境如果你像大多数人一样更习惯用自己的PyCharm、VSCode跑脚本就需要通过xtquant包连接客户端。需要注意内置环境的库版本比较固化装不了太多第三方包适合轻量运行外置环境更自由但文档在配置时容易漏掉一点——必须勾选/开启miniQMT的远程访问支持具体名称在个别券商版本里可能叫“外部脚本调用”或“免登录导出”。这下你再去翻文档能看到它讲的其实不是“怎么安装库”而是“怎么把外部脚本对接进客户端”。1.3 券商定制版的差异QMT还有一个让很多人头疼的问题各家券商拿到的客户端版本不一定完全一样。基础接口一致但部分券商会在开盘时段限制日内最大撤单次数、限制特定品种权限甚至修改了少量接口的返回字段名。所以拿到的开发文档只要不是当前当前客户端的配套版本都会出现对不上的情况。这也是为什么我一直建议以xtquant包源码docstring和本地客户端版本为准网上流传的文档只能当参考不能当标准。版本号在客户端“关于”页面能查到对不上就果断去翻本地文件别硬套旧文档。2. 文档去哪儿取官方渠道和安装目录里的“宝藏”既然标题叫“自己的取”那核心就是告诉你在哪几个位置能找到一手资料。我不推荐从某度网盘转来转去的分享链接一是版本老二是安全性没法保证。2.1 安装目录里的核心文档正常情况下QMT安装完成后在你安装的磁盘目录下能找到几个关键位置主目录下的README或说明.txt这是最容易被忽略的入门文档里面通常会写清楚版本特性、账号开通注意事项bin目录下的xtquant包里面有完整的.py源码几乎是活的开发文档函数参数、返回格式都写在docstring里部分版本会有docs或帮助文档目录放着PDF或CHM格式的接口说明。实际操作中我最常用的方式是直接用PyCharm打开xtquant包里的xttrader.py和xtdata.py按住Ctrl点函数名就能看到签名和注释比自己翻几百页PDF快得多。源码里的注释可能会滞后但也比从网上找的二手整理准确得多。2.2 官方社区和开发者通道迅投有一个官方的量化社区和开发者服务通道这里面一般能拿到最新版本发布说明与更新日志官方QMT量化接口文档的离线版常见问题FAQ和补丁包测试环境、模拟环境的申请方式。想直接和官方技术沟通走开发者通道的工单系统比在微信群里吼效率高不少。提工单时把版本号、操作步骤、报错截图带上基本半天内能得到有效回复。如果是实盘遇到资金相关的问题直接联系开户券商的售后更快他们和迅投之间有专门的对接通道。2.3 自己维护一份“接口变更记录”我自己的习惯是每次客户端升级都会把xtquant包复制一份出来按日期归档。别小看这个动作QMT接口偶尔会调整参数比如旧版里下单数量用volume字段新版可能改成了order_volume具体以实机版本为准。没归档的话客户端一升级老策略跑挂了你都不知道改在哪。归档之后配合版本对比工具Beyond Compare或Git一眼就能看出哪个函数变了真是省钱又省心的土办法。3. 核心开发流程拆解连接、行情、下单三件套拿到文档之后怎么快速上手我建议所有的QMT开发都围绕三个核心环节来连接客户端、获取数据、执行交易。把这三个跑通一个最简的实盘策略框架就有了。3.1 初始化和连接状态的管理xtquant的默认用法是创建一个XtQuantTrader实例传入一个回调对象和交易路径参数。连接成功之后需要订阅资产账户然后才能查询资金、持仓、下单。一个非常容易踩的坑是路径参数。这个路径指向的是QMT客户端的用户目录不是程序安装目录。有开发者在文档之外折腾半天填了安装目录结果一直报“连接失败”换成用户名下的userdata_mini目录才通。打开客户端的“数据维护”或交易日志能看到实际用的路径。回调机制也要提前理解。xtquant用的是异步回调比如委托回报、成交回报、资金变动都是事件驱动不是主动轮询。新手最容易犯的错是在主线程里while True死循环检查持仓结果把回调线程饿死导致状态刷新异常。正确的姿势是让回调函数快速记录数据由主线程按自己的节奏去消费这些数据。3.2 行情数据先下载再订阅顺序不能反QMT的xtdata模块提供两种获取行情的方式历史数据下载和实时行情订阅。这两个的方向完全不一样。download_history_data把历史K线或分笔数据拉到本地之后再读取就很快subscribe_quote实时订阅某合约的行情数据通过回调推送也可以主动查询最新行情。关键点是“先下载再看”。很多新手直接用get_market_data_ex拿数据拿回来空列表以为是没有权限。其实是因为本地还没下载过对应的合约周期数据。先调一次download_history_data把时间范围下载好再查询基本就有了。这里还要注意合约代码的标准格式。QMT里股票是600000.SH这种带后缀的格式期货是IF2409.CCF期权是10004567.OF之类的。格式不统一经常会报“合约不存在”做多市场的时候最好自己写一个转换函数。3.3 下单接口和订单状态管理下单接口分为同步和异步两种。同步接口order_stock会返回一个委托编号order_id异步接口order_stock_async则把下单动作放在回调里执行。我个人偏好用异步下单理由是实盘环境里同步接口容易出现阻塞尤其在程序需要同时处理多个合约时。订单提交之后真正的确认是以on_order_callback回调为准的不要在提交后立刻查持仓很大概率还是旧状态。止损止盈这类风控更推荐放在本地逻辑里做。有一些策略调cancel_order_stock撤单时会发现撤不掉。常见原因是该笔委托已经部分成交或已进入不可撤状态。正确做法是先从回调里拿到最新订单状态再做撤单决策而不是盲目撤。4. 开发过程中怎么用AI工具提效最近这段时间身边不少人问“QMT开发能不能也结合AI提效”。我的回答是能但得用对位置。AI不是替你写策略逻辑而是帮你加速“文档理解、代码翻译、报错排查”这三块。4.1 用AI读源码和整理接口说明书xtquant包动辄上千行源码里信息密度很高但人工读完确实耗时间。我会直接把关键源码文件丢给AI让它按“函数清单参数说明使用示例”输出一份精简版文档效率很高。不过要注意不要让AI凭空“脑补”QMT的接口用法。它记忆里的QMT知识可能混合了不同版本甚至包含其他平台的接口必须结合本地源码核对。我在实际操作中会让AI给出结论时带上源码里的docstring片段方便我一眼确认有没有胡编。4.2 用AI辅助排错和生成辅助代码遇到报错与其一条条消息问客服不如把完整回调和堆栈信息贴给AI让它先梳理可能原因再动手改。QMT的错误信息有时候比较隐晦比如明明没连上报的却是“取数超时”。AI可以根据上下文快速把常见异常成组列出来帮你缩小范围。还有一块是造测试数据和模拟场景。比如你想验证策略在涨跌停、停牌、除权除息各种边缘状态下的表现直接写数据太费劲。可以用AI生成这些特殊状态下的数据样本搭一个小批量测试脚本提前验逻辑而不必拿实盘资金去试错。5. 高频问题排查清单和避坑要点最后把这段时间整理出来的高频问题直接列成一个速查表全是那种“排查一小时解决一分钟”的问题。现象最常见原因处理方式外部Python报“连接超时”路径填错或客户端没有启动启动QMT客户端并确认极简模式开启核对用户目录路径连接成功但查不到资金未订阅资金/账户账号不匹配调用subscribe_account订阅当前登录账号历史K线返回空未先下载历史数据先调用download_history_data下载对应合约代码和周期实时行情不推送合约代码格式不带后缀检查是否为600000.SH这种带市场后缀格式下单后一直没有成交回报订单被拒或价格超出涨跌停范围查询订单状态回调核对价格限制和可用持仓撤单失败订单状态已是“部分成交/已报待撤”之外的状态先查询最新订单状态再撤单不要盲目反复撤客户端升级后策略报错xtquant接口发生了变化对比本地归档的旧版本源码定位变更点再修改5.1 回测和实盘差异还有一个没法通过排查单解决但必须明确认知的问题回测和实盘之间存在巨大差异。QMT的策略编辑器回测撮合相对理想化容易忽略滑点和成交量约束。实盘遇到涨停板附近的大单就算价格到了也很难买进成交量不够就是不够。我在做实盘前都会加一道“模拟盘验证”流程至少在QMT模拟环境跑两个星期把策略的委托日志和回报日志拉出来看对比回测结果里的成交位置和实际成交位置。这一步能过滤掉大量回测“看着很美”的策略。5.2 回调线程和主线程的资源竞争QMT的回调是独立线程如果程序同时用多线程写数据库或发送通知就会涉及线程安全问题。比如你直接在回调里写变量主线程可能读不到最新值或者读到半新半旧的状态。推荐做法是回调函数只负责把数据放进队列queue.Queue主线程从队列里取再统一处理。这是通用技巧但在QMT开发里尤其重要因为回调频率可能很高处理不当会导致数据错乱。5.3 盘后维护和定时任务还有一个被忽略的细节QMT客户端不一定要一直开着但在实盘交易时段开着最稳妥。很多开发者会写一个盘后采集程序晚上自动下载第二天需要的数据。定时任务里尽量不要用Windows计划任务直接启动python脚本因为脚本依赖客户端环境而客户端环境可能需要先登录。可以写一个小的启动器先检测客户端进程是否在运行不在就拉起然后等3到5分钟再跑数据程序这样能避开客户端初始化还没完成导致的数据读取异常。6. 一些资料和学习路径的最终建议QMT开发文档千千万最容易让人盲目的是“越存越多越看越乱”。按我个人的经验整理一套自己的资料体系比收集资料本身重要得多。我现在的做法是本地维护一个项目目录里面按“文档、源码归档、策略模板、问题笔记”四类存放。文档放官方PDF和整理后的精简版源码归档放每个版本的xtquant包策略模板放可以直接跑的完整框架问题笔记就是每一次排错的记录包括错误信息和解决过程。这套体系帮我迭代了很多次每次客户端升级问题笔记都能让我快速定位以前踩过的坑。回到最初的问题QMT的开发文档到底怎么取顺着官方渠道和本地源码这两个方向走配合版本归档和AI辅助整理基本就已经超过九成还在到处找资料的人了。开发QMT本质是搞清楚“数据怎么来、订单怎么发、回调怎么收”这三个点通了往上加什么策略模型都只是时间问题。本文还有配套的精品资源点击获取