首页

--
LTtx(库通信)
通用查询通道
通用交易通道
通用模式
QMT 能力转接控制台

用 cfquant 替代 miniqmt,把大 QMT 的交易、行情和多账号能力统一接出来。

项目在本机启动 Web 服务,外部 Python 默认先通过 LTtx 发现 Web 路由,网页请求直接进入 Web;两者最终都由账号配置自动路由到通用端或高级端。新用户优先使用通用模式,一个 QMT 加载一个 ctypes 文件即可完成资金、持仓、委托、下单、撤单和回调验证。

通用模式单文件部署 高级模式低延迟交易 LTtx 自动发现 PipeHub 通用后端 多账号自动路由 WebSocket 回调

资产

总资产--
可用资金--
总市值--
持仓盈亏--

操作

LTtx 地址--
LTtx PID--
cfquant 库--
重启策略保留
账号配置
绑定实时状态
账号 首选模式 实际模式 QMT 目录 数据源

持仓

代码 名称 持仓 可用 成本价 市值 盈亏

实时委托

序号 最后回调

提交委托

批量买入

交易数据

代码 名称 持仓 可用 成本价 市值 盈亏
序号 最后回调
时间 代码 名称 价格 数量 金额

系统状态

LTtx / normal / trade

          

绑定操作

账号绑定 --
列表维护账号绑定 绑定信息、运行状态和验证入口集中显示。

QMT 内部代码

保存绑定后按当前模式显示

绑定列表

账号 / 通道 / QMT 目录
操作 账号名称 资金账号 连接状态 首选模式 实际模式 内部通道 QMT 目录 数据源

绑定验证

资金

总资产--
可用资金--
总市值--
持仓盈亏--

持仓

代码 名称 持仓 可用 市值

交易回调

连接状态未连接
订阅过滤--
最后事件尚未收到真实回调
服务端序号seq 0
接收时间 事件 账号 代码 委托编号 价格 数量 成交 状态 / 摘要 来源 完整信息

HTTP 接口文档

在线调试
API Key 和 IP 访问策略在设置页配置,文档调试会自动使用已保存的配置。
--
--

请求


                  

响应


                  

设置

访问 / 日志 / 更新

个人资料

管理员 内置头像
内置头像 选择后点击保存资料生效

API Key

Web 访问

当前监听 --
配置端口 --
访问范围 --
网页登录 --

通信模式

监听与访问

网页登录

外部 API 地址

日志清理

本地服务日志统一写入项目 log/ 目录,默认自动保留最近 30 天;根目录旧日志也会纳入过期清理。

QMT 日志

通信模式

PipeHub 状态 --

系统更新

一次更新完整版本,并把最新 cfquant 核心同步到所有已绑定 QMT 目录。

版本信息 完整版本更新 更新完成后,请完全退出并重启 QMT 加载新版本。
未加载项目更新状态
高级选项
执行结果

                    

教程中心

部署 / 网页 / 接口

先把 cfquant 跑起来

按向导填账号、选模式、部署脚本、验证数据。其他说明以后再看。

推荐 第一次用通用模式,QMT 目录填 bin.x64

跑通后再看

多账号 在“绑定”继续添加账号,QMT 目录填实际登录该账号的 bin.x64 高级模式 需要两个 QMT,普通端和极速交易端都在线后再使用。 排查 先看绑定状态和 QMT 日志,再看 PipeHub 是否在线。

项目架构

cfquant 是本机 QMT 桥接控制台。它把 Web 页面、外部 Python 和大 QMT 策略脚本连在一起,由 Web 统一管理账号、运行模式、回调和更新。

用户侧 网页操作,或在外部 Python 中按 xtquant 习惯调用。 本地服务 Web Server 管账号路由;PipeHub 管通用/极致模式;LTtx 管高级模式和自动发现。 QMT 侧 根据模式加载一个或两个入口脚本,再调用 QMT 原生函数。

三种运行链路

模式 QMT 入口 适合场景
通用模式 CFQUANT_CTYPE_ALL_LOWLAT.py 默认推荐。一个 QMT 即可跑通行情、查询、交易和回调。
极致模式 CFQUANT_LITE.py 入口自包含,适合国泰君安、国泰海通等导入受限环境。
高级模式 CFQUANT.py + CFQUANT_TRADE_LOWLAT.py 两个 QMT,普通端做查询和回调,极速交易端做低延迟交易请求。

关键文件

位置 作用
runtime/config/cfquant_web_config.json 保存账号、QMT 目录、运行模式、共享行情源和市场路由。
qmt_scripts/ 放给 QMT 加载的入口脚本。
bin.x64/cfquant_bridge_config.json Web 为 QMT 写入的身份文件,用于区分不同 QMT 终端。
log/ Web、PipeHub、LTtx 和 QMT 桥接日志。

快速开始

  1. 启动服务。运行 start_cfquant.bat,或执行 cfquant --open-browser
  2. 完成初始化。填写资金账号、账户类型、QMT 安装目录或 bin.x64 目录和运行模式。
  3. 部署 QMT。系统会自动复制核心包;仍需按“QMT 部署教程”创建或更新入口脚本。
  4. 启动脚本。通用模式启动一个入口;高级模式分别启动普通端和极速交易端。
  5. 验证账号。回到“绑定”页刷新状态,再查资金、持仓。
  6. 接入外部程序。先在“接口”页调通参数,再改外部 Python 代码。

启动后看哪里

首页 看当前账号资金、持仓和实时委托。 绑定 维护账号、QMT 目录、模式和共享行情源。 状态 确认 Web、PipeHub、LTtx 和 QMT 入口是否在线。 接口 调试 HTTP、WebSocket、行情下载和回调。

网页端

网页端负责配置、验证和排查。外部策略接入前,先用网页确认账号和 QMT 链路是通的。

首页当前账号的资产、持仓、委托和基础状态。
绑定账号、账户类型、QMT 目录、运行模式、共享行情源。
交易单笔下单、批量下单、撤单和委托刷新。
状态查看普通端、交易端、PipeHub、LTtx 是否在线。
回调查看委托、成交、下单错误、撤单错误事件。
接口在线调试行情、交易、下载和 WebSocket。
设置API Key、远程访问、日志、版本检查和更新。

推荐顺序

  1. 先在“绑定”保存账号配置。
  2. 再在 QMT 启动对应入口脚本。
  3. 回网页刷新绑定状态,确认实际模式在线。
  4. 查资金和持仓,确认账号没有串。
  5. 最后再测试下单、撤单和外部接口。

外部 Python

外部程序优先使用默认 auto 路由。Web 在线时请求进入 Web 统一路由,再按账号配置选择通用、极致或高级模式。

pip install cfquant
pip install "cfquant[zmq]"   # 需要 ZMQ 能力时再安装
cfquant --open-browser
cfquant qmt-scripts --output D:\QMT\cfquant

xtquant 平替写法

from cfquant import xtdata
from cfquant.xttrader import XtQuantTrader
from cfquant.xttype import StockAccount

account = StockAccount("YOUR_ACCOUNT_ID")
trader = XtQuantTrader("", 0, account=account)
trader.start()

print(xtdata.get_full_tick(["000001.SZ"]))
print(trader.query_stock_asset(account))

什么时候手动配置

正常多账号部署不用写 configure()。只有固定走某条链路、改 LTtx 端口、改 Pipe 名称或排查连接问题时再手动指定。

from cfquant import configure

configure(transport="ctypes", pipe_name=r"\\.\pipe\cfquant_pipe_hub")
# 或:configure(transport="web_lttx", host="127.0.0.1", port=2049, token="LTtx")

【cfquant】QMT 部署教程

本教程介绍如何在大 QMT 中部署 cfquant,并通过本地 Web 控制台或外部 Python 调用行情、查询、交易和回调能力。

建议先部署通用模式 通用模式只需要一个 QMT 和一个入口脚本,最适合首次验证。国泰君安和国泰海通的 QMT 建议直接使用极致模式;国泰海通无法部署高级模式。
1. 先启动本地服务 通过 start_cfquant.batcfquant --open-browser 打开 Web 控制台,默认地址是 http://127.0.0.1:8765/
2. 再准备 QMT 环境 登录 QMT,并确认“模型研究”或“模型交易”里的 Python 环境已经安装可用。
3. 最后绑定账号验证 在网页“绑定”页填写资金账号、QMT 安装目录或 bin.x64 和运行模式,能查到资产、持仓或行情即部署成功。
模式 入口脚本 QMT 数量 说明
通用模式 CFQUANT_CTYPE_ALL_LOWLAT.py 1 个 默认推荐,适合大多数行情、查询、下单、撤单和回调场景。
极致模式 CFQUANT_LITE.py 1 个 适合 QMT 对 Python 包导入有限制,或国泰君安、国泰海通等环境。
高级模式 CFQUANT.py + CFQUANT_TRADE_LOWLAT.py 2 个 部署复杂,但外部程序到 QMT 内部的下单链路延迟更低。

一、通用模式部署教程

特别提醒 国泰君安和国泰海通的 QMT,需要走【极致模式】。其他券商 QMT 建议先按通用模式部署。
  1. 下载项目解压,或通过 pip 安装后找到安装目录。下面以下载解压项目、国金证券 QMT 为例,其他证券公司的 QMT 按相同方式处理。
  2. 填写 QMT 目录。在初始化或绑定页填写 QMT 安装目录或 bin.x64,系统会自动复制 cfquant 核心包。
将 cfquant 目录复制到 QMT 安装目录
历史手动复制位置;新版可由 Web 在保存账号配置时自动复制。
  1. 打开 QMT。完成登录,并安装相应 Python 环境;如果已经安装,可以忽略。
QMT 登录并安装 Python 环境
打开 QMT,登录账号并确认 Python 环境可用。
  1. 新建 Python 策略。打开大 QMT 的“模型研究”界面,进入“新建策略”,选择“新建 Python 策略”。
QMT 模型研究中新建 Python 策略
在模型研究中新建 Python 策略。
  1. 启动策略。在通用模式中加载并启动 CFQUANT_CTYPE_ALL_LOWLAT.py
启动通用模式策略
启动通用模式策略。
  1. 重启 QMT。首次部署或替换脚本后,建议重启 QMT,再重新启动策略。
重启 QMT
重启 QMT 后重新启动策略。
  1. 网页端绑定账号。回到 Web 控制台,在“绑定”页面填写资金账号、QMT 目录,并选择通用模式。
通用模式网页端账号绑定
在网页端完成通用模式账号绑定。
  1. 确认部署成功。网页端能看到对应通道在线,并能读取资产、持仓、委托或行情数据。
通用模式部署成功提示
部署成功后的网页状态提示。
  1. 接口调用测试。进入“接口调试”,执行一次查询或交易测试,确认调用链路可用。
通用模式接口调用测试
使用网页接口进行调用测试。

二、极致模式部署教程

特别提醒 国泰君安和国泰海通的 QMT,需要走【极致模式】。极致模式在 QMT 中加载 CFQUANT_LITE.py
  1. 准备项目目录。下载项目解压,或通过 pip 安装后找到对应安装目录。
  2. 确认入口脚本。极致模式核心运行入口是 CFQUANT_LITE.py,不要求 QMT 侧导入 cfquant 包。
极致模式放置项目目录
传统目录位置;极致模式主要加载自包含入口脚本。
  1. 打开 QMT。完成登录,并安装相应 Python 环境;如果已经安装,可以忽略。
极致模式确认 QMT Python 环境
确认 QMT Python 环境可用。
  1. 新建 Python 策略。打开大 QMT 的“模型研究”界面,进入“新建策略”,选择“新建 Python 策略”。
创建极致模式 Python 策略
创建极致模式 Python 策略。
  1. 启动策略。在 QMT 中加载并启动 CFQUANT_LITE.py
启动极致模式策略
启动极致模式策略。
  1. 重启 QMT。首次部署或更新入口脚本后,重启 QMT 并重新启动策略。
极致模式重启 QMT
重启 QMT 后重新启动极致模式策略。
  1. 网页端绑定账号。在 Web 控制台“绑定”页面选择极致模式,填写账号和 QMT 目录后保存。
极致模式网页端账号绑定
在网页端完成极致模式账号绑定。
  1. 接口调用测试。部署成功后,可以在网页端的“接口调试”中进行调用测试。
极致模式接口调用测试
极致模式部署成功后的接口调用测试。

三、高级模式部署教程

高级模式部署比较复杂 建议先跑通通用模式后再尝试高级模式。高级模式下单延迟约 4ms,这里的延迟是指外部程序到 QMT 内部,不是到交易所;QMT 到交易所的延迟不在本项目控制范围内。
部署规则 高级模式需要两个 QMT。一般将 qmt_scripts/CFQUANT.py 放到第一个 QMT,将 qmt_scripts/CFQUANT_TRADE_LOWLAT.py 放到第二个安装的 QMT。不要在同一个 QMT 里同时运行这两个脚本;国泰海通无法部署高级模式。
  1. 准备两个 QMT。一个作为普通端,一个作为极速交易端。
高级模式准备两个 QMT
高级模式需要准备两个 QMT。
  1. 准备项目安装目录。下载项目解压,或通过 pip 安装后找到安装目录。下面以下载解压项目、国金证券 QMT 为例。
高级模式项目文件准备
准备高级模式所需项目文件。
  1. 填写两个 QMT 目录。在绑定页分别填写普通端和极速交易端的 QMT 安装目录或 bin.x64,系统会自动复制 cfquant 核心包。
高级模式复制 cfquant 目录
历史手动复制位置;新版可由 Web 在保存高级模式账号配置时自动复制。
  1. 打开两个 QMT。登录并安装相应 Python 环境;如果已经安装,可以忽略。
高级模式确认两个 QMT Python 环境
确认两个 QMT 的 Python 环境可用。
  1. 新建 Python 策略。分别在两个 QMT 的“模型研究”界面中新建 Python 策略。
高级模式创建 Python 策略
高级模式创建 Python 策略。
  1. 启动两个策略。第一个 QMT 启动 CFQUANT.py,第二个 QMT 启动 CFQUANT_TRADE_LOWLAT.py
高级模式启动两个策略
启动两个 QMT 里的策略。
  1. 重启 QMT。首次部署或替换脚本后,建议重启两个 QMT,再重新启动策略。
高级模式重启 QMT
重启两个 QMT 后重新启动策略。
  1. 网页端绑定账号。在 Web 控制台“绑定”页面选择高级模式,填写普通端和极速交易端 QMT 目录,并确认自动复制提示无异常。
高级模式网页端账号绑定
在网页端完成高级模式账号绑定。
  1. 确认部署成功。网页端应能看到普通端和极速交易端都在线。
高级模式部署成功提示
高级模式部署成功后的状态提示。
高级模式双端状态
高级模式普通端和极速交易端状态。
  1. 接口调用测试。用网页端“接口调试”执行一次调用测试。
高级模式接口调用测试
高级模式接口调用测试。
  1. 非开盘时间低延迟测试。可用低延迟测试结果作为链路参考,但真实表现会受 QMT、机器负载和券商环境影响。
高级模式非开盘时间低延迟测试结果
非开盘时间下的低延迟测试结果。

四、写在最后

  • 部署相对复杂一些,但延迟确实是做得比较低。
  • 有不清楚的可以通过首页加入项目交流群。
  • 如有远程帮忙部署指导需求,可以添加微信 13696119612,服务费 100 元/次。
  • 如有其他二次开发需求、整体系统架构方案、多账号交易矩阵、低延迟链路需求,敬请联系。

同账号独立市场

适合同一资金账号拆成上海、深圳两个 QMT 交易端的场景。网页保存一个主账号,交易请求按证券后缀自动分流。

*.SH 走上海 QMT 子桥。 *.SZ 走深圳 QMT 子桥。 批量下单 自动拆成 SH、SZ 两组请求,再合并返回。

配置步骤

  1. 在“绑定”页编辑账号,打开“同账号独立市场路由”。
  2. 分别填写上海、深圳 QMT 的 bin.x64 目录。
  3. 保存后确认两个目录生成市场身份文件。
  4. 上海 QMT 加载 _SH.py,深圳 QMT 加载 _SZ.py
  5. 深圳入口需挂在深市标的运行,例如 SZ399001000001.SZ;不要把 _SZ.py 挂在 SH000300 上。

入口文件

模式 上海 深圳
通用 CFQUANT_CTYPE_ALL_LOWLAT_SH.py CFQUANT_CTYPE_ALL_LOWLAT_SZ.py
极致 CFQUANT_LITE_SH.py CFQUANT_LITE_SZ.py
高级交易端 CFQUANT_TRADE_LOWLAT_SH.py CFQUANT_TRADE_LOWLAT_SZ.py

多账号通道

bridge_id 是内部路由标识。普通用户只需要填写账号和 QMT 目录,Web 会按目录复用或分配通道。

场景 建议
单 QMT 单账号 使用默认通道 default
单 QMT 多账号 多个账号可共用同一个 QMT 目录。
多 QMT 多账号 每个账号填写实际登录它的 QMT bin.x64 目录。

排查要点

  • QMT 日志里的 bridge_id 要和网页绑定状态一致。
  • 目录填错时,Web 可能把身份文件写到另一个 QMT。
  • 外部程序优先传 account_id,不要手动写死 bridge_id

账号绑定

账号绑定是运行配置的核心。每个账号保存自己的账户类型、QMT 目录、首选模式、启用状态和共享行情源标记。

字段 说明
资金账号 外部请求按它路由,普通和信用账户要区分账户类型。
QMT 目录 填写对应 QMT 的安装目录或 bin.x64,用于自动复制核心包、身份文件和后续更新。
运行模式 ctypeslitelttx 三选一。
高级模式第二目录 选择高级模式时必须填写另一个 QMT 的安装目录或 bin.x64
共享行情源 多账号时只选一个稳定账号,避免重复订阅全推行情。

保存后怎么验证

  1. 刷新“绑定状态”,看首选模式和实际模式。
  2. 点击“验证”,确认资金和持仓来自正确账号。
  3. 高级模式离线时会自动回退通用模式,状态里会显示回退原因。

交易与回调

交易页适合做实盘前验证:先查资金和持仓,再用小数量测试下单、撤单和回调。

能力 说明
单笔下单 POST /api/order,对应 order_stock
批量下单 POST /api/orders/batch,逐笔提交并合并结果。
撤单 POST /api/cancel,委托状态仍以 QMT 和回调为准。
信用查询 支持信用资产、标的、担保品、合约等只读探测。
回调 GET /api/callbacksWS /ws/callbacks 接收委托、成交和错误事件。

实盘前检查

  • 确认页面当前账号就是要交易的资金账号。
  • 确认下单确认文本、价格、数量和买卖方向。
  • 确认回调页能收到委托或错误事件。
  • 自动化程序不要只看请求返回,还要结合回调或后续查询确认最终状态。

延迟参考

延迟只表示本机程序到 QMT 脚本的链路量级,不代表券商柜台或交易所确认速度。实际结果会受 QMT 版本、券商环境、机器负载和交易时段影响。

推荐读法 普通用户优先看稳定性;低延迟交易再比较极速交易端和 ctypes 交易通道。

当前测试量级

链路 查询量级 下单请求样本 适合场景
通用 ctypes 约 180-260 ms 约 20 ms 部署简单、功能验证、多账号日常使用。
高级普通端 约 250 ms 约 176 ms 查询、行情、账号级回调。
高级极速交易端 约 1-4 ms 约 1 ms 追求更低本机到 QMT 下单链路。

注意事项

  • 撤单请求返回和委托状态变成“已撤”不是同一个时点。
  • 午间、收盘后和首次请求通常比交易时段更不稳定。
  • 需要严肃评估时,用自己的券商、账号、机器和目标时间段重新测。

外部接口

“接口”页就是在线调试台。外部程序接入前,先在这里跑通同一个账号和参数。

curl -H "X-API-Key: your-api-key" ^
  "http://127.0.0.1:8765/api/account?account_id=YOUR_ACCOUNT_ID§ions=asset,positions&force=1"

启用 API Key 后,HTTP 使用 X-API-Key 请求头;WebSocket 使用 apikey 查询参数。

常用接口

接口 用途
GET /api/account资金、持仓、委托、成交。
POST /api/order单笔下单。
POST /api/orders/batch批量下单。
POST /api/cancel撤单。
POST /api/data/full-tick实时 Tick。
POST /api/data/marketK 线和行情数据。
POST /api/data/history/download历史行情下载。
POST /api/data/financial财务数据读取。
GET /api/callbacks读取交易回调。
WS /ws/callbacks实时交易回调。
WS /ws/quotes实时行情事件。

排查问题

按层排查最快:先确认 Web 能访问,再看本地服务,再看 QMT 脚本,最后看账号和权限。

现象 优先检查 处理
网页打不开 Web 端口、启动日志 重启服务,查看 log/cfquant_web_server.stderr.log
QMT 离线 入口脚本、QMT 登录、bridge_id 重启 QMT 入口,确认加载了当前模式对应脚本。
高级模式缺交易端 第二个 QMT 目录、CFQUANT_TRADE_LOWLAT.py 在绑定页补充极速交易端目录并重新保存。
查不到账号数据 账号类型、QMT 登录账号、绑定目录 在绑定页点击验证,确认资金和持仓来自预期账号。
下单失败 确认文本、价格数量、权限、回调错误 先小数量测试,再查看回调页和 QMT 日志。
版本或缓存异常 前端版本、浏览器缓存 重启 Web 后用 Ctrl + F5 强制刷新。

日志