核心功能: 纯粹的数据桥接服务,连接Linux主机与Windows虚拟机中的QMT交易终端
版本: 2.0.1 (修复版) ⭐ 最新更新 2025-01-13
Python: 3.11+
管理工具: UV
已修复的5个关键问题:
- ✅ DELETE /orders/{order_id} - 撤单接口改为RESTful DELETE方法,404错误处理优化
- ✅ GET /sector_stocks - 板块成分股接口正常工作(需URL编码中文板块名)
- ✅ POST /market_data/batch - 批量行情DataFrame处理修复,成功返回数据
- ✅ L2接口 - 添加友好权限提示,不再返回500错误
- ✅ 1m/5m K线 - 分钟级数据自动下载,成功返回数据
测试覆盖率: 100% 核心功能 ✅
部署状态: VM (192.168.122.132:8001) 已更新并运行稳定 ✅
👉 详细修复报告:FIXES_AND_IMPROVEMENTS.md
👉 完整测试报告:API_TEST_COMPLETE.md
本项目是一个关键的数据桥接服务,用于连接您的Linux开发环境和运行在Windows虚拟机中的QMT交易终端。它将策略逻辑与数据获取完全解耦。
核心特性:
- 跨平台支持: 连接Linux(主机)和Windows(虚拟机)
- 通信协议: HTTP(REST API)+ WebSocket(实时事件)
- 数据覆盖: 完整支持
xtdata(行情数据)和xttrader(交易功能) - 纯净简洁: 不包含策略逻辑、回测引擎或因子库,纯粹的数据输入输出
- 稳定性保障: 包含看门狗、健康检查、版本化发布与回滚机制
- 运维友好: 完整的运维SOP与自动化脚本支持
⭐ 核心文档:
- API 参考手册 ⭐ 已更新 - 详细的接口说明和参数列表
- 修复与改进报告 🆕 - 最新修复的5个关键问题详解
- 完整API测试报告 - 24个接口全面测试结果
- 服务端点:
http://<虚拟机IP>:8001/api/v1⚠️ 注意/api/v1前缀 - 稳定性计划: 监控和稳定性指南
- QMT 集成计划: 整体集成路线图
- 测试计划: 全面测试策略
- VM 运维 SOP: (重要) 故障恢复与日常维护手册
- VM 发布与运维: 版本发布与Windows服务管理
- 无头模式验证: 关于QMT运行模式的结论
- 安全指南: 安全最佳实践
- 安全审计报告: 安全审计结果
.
├── src/qmt_bridge/ # 主要桥接服务 (FastAPI)
│ ├── app/ # 应用逻辑
│ ├── main.py # 服务入口点
│ ├── sdk.py # 客户端 SDK
│ └── __init__.py # 包导出
├── scripts/ # 脚本工具
│ ├── windows/ # Windows VM 专用运维脚本
│ ├── debug/ # 调试脚本
│ └── README.md # 脚本说明
├── docs/ # 文档目录
│ ├── guides/ # 操作指南与计划
│ ├── api/ # API文档
│ └── security/ # 安全文档
└── README.md # 本文件
如果您希望在其他 Python 项目中快速接入 QMT 数据能力,可以直接通过 pip 安装本项目的 SDK。
特点:
- 轻量级:仅安装 SDK 必需的依赖 (
aiohttp,pydantic),不会下载 FastAPI、Pandas 等服务端重型依赖。 - 开箱即用:包含完整的类型提示和异步客户端。
# 方式 A:直接从源码安装(推荐,仅安装客户端依赖)
pip install "git+https://github.com/zhangsensen/QMT-bridge.git"
# 方式 B:如果您需要部署服务端(包含所有依赖)
pip install "git+https://github.com/zhangsensen/QMT-bridge.git#egg=qmt-data-bridge[server]"SDK 使用示例:
import asyncio
from qmt_bridge import QMTClient, QMTClientConfig, OrderRequest, Direction
async def main():
# 连接到 QMT Bridge 服务(Windows 虚拟机 IP)
config = QMTClientConfig(host="192.168.122.132", port=8001)
client = QMTClient(config)
# 1. 获取资产信息
assets = await client.get_assets()
print(f"Total Assets: {assets.total_asset}")
# 2. 获取行情数据
kline = await client.get_kline("600000.SH", period="1d")
print(f"Kline Data: {len(kline['bars'])} bars")
# 3. 下单交易 (示例)
try:
order = OrderRequest(
stock_code="600000.SH",
volume=100,
price=0, # 市价单
direction=Direction.BUY
)
res = await client.submit_order(order)
print(f"Order Submitted: {res.order_id}")
except Exception as e:
print(f"Order Failed: {e}")
if __name__ == "__main__":
asyncio.run(main())请参考 VM 发布与运维指南 进行标准化部署。
简要步骤:
- 在 Windows VM 上克隆项目:
git clone https://github.com/zhangsensen/QMT-bridge.git - 安装服务端依赖:
pip install ".[server]" - 配置环境变量:设置
ACCOUNT_ID、MINI_QMT_PATH、TRADING_ENABLED等 - 启动服务:
python -m qmt_bridge.main或通过计划任务/Windows 服务 - 配置看门狗:运行
scripts/windows/watchdog.ps1启动监控
- 本项目涉及真实资金交易,请务必在充分测试后使用。
- 全局交易开关: 在
.env中设置TRADING_ENABLED=False可禁用所有下单接口。 - 请严格遵守 运维SOP 进行操作。