大 QMT:两种接入方式¶
这是当前推荐的 QMT 接入方式。只需要先在大 QMT 中运行一个网关策略,再根据策略运行位置选择下面两条路线之一:
- 聚宽运行策略:聚宽策略通过互联网连接家里或办公室的 BulletTrade 服务。
- 本地运行策略:策略通过
bullet-trade live在本地运行,并连接同一台机器上的 BulletTrade 服务。
网页版入口:https://bullettrade.cn/docs/big-qmt-server.html
先用仿真账号
配置完成只说明链路可用,不代表已经成交。第一次接入请使用仿真账号,依次核对行情、资金、持仓、委托、成交与最终持仓。
先看懂两个端口¶
大 QMT 内部网关和对外服务不是同一个端口:
| 端口 | 用途 | 是否对公网开放 |
|---|---|---|
9000 |
大 QMT 策略内部接口 | 不开放,只监听 127.0.0.1 |
58620 |
BulletTrade 的 qmt-remote 服务 |
聚宽路线需要;本地路线不需要 |
无论选择哪条路线,策略都连接 58620,不要直接连接 9000。
第一步:在大 QMT 中启动网关策略¶
1. 登录大 QMT¶
登录需要提供交易能力的账号,并保持大 QMT 运行。

2. 新建 Python 策略¶
在大 QMT 左侧策略区新建 Python 策略,名称可填写 BT_BIG_QMT_GATEWAY。

将下面这个文件的完整内容复制到大 QMT 策略编辑器:
helpers/big_qmt_gateway_strategy_sample.py
源文件:GitHub 查看 helper
3. 只修改一个参数¶
第一次配置只需要修改内部密码:
GATEWAY_PASSWORD = "请换成自己的内部密码"
GATEWAY_PASSWORD要与下一步.env.bigqmt中的BIG_QMT_GATEWAY_PASSWORD完全一致。- helper 中普通下单和按明确订单号撤单已经默认开启,不需要用户配置或执行“开交易”。
LISTEN_HOST=127.0.0.1、LISTEN_PORT=9000和ACCOUNT_TYPE=stock都有合适的默认值,不需要重复修改。- 账号由 BulletTrade 服务统一传给网关。只有直接调试
9000时,才需要填写 helper 顶部的ACCOUNT_ID。

保持 GBK 编码
该文件运行在大 QMT 内置 Python 环境,复制和保存时不要将其自动转换成 UTF-8。
4. 创建并运行“策略交易”¶
在大 QMT 的模型交易区新建一个“策略交易”运行项:
- 选择刚才保存的
BT_BIG_QMT_GATEWAY策略。 - 选择要提供服务的资金账号。
- 主图代码可选
000300,周期选日线即可。 - 建议勾选“终端启动后自动运行”。
- 不要勾选“启动本地 Python”。

从“策略交易”运行项启动它,确保大 QMT 调用了 init(ContextInfo)。

看到下面几类日志,说明 9000 网关已经启动:
[BT_BIG_QMT] init starting account=...
[BT_BIG_QMT] listen success listen=127.0.0.1:9000
[BT_BIG_QMT] entering tornado ioloop; gateway should keep running
第二步:启动 BulletTrade 服务¶
在运行大 QMT 的同一台 Windows 机器上安装 BulletTrade:
pip install bullet-trade
将仓库中的 env.bigqmt.example 复制为 .env.bigqmt,只填写三个值:
QMT_SERVER_TOKEN=请生成一个新的客户端令牌
QMT_ACCOUNT_ID=你的QMT资金账号
BIG_QMT_GATEWAY_PASSWORD=与helper顶部完全一致
这里有两层凭证,作用不同:
BIG_QMT_GATEWAY_PASSWORD:只保护本机9000内部接口。QMT_SERVER_TOKEN:客户端连接58620时使用;即使只在本机使用也不能留空。
本地路线只监听本机:
bullet-trade --env-file .env.bigqmt server --server-type big_qmt --listen 127.0.0.1
聚宽路线需要允许远程连接:
bullet-trade --env-file .env.bigqmt server --server-type big_qmt --listen 0.0.0.0
端口、网关地址、超时和数据/交易模块都有默认值,不需要写进首次配置。聚宽路线只开放 58620,不要开放 9000。
不要把 58620 作为裸 TCP 直接暴露到公网
跨互联网访问时应使用 VPN、加密隧道,或正确配置 TLS 与 IP 白名单。QMT_SERVER_TOKEN 只负责身份校验,不能代替传输加密。
0.10.0 Beta 3 更新说明¶
本版更新大 QMT 历史行情、复权和成交认领。升级 server 的 Python 包后,还需更新大 QMT 中实际运行的网关文件,逐项保留自己的账号、端口、密码和运行配置,保留新版构建号和事件协议标识。聚宽 helper 相对 Beta 2 没有变化。
股票/ETF 历史查询现在由服务端统一处理原始行情、除权事件、分钟时间轴、停牌和多周期合成;结果可能与旧版原生复权不同。QMT 未提供的权益和历史精度差异不作强行推算。完整变化与升级要求见更新日志。
从 0.10.0 Beta 1 升级¶
本节仅说明 Beta 1 → Beta 2,不是后续所有版本的通用升级清单。其他版本应按对应更新日志分别核对 Python 包、聚宽 helper 和大 QMT 网关文件的变更。
- 升级运行 BulletTrade server 的 Python 包或源码并重启 server。
- 聚宽运行策略需要重新上传本版
helpers/bullet_trade_jq_remote_helper.py,以获得data.history的 180 秒默认等待窗口。 - 大 QMT 中运行的
helpers/big_qmt_gateway_strategy_sample.py本批没有变化,不需要仅为本次升级重新复制或重启网关策略。 - 本地运行策略直接使用升级后的
qmt-remote客户端,不需要额外增加超时配置。
路线一:策略在聚宽运行¶
第一次接入请按已有聚宽策略:从零接入教程逐步操作,其中包括安装、端口配置、只读验证,以及显式调用和函数接管两种完整示例。以下仅为显式接口的简写参考。
flowchart LR
A[聚宽策略] --> B[聚宽 helper]
B -->|互联网 58620| C[BulletTrade server]
C -->|本机 9000| D[大 QMT 网关策略]
D --> E[QMT 账号与交易通道]
适合希望继续在聚宽编辑、定时和运行策略,只把账户查询与下单交给自己的大 QMT 的用户。
1. 上传聚宽 helper¶
将下面文件上传到聚宽研究根目录:
helpers/bullet_trade_jq_remote_helper.py
2. 在策略里填写两个值¶
import bullet_trade_jq_remote_helper as bt
def process_initialize(context):
bt.configure(
host="你的公网地址或域名",
token="与 QMT_SERVER_TOKEN 相同",
)
58620 是默认入口端口,可以省略。服务改端口或公网映射端口不同时,增加 port=实际入口端口;例如外部 15862 映射到本机 58620,聚宽填 port=15862。服务监听端口通过 .env.bigqmt 的 QMT_SERVER_PORT 或启动参数 --port 配置,后者优先。完整对应表见教程第 3 步。
bt.configure() 不接管聚宽原函数,也不自动识别回测。保留 order(...) 等原写法需使用 bt.install_jq_compat(...);显式 bt.xxx 兼顾回测时需在策略中分流,参见教程两种方案。
查询账户和下单仍然使用 helper:
account = bt.get_account()
positions = bt.get_positions()
# 第一次调用请使用仿真账号
order_id = bt.order("000001.XSHE", 100, price=10.00)
完整示例:jq_remote_strategy_example.py
路线二:策略在本地运行¶
flowchart LR
A[本地策略文件] -->|bullet-trade live| B[qmt-remote 客户端]
B -->|本机 58620| C[BulletTrade server]
C -->|本机 9000| D[大 QMT 网关策略]
D --> E[QMT 账号与交易通道]
适合希望策略、日志和运行环境都由自己管理的用户。
先保持上一节的本地服务正在运行,然后执行:
bullet-trade --env-file .env.bigqmt live my_strategy.py --broker qmt-remote
因为策略、BulletTrade 服务和大 QMT 都在同一台机器,客户端地址默认就是 127.0.0.1:58620,无需再配置 host 和 port。
如果策略还希望通过大 QMT 读取行情,可在 .env.bigqmt 额外增加:
DEFAULT_DATA_PROVIDER=qmt-remote
这不是下单所必需的配置;继续使用 JQData 或其他数据源时不要添加。
最小验收顺序¶
不要把“端口能连接”当成已经可以实盘。按下面顺序验证:
admin.health显示backend_type=big_qmt且后端可用。- 能读取当前行情、资金和持仓。
- 能读取当日委托与成交。
- 在仿真账号提交一笔最小限价单。
- 根据返回的明确订单号测试撤单,再核对委托状态和成交结果。
当前大 QMT 适配仍按接口矩阵逐项补齐。某项能力在 admin.health 中显示 unavailable 时,应停止该项调用,不要假设它与 MiniQMT 完全等价。
常见问题¶
日志只有 module loaded,没有 init starting¶
说明启动方式没有调用大 QMT 策略生命周期。请从“策略交易”运行项启动,并确认没有勾选“启动本地 Python”。
9000 能访问,但策略连不上¶
策略不应连接 9000。请检查 BulletTrade 服务是否已启动,并连接 58620。
密码为什么有两个¶
GATEWAY_PASSWORD / BIG_QMT_GATEWAY_PASSWORD 是本机内部密码;QMT_SERVER_TOKEN 是客户端令牌。前一组必须互相一致,不能拿客户端令牌替代。
什么时候需要改更多配置¶
只有改端口、跨机器部署、启用 TLS/IP 白名单、配置多个账号或排查超时时,才需要查看 配置总览 和 QMT 服务配置。第一次接入不要复制整份 .env。
MiniQMT 和华鑫在哪里¶
MiniQMT 仍作为兼容方案保留在高级接入文档中;华鑫 TORA 是面向自备 SDK 的专业接入,不作为新手主线。