Skip to content

zhangsensen/QMT-bridge

Repository files navigation

QMT 数据桥接服务 (Linux-VM)

核心功能: 纯粹的数据桥接服务,连接Linux主机与Windows虚拟机中的QMT交易终端
版本: 2.0.1 (修复版) ⭐ 最新更新 2025-01-13
Python: 3.11+
管理工具: UV


🎉 最近更新 (2025-01-13)

已修复的5个关键问题:

  1. DELETE /orders/{order_id} - 撤单接口改为RESTful DELETE方法,404错误处理优化
  2. GET /sector_stocks - 板块成分股接口正常工作(需URL编码中文板块名)
  3. POST /market_data/batch - 批量行情DataFrame处理修复,成功返回数据
  4. L2接口 - 添加友好权限提示,不再返回500错误
  5. 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与自动化脚本支持

📚 文档说明

⭐ 核心文档:

运维与集成指南


📂 项目结构

.
├── 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               # 本文件

🚀 快速开始

📦 客户端 SDK 安装(用于其他业务项目)

如果您希望在其他 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())

Windows 虚拟机部署(服务端)

请参考 VM 发布与运维指南 进行标准化部署。

简要步骤:

  1. 在 Windows VM 上克隆项目:git clone https://github.com/zhangsensen/QMT-bridge.git
  2. 安装服务端依赖:pip install ".[server]"
  3. 配置环境变量:设置 ACCOUNT_IDMINI_QMT_PATHTRADING_ENABLED
  4. 启动服务:python -m qmt_bridge.main 或通过计划任务/Windows 服务
  5. 配置看门狗:运行 scripts/windows/watchdog.ps1 启动监控

⚠️ 风险提示与免责声明

  • 本项目涉及真实资金交易,请务必在充分测试后使用。
  • 全局交易开关: 在 .env 中设置 TRADING_ENABLED=False 可禁用所有下单接口。
  • 请严格遵守 运维SOP 进行操作。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors