
聚宽和QMT到底是不是一回事
很多刚接触量化交易的朋友,手里攒了点Python底子,就想着把自己的策略跑起来。跑到聚宽上回测挺顺,一换到QMT就处处报错。这俩东西名字听起来都是量化平台,代码写起来却像两种方言。
聚宽是云端在线平台,你写代码、回测、模拟盘,全在浏览器里完成。QMT是券商提供的本地客户端,策略跑在你自己的电脑上,通过一个叫xtquant的Python库跟客户端通信。一个是租房子住,一个是自己盖房子,水电煤气都得自己接。

策略主体结构长什么样
聚宽的策略框架非常固定。初始化函数initialize,每天开盘前跑一次before_trading_start,盘中每个K线走完触发handle_data,收盘后还有after_trading_end。你只需要把这些函数填满,聚宽会自动按时间轴调用。
QMT的策略结构更自由,但自由意味着你得自己管流程。核心是init函数做初始化,然后通过subscribe订阅行情,行情回调里写交易逻辑。没有固定的handle_data帮你按周期触发,你得自己在回调里判断当前时间是不是该调仓。
用一个比喻:聚宽给你一个自动流水线,你把零件放上去就行。QMT给你一堆螺丝刀和扳手,流水线要自己搭。
数据获取方式天差地别
聚宽里拿数据太顺手了。get_price、get_fundamentals、get_index_stocks,一行代码就能取到历史行情、财务数据、指数成分股。数据在云端,不用下载,不用维护。
QMT里取数据分两块。历史数据通过xtquant的get_market_data函数,从本地客户端下载的数据文件里读。实时行情靠订阅回调推送。财务数据得用get_financial_data,参数写法跟聚宽完全不一样。
最坑的一点:QMT下载数据需要先在客户端界面里手动补充历史数据,否则代码跑起来发现数据缺失,回测结果全是错的。聚宽从来不用操心这个。
回测和实盘的代码差异
聚宽回测和模拟盘用同一套代码,切换模式只需要在界面上点一下。实盘需要开通聚宽的合作券商,代码基本不用改。
QMT的回测和实盘代码差异更大。回测时可以用xtquant的backtest模块,但实盘必须用xttrader模块。下单函数从order变成order_stock,参数从简单的股票代码和数量变成需要指定账号、报价类型、委托类型。
很多人在聚宽上写策略,回测年化30%,换到QMT实盘,第一周就发现成交价跟回测差一大截。原因是聚宽回测默认按当前K线收盘价成交,QMT实盘按对手价或最新价成交,滑点完全不是一回事。
交易接口的写法对比
聚宽下单极其简单:order('000001.XSHE', 1000),买入1000股平安银行。order_target可以调整仓位到目标比例。
QMT下单需要先创建交易对象,连接客户端,然后调用order_stock。参数包括账号ID、股票代码、委托类型、价格类型、数量。委托类型分限价、市价、最优五档等。价格类型分最新价、对手价、排队价等。
# QMT实盘下单示例
from xtquant import xttrader
trader = xttrader.XtQuantTrader(path, session_id)
trader.start()
trader.connect()
# 买入 000001.SZ 1000股,对手价
trader.order_stock(account, '000001.SZ', xtconstant.STOCK_BUY, 1000, xtconstant.FIX_PRICE, -1)
聚宽用户转到QMT,最容易卡在下单这一步。参数太多,少一个就报错,报错信息还看不懂。
代码移植的坑在哪里
把聚宽策略搬到QMT,核心工作是三件事。第一,把handle_data里的逻辑拆到行情回调里,并加上时间判断。第二,把聚宽的数据函数替换成QMT的接口,注意参数顺序和返回值格式。第三,重写下单模块,处理账号连接和委托参数。
时间处理上,聚宽用context.current_dt,QMT回调里用tick或bar的时间戳。聚宽的股票代码格式是000001.XSHE,QMT是000001.SZ。这些细节不统一,策略跑起来就是各种异常。
散户该选哪个
如果你还在验证策略逻辑,聚宽是更好的选择。环境干净,数据齐全,回测快,社区活跃。代码写起来专注在逻辑本身,不用操心工程问题。
如果你已经有一套稳定盈利的策略,准备上实盘,QMT是绕不开的。国内大多数券商都支持QMT,交易速度快,资金安全有保障。代价是你要花时间搞懂客户端配置、数据下载、交易接口。
两条路不冲突。先在聚宽上把策略打磨到夏普比率稳定在1.5以上,最大回撤控制在20%以内,再考虑往QMT移植。移植过程本身就是一次对策略逻辑的重新审视,很多在聚宽上被隐藏的bug会在QMT里暴露出来。
量化交易的核心不是平台,是策略逻辑。平台只是工具,工具用顺了,哪个都能赚钱。工具用不顺,换一百个平台也是亏。