大QMT完整桥接开发
本Skill既提供可生成项目的完整模板,也保留只读行情工具。名称保留bigqmt-bridge-data以兼容现有引用,能力不限于行情。目标是让用户独立获得可配置、可验证的桥接代码,不把用户项目或另一Skill当成隐含运行依赖。
唯一项目基线为qmt_bridge_standard/目录。 服务端、完整客户端、示例与隔离测试均取自该目录;Skill生成器和只读导出工具围绕该目录的接口编写。不得从项目根目录引入旧服务端、网页、条件单、中转表、外部执行器或个人策略。后续维护同样以这个独立目录为准,不能将整个项目作为合并来源。
按用户目标选择入口
| 目标 | 入口及需要读取的材料 |
|---|---|
| 从零生成桥接,或增加服务端/报单/回推 | scripts/generate_bridge.py;先读开发与交付及模板接口 |
| 修改直接下单、账户路由、成交记账 | 再读交易与回推合同,检查模板实际实现与隔离测试 |
| 回推客户端、按请求号查委托和账本 | 生成项目的bridge_client.py、example_events.py;读开发与交付中的事件消费规则 |
| 已有服务,只取行情/导出CSV | scripts/qmt_bridge_client.py;读行情使用及行情接口 |
只读行情脚本保留GET限制。完整账户、下单、回推能力在生成项目的bridge_client.py与服务端中;不要向只读脚本偷偷加入交易副作用。
直接生成独立项目
从当前Skill根目录执行,目标为新建或空目录:
python -B -X utf8 .\scripts\generate_bridge.py --output (Join-Path $env:TEMP 'qmt_bridge_demo')
示例输出到系统临时目录,正式开发时替换为用户项目路径;目标必须位于Skill之外。生成器只写源码和说明,不联网、不启动QMT、不导入执行服务端、不配置账号或数据库、不生成真实订单。存在非空目标就拒绝,保护用户已有代码。生成后按用户需求修改目标副本;不要把用户配置写回Skill模板。
生成目录包含:
qmt_bridge_server.py:大QMT单文件服务端,原生行情、账户、RPC、直接报单、回调及独立SQLite账本。bridge_client.py:完整外部客户端,支持行情、资产/持仓/委托/成交、订单预演/真实提交、账本、长轮询和SSE。example_data.py、example_order.py、example_events.py:取数、默认dry-run下单、独立回推监听示例。check_runtime.py:显式执行的实际环境诊断,区分账户查询、预演、连接和成交验收。test_server.py、test_client.py、validate_source.py:假ContextInfo/临时库/拦截passorder的隔离测试,以及Python3.6与GBK编译验证。- 中文README、部署、API、交易回推、测试说明。附生成文件SHA256清单用于核对副本。
在生成目录执行离线测试及静态验证:
python -B -m unittest discover -s . -p 'test_*.py' -v
python -B .\validate_source.py
生成文件不会依赖Skill路径或原项目;无需复制数据库、日志、外部执行器或私人策略。用户要特定功能时,以模板为起点实现并针对改动测试,不能仅复制文件就宣称定制完成。
开发合同与默认边界
- 原生QMT调用统一通过回调线程RPC执行;init注册run_time,HTTP可访问不等于rpc_ready。保留队列超时、过期任务拒绝及防重入。
- 通用协议产品
qmt_bridge_standard、API v1,默认本机1693,无自动备用端口。先核对实际health产品、能力和心跳,不能把磁盘修改当作已重载。 - 普通/信用账户独立开关;默认关闭、账号为空。外部仅用normal/credit别名。信用订单显式op_type,不猜融资拆单,不做跨策略对冲。
- 新项目真实报单默认关闭,数据库路径由部署者指定。下单示例默认dry-run;真实执行须用户已有相应授权、示例双确认、服务端许可和执行时段校验。代码生成不授予实际下单权限。
- 直接订单不再写中转表。稳定请求号在报单前持久化,同号不得重复下单,参数冲突拒绝;超时/未知状态先查询对账,不换号盲重试。
- 部分成交按内部账户、交易日、成交编号防重;成交插入和剩余数量更新同事务。备注/路由歧义停止自动归账,不猜所属订单。
- 依次区分预演、passorder调用、柜台委托状态、原始成交回调和账本落地。心跳、HTTP200或空事件流均不能证明成交。
- SSE/长轮询缺口需检查stream_id及游标,再用委托、成交和账本对账;查询恢复不冒充原始回调。监听本身绝不发起订单。
- 默认历史fill_data=false、subscribe=false,不自动下载补缓存;缺失/陈旧行情必须报告。
当前模板支持指定价、指定数量直接报单;不包含网页、条件单、策略对冲、私人选股逻辑、撤单和算法单。若用户新增这些需求,应另行核对接口与实现,不能承诺模板已有。
修改、验证与交付
维护来源项目时只核对qmt_bridge_standard目录;定制生成项目时只核对对应副本及用户指定文件,保留用户修改。模板服务端、完整客户端、只读工具属于不同文件,避免同名导入混淆。修改原生API、枚举或生命周期时使用可用的bigqmt-helper核对官方接口文档,不引入其个人策略示例;若该Skill不存在,读取部署者提供的官方文档后实现,生成项目本身不依赖它。
工作区使用UTF-8和中文配置注释;服务端首行GBK声明不能替代真正转码。显式部署转换并往返校验,不能把源文件直接当UTF-8导入执行。真实验收必须沿实际服务路径,不拿假回调充当柜台证据。
交付时列明文件入口、用户配置、已执行测试与仍待柜台验证项;共享前扫描整个生成包,账号、令牌、私人路径和业务记录不得写入Skill。模板修改后需更新assets/template_manifest.json哈希,并测试生成副本。
本Skill自身离线回归:python -B -m unittest discover -s tests -p 'test_*.py' -v。生成模板的交易隔离测试应另行在临时生成目录中执行;这些命令不会连接实际QMT。行为场景见evals/evals.json。
文档:https://docs.sanrenjz.com