QMT 跟单包安装与参数配置
适用产品:聚宽跟单工具 · 预计用时:约 5 分钟 · 跟单包里只有三个文件
跟单包里有什么
本站的跟单包,整包只有三个文件。两个文件必须同名,而且 QMT 里的 策略名也要跟它们一致 —— QMT 靠「策略名 = 文件名」登记策略、匹配参数面板。 所以不能只把文件拷进目录,要先在 QMT 里新建这个同名策略 (见下面「QMT 侧:先新建同名策略」那一步)。
| 文件 | 放到哪 | 作用 |
|---|---|---|
| 安装说明.txt | 随便读 | 离线版安装说明,包里那几步都写在里面。 |
| 聚宽跟单策略.py | <QMT>\python\先在 QMT 新建同名策略,再覆盖进去 |
QMT 侧的完整跟单逻辑。它主动去中转站「领」信号, 所以不开端口、不需要多线程,一个文件就够。 |
| 聚宽跟单策略.xml | <QMT>\python\formulaLayout\ |
参数面板。中转站地址与通道令牌已按你的通道预填。 |
安装步骤
按顺序走一遍即可,全程不需要改策略源码。
在工作台通道详情里点「下载 QMT 跟单包」。包内已自动写入你的通道令牌与中转站地址,共三个文件。
回到工作台的「聚宽接入代码」,点「复制完整代码」,粘到你聚宽策略代码的最前面,保存并编译。策略主体一行都不用改(详见「聚宽连接教程」)。
光把 .py 放进 python 文件夹,QMT 是不会认的 —— 它靠「策略名 = 文件名」登记策略,「新建同名策略」这一步不能省。顺序如下:
- 打开 QMT 左侧「模型研究」,在策略列表空白处右键 → 新建策略(有的版本叫「新建模型」或「新建 Python 策略」)。
- 把策略名填成「聚宽跟单策略」—— 必须与包里的 .py 文件名一模一样,一个字都不能差。
- 把包里的「聚宽跟单策略.py」复制到 QMT 安装目录的 python 文件夹,覆盖掉刚新建出来的那个同名文件。
- 把「聚宽跟单策略.xml」复制到同目录下的 formulaLayout 文件夹。例:D:\东北证券NET专业版\python\formulaLayout\
重开 QMT(或在策略列表里刷新)。「模型研究 / 模型交易」里会出现一个名为「聚宽跟单策略」的策略。找不到 python 目录时,在 QMT 安装目录里搜 formulaLayout 即可定位。
打开该策略的参数设置,核对四项:中转站地址(已填好)、通道令牌(已填好)、资金账号(不是你自己的就改成你的)、空跑模式(先保持「是」)。
保存参数后点【运行】——注意不是只点「编译」。只编译不会启动主泵,这是最常见的失败原因。
看 QMT 日志窗口,30 秒内应出现:[follower] alive ticks=.. served=0 errors=0。没有这一行 = 策略没跑起来(没点运行 / 跑在回测模式),不是代码问题。
回到工作台「验证QMT连接」,填标的/方向/数量,发送后看信号状态变化。此时处于空跑模式,只写日志、不会真报单。
信号应从「待领取」变为「已完成」,工作台「QMT连接」显示「已连接」。建议保持空跑模式跑满一个交易日观察稳定性。
把参数面板「空跑模式」改成「否」,用最小数量跑一轮真实链路,到 QMT 委托列表核对方向 / 价格 / 数量是否与预期一致。
按资金量设好「单笔金额上限」与「单笔股数上限」,这两项是跟单链路上最后一道闸。
确认无误后保持策略处于【运行】状态即可。QMT 关机或策略停止,跟单就中断——服务端会把未完成的信号留在队列里,等下一轮领取。
参数说明
中转站地址、通道令牌、资金账号在下载跟单包时已预填,通常只需核对一次。
| 参数 | 说明 |
|---|---|
| 中转站地址 | 已按你的通道填好,不要以斜杠结尾。若域名推不上去可改用 IP + 端口。 |
| 通道令牌 | 等同于你的钥匙,面板里是明文。不要截图外发;泄露后到工作台「更换令牌」并重新下载跟单包。 |
| 资金账号 | 下单用的 QMT 资金账号,必须与 QMT 当前登录的账号一致。填错会表现为「委托被柜台拒绝」。 |
| 账户类型 | 普通账户填 STOCK,两融账户填 CREDIT。 |
| 下单模式 | 信号没指定数量口径时用这个:按股数 / 按金额 / 按总资产比例 / 调到目标仓位 / 全部可用。 |
| 报价方式 | 对手价 / 最新价 / 买一至买五 / 卖一至卖五 / 信号指定限价。 |
| 价格笼子比例 | 最终限价被夹在最新价正负该比例以内,默认 2%。即使信号给了乱价,也不会下出离谱的单。 |
| 资金使用比例 | 买入最多可动用可用资金的比例,默认 80%。 |
| 信号时效(秒) | 信号从生成到执行的最大延迟,超时直接拒单。默认 120 秒,防止隔夜旧信号被翻出来执行。 |
| 仅交易时段下单 | 只在 09:30-11:30 / 13:00-15:00 内下单,非交易时段收到的信号直接拒单。默认开启。 |
| 空跑模式 | 出厂默认「是」:只写日志、完全不报单。核实链路后再改成「否」。改之前不会有任何真实委托。 |
| 测试模式 | 联调用:接受历史信号与非交易时段信号,每笔固定 100 股。注意它仍会真实报单,请配合模拟账户使用。 |
| 自动撤单 | 默认关闭。开启后,本策略挂出的单超过「撤单时间」仍未成交就撤掉,最多重挂「撤单重挂次数」次。 |
| 废单重试次数 | 券商返回废单(状态 57)时自动重新取价并重下,默认 3 次。 |
| 轮询周期 | 默认 1nSecond,最小 500nMilliSecond。主泵跑在 QMT 主线程上,不建议调得更频繁。 |
| 通知 | 可填 Server酱 SendKey 与钉钉/企业微信/飞书机器人地址,用于推送下单结果。留空则不推送。 |
跟单包里 xml 的大致样子
<?xml version="1.0" encoding="utf-8"?>
<TCStageLayout>
<control note="控件">
<variable note="控件">
<item bind="RELAY_URL" value="已按你的通道填好" type="intput" />
<item bind="CHANNEL_TOKEN" value="已按你的通道填好" type="intput" />
<item bind="ACCOUNT_ID" value="FILL_YOUR_ACCOUNT_ID" type="intput" />
<item bind="DRY_RUN" value="是" type="combo" />
...
</variable>
</control>
</TCStageLayout>
三个名字要一致:包里的 .py 文件名、.xml 文件名、以及 QMT 里的策略名。 任何一处不同名,轻则打开策略看不到参数设置,重则策略列表里根本不出现它。 执行参数中的风控阈值等,也可以随时在网站工作台改 —— 策略每次心跳都会把新参数领回去。 示例仅说明参数形式,不构成交易建议。
问题排查
| 现象 | 处理 |
|---|---|
| 照说明把 .py 放进 python 文件夹,策略列表里却没有 | 明文 .py 放进目录本来就不会被识别 —— QMT 那套「放文件夹就自动出现」的机制认的是 .rzrk 加密策略。回到「QMT 侧:先新建同名策略」那一步:先在 QMT 里新建一个同名策略,再把包里的两个文件覆盖进去。 |
| 打开策略没有参数设置 / 面板是空的 | xml 与策略不同名,或 xml 没放进 python\formulaLayout\ 目录。两个文件名要一模一样。 |
QMT 日志没有 [follower] alive 行 | 策略没在跑:只点了「编译」没点【运行】,或跑在回测模式。回测模式下定时器不生效,主泵不会启动。 |
QMT 报 SyntaxError: (unicode error) 'utf-8' codec can't decode byte 0xb4 … | 这是文件编码问题,不是代码问题:QMT 编辑器把文件存成了 GBK,而运行时按 UTF-8 解码,撞到第一个汉字就报错。跟单包内的策略文件是纯英文(零中文),用包内原文件全选替换重新复制一次即可。请不要给它加中文注释,也不要用记事本「另存为 ANSI」。 |
日志出现 WARNING CHANNEL_TOKEN is still a placeholder | 参数面板里的通道令牌是空的。回工作台重新下载跟单包,再核对一次。 |
| 日志出现 401 / 通道 token 无效 | 令牌不对,或通道被暂停。到工作台核对通道状态与令牌。 |
| 日志出现连接超时 / 连不上中转站 | 这台机器访问不到中转站。先确认地址填对(不要以斜杠结尾),再排查公司网络 / 杀毒软件 / 防火墙是否拦截出站请求;临时可改用 IP + 端口的形式先跑通。 |
| 信号一直停在「待领取」 | QMT 侧主泵没在跑,或令牌不对(服务端会返回 401)。先看 alive 行有没有出现。 |
| 信号返回 expired | 信号时间戳比服务器早超过新鲜度阈值 —— 多为回测信号误推,属预期拦截。 |
| 同一条信号被执行了两次 | 该信号被领走后在租约期内没回报,租约到期自动放回,又被领了一次。先确认网络稳定;把「信号时效(秒)」调小可降低影响。 |
| 订单失败或数量不一致 | 检查资金、可卖持仓、下单模式、价格边界与 QMT 委托日志。 |
| 工作台一直显示「待验证」 | 策略没发心跳,或令牌错误。先确认 QMT 日志里的 alive 行。 |
