Skip to content

Latest commit

 

History

History
128 lines (115 loc) · 10.9 KB

File metadata and controls

128 lines (115 loc) · 10.9 KB

QMT server(远程服务端)

在 Windows 主机运行 bullet-trade server,为本地/远程策略提供行情与交易。核心关注:安全、端口放行、账户配置。

架构总览

┌─────────────────────────────────────────────────────────────────────────────┐
│                          部署架构图                                           │
└─────────────────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────────────────┐
│  Windows 主机(券商软件所在机器)                                               │
│                                                                             │
│  ┌─────────────────────────┐    ┌─────────────────────────────────────────┐ │
│  │   miniQMT 交易端         │    │   bullet-trade server                   │ │
│  │                         │    │                                         │ │
│  │  ┌─────────────────┐    │    │  ┌─────────────┐   ┌─────────────────┐  │ │
│  │  │  xtquant SDK    │◀───┼────┼──│ QmtData     │   │ QmtBroker       │  │ │
│  │  │  (行情+交易)     │    │    │  │ Adapter     │   │ Adapter         │  │ │
│  │  └─────────────────┘    │    │  │ (行情服务)   │   │ (交易服务)        │  │ │
│  │                         │    │  └─────────────┘   └─────────────────┘  │ │
│  │  ┌─────────────────┐    │    │           │               │             │ │
│  │  │ userdata_mini   │    │    │           └───────┬───────┘             │ │
│  │  │ (数据目录)       │    │    │                   │                     │ │
│  │  └─────────────────┘    │    │  ┌────────────────▼──────────────────┐  │ │
│  │                         │    │  │     TCP Server (:58620)           │  │ │
│  └─────────────────────────┘    │  │     Token 鉴权 + 心跳保活           │  │ │
│                                 │  └────────────────┬──────────────────┘  │ │
│                                 └───────────────────┼─────────────────────┘ │
└─────────────────────────────────────────────────────┼───────────────────────┘
                                                      │
                      ┌───────────────────────────────┼───────────────────────┐
                      │            网络(局域网/公网)  │                       │
                      │                               │                      │
    ┌─────────────────▼───────────────┐   ┌──────────▼────────────────────┐  │
    │                                 │   │                               │  │
    │  场景 A: 本地/云端策略             │   │  场景 B: 聚宽模拟盘             │  │
    │  (macOS/Linux/Windows)          │   │  (joinquant.com)              │  │
    │                                 │   │                               │  │
    │  ┌───────────────────────────┐  │   │  ┌─────────────────────────┐  │  │
    │  │ bullet-trade live         │  │   │  │ 聚宽策略                  │  │  │
    │  │ --broker qmt-remote       │  │   │  │ (模拟盘/研究环境)          │  │  │
    │  │                           │  │   │  │                         │  │  │
    │  │  ┌─────────────────────┐  │  │   │  │  ┌───────────────────┐  │  │  │
    │  │  │ RemoteQmtBroker     │  │  │   │  │  │ helper.py         │  │  │  │
    │  │  │ RemoteQmtProvider   │  │  │   │  │  │ bt.order()        │  │  │  │
    │  │  │                     │  │  │   │  │  │ bt.get_positions()│  │  │  │
    │  │  │ TCP ────────────────┼──┼──┼───┼──┼──┼─► TCP             │  │  │  │
    │  │  └─────────────────────┘  │  │   │  │  └───────────────────┘  │  │  │
    │  │                           │  │   │  │                         │  │  │
    │  │  .env:                    │  │   │  │  configure():           │  │  │
    │  │   QMT_SERVER_HOST=...     │  │   │  │   host, port, token     │  │  │
    │  │   QMT_SERVER_PORT=58620   │  │   │  │   account_key           │  │  │
    │  │   QMT_SERVER_TOKEN=secret │  │   │  │                         │  │  │
    │  └───────────────────────────┘  │   │  └─────────────────────────┘  │  │
    │                                 │   │                               │  │
    └─────────────────────────────────┘   └───────────────────────────────┘  │
                      │                                                      │
                      └──────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────────────────────┐
│  数据 & 交易请求流向                                                           │
│                                                                             │
│  客户端                          服务端                     券商               │
│                                                                             │
│  order('000001', 100)                                                       │
│        │                                                                    │
│        ├─► broker.buy ─────────► QmtBrokerAdapter ─────────► xtquant.order  │
│        │                               │                         │          │
│        │                               │◀─────── 委托回报 ────────┤          │
│        │◀────── order_id ◀─────────────┘                         │          │
│                                                                  ▼          │
│  get_price('000001')                                         miniQMT       │
│        │                                                         │          │
│        ├─► data.price ─────────► QmtDataAdapter ◀──── xtdata ────┘          │
│        │                               │                                    │
│        │◀────── DataFrame ◀────────────┘                                    │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

最快启动

python -m venv .venv && .venv\Scripts\activate
pip install bullet-trade

bullet-trade server --listen 0.0.0.0 --port 58620 --token secret ^
  --enable-data --enable-broker ^
  --accounts main=123456:stock ^
  --data-path "C:\国金QMT交易端\userdata_mini"

关键参数:

  • --token:必配,防止未授权访问。
  • --accounts别名=账号:类型,可逗号分隔多账户。
  • --data-path:xtquant 数据目录,保证对应账户已登录。

首次启动必看

Windows 防火墙放行提示: server-firewall

服务端日志与下单示例: joinquant-server-qmt

客户端连接(qmt-remote)

本地/云端策略 .env 示例:

DEFAULT_BROKER=qmt-remote
QMT_SERVER_HOST=10.0.0.8
QMT_SERVER_PORT=58620
QMT_SERVER_TOKEN=secret
QMT_SERVER_ACCOUNT_KEY=main   # 多账户时指定别名

运行:

bullet-trade live strategies/demo_strategy.py --broker qmt-remote

聚宽远程实盘

常见问题

  • 端口/防火墙:确保监听端口放行,跨网段配置安全组。
  • 鉴权失败:token 不一致;必要时加 --allowlist 或 TLS。
  • 行情缺失:确认 QMT 已登录且有行情权限。
  • 多账户:--accounts a=123456:stock,b=654321:stock,客户端 QMT_SERVER_ACCOUNT_KEY=a 选择账户。
  • 撤单等待:broker.cancel_order 默认按 TRADE_MAX_WAIT_TIME 轮询订单状态,返回 timed_out=true 表示仍未进入终态,可再调用 broker.order_status 确认