Skip to content

lotey/lite-qmt-executor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

lite-qmt-executor

基于 QMT(miniQMT)的 A 股量化交易执行框架。框架搭骨架,策略你来写。

License: MIT

它能干什么

  • 信号接入:HTTP API + WebSocket 双通道,断线自动重连 + 心跳保活
  • 队列调度:消费者池并行处理新信号,ticker 周期推进存量任务
  • QMT 适配:封装 xtquant 的下单/撤单/查询/行情,统一异常处理 + 自动重连
  • 通知抽象:Notifier 接口,钉钉/企微/飞书/邮件自己实现一个 push() 就接上
  • 策略插件化:继承 BuyStrategy / SellStrategy,注册到引擎即可
  • 开箱即用:自带一套功能完整的默认策略,改 config 就能跑实盘

默认策略

策略 文件 说明
分档累积买入 default/accumulate_buy.py 按涨幅分流:抢买/首笔保底+回撤加仓/等回落,带撤单重挂
高开止盈 default/open_high_sell.py 9:30:02 并发池抢卖高开票
分档盈利止盈 default/profit_tier_sell.py 涨幅达标分档卖出,实时查持仓防超卖

快速开始

环境要求

  • Windows(QMT 只支持 Windows)
  • Python 3.8+(推荐用 QMT 自带的 Python)
  • miniQMT 已登录运行
  • xtquant(QMT 自带 SDK,无需 pip 安装)

安装

git clone https://github.com/lotey/lite-qmt-executor.git
cd lite-qmt-executor
pip install -r requirements.txt

配置

编辑 app/config.py

# 必填
QMT_PATH = r'D:\你的券商QMT\userdata_mini'
ACCOUNT_ID = '你的资金账号'

# 可选:WebSocket 信号网关(不需要就保持 None)
GATEWAY_HOST = None
GATEWAY_PORT = None
GATEWAY_TOKEN = None

启动

python main.py

或双击 qmt-run.bat

测试信号

curl -X POST http://localhost:30015/api/buy \
     -H "Content-Type: application/json" \
     -d "{\"code\":\"sz000001\"}"

架构

              外部信号
     ws_server ──┐    ┌── http_server
                  │    │
                  ▼    ▼
      ┌─────────────────────────────────┐
      │        TradingEngine            │
      │                                 │
      │  ┌────────┐    ┌──────────┐     │
      │  │ Broker │    │ Notifier │     │
      │  └────────┘    └──────────┘     │
      │                                 │
      │  ┌───────────────────────────┐  │
      │  │ BuyEngine(调度骨架)     │  │
      │  │  signal_queue → 消费者池  │  │
      │  │  ticker 周期扫存量        │  │
      │  └──────────┬────────────────┘  │
      │             ▼                   │
      │     BuyStrategy(你写)         │
      │                                 │
      │  ┌───────────────────────────┐  │
      │  │ SellEngine(调度骨架)    │  │
      │  └──────────┬────────────────┘  │
      │             ▼                   │
      │     SellStrategy(你写)        │
      └─────────────────────────────────┘

并发模型

  • 新信号首评估:并行(8 worker 线程池)
  • 存量任务推进:串行(5 秒一轮 ticker)
  • 卖出策略:各自独立线程,互不阻塞

项目结构

lite-qmt-executor/
├── main.py                     # 装配入口(改这里注册你的策略)
├── qmt-run.bat                 # Windows 启动脚本
├── requirements.txt
├── app/
│   ├── config.py               # 所有配置项
│   ├── core/
│   │   ├── broker.py           # QMT 券商适配层
│   │   ├── notifier.py         # 通知器接口 + 默认实现
│   │   └── trading_engine.py   # 引擎装配
│   ├── engine/
│   │   ├── buy_engine.py       # 买入调度骨架
│   │   └── sell_engine.py      # 卖出调度骨架
│   ├── server/
│   │   ├── http_server.py      # Flask HTTP API
│   │   └── ws_server.py        # WebSocket 客户端
│   └── strategy/
│       ├── buy_strategy.py     # BuyStrategy 抽象类
│       ├── sell_strategy.py    # SellStrategy 抽象类
│       └── default/            # 默认策略实现
│           ├── accumulate_buy.py
│           ├── open_high_sell.py
│           └── profit_tier_sell.py
└── doc/
    ├── 定制开发指南.md          # ⭐ 二开必读
    └── qmt实盘调试文档.md

HTTP API

方法 路径 说明
POST /api/buy 买入信号入队 {code, sentCode, strategy}
GET /api/tasks 查当前买入任务状态
POST /api/sell 手动卖出 {code, volume, price}
GET /api/positions 查持仓
GET /api/orders 查委托
GET /api/account 查账户
POST /api/cancel/<order_id> 撤单
GET /health 健康检查

定制开发

按改动量从小到大:

档位 做什么 难度
不改 默认策略 + 改 config 直接跑
调参数 config.py 里的阈值/金额/档位
换通知 实现 Notifier.push() 接钉钉/企微 ⭐⭐
写策略 继承 BuyStrategy/SellStrategy ⭐⭐⭐

详见 doc/定制开发指南.md,含完整代码模板和常见问题。


WebSocket 信号网关

配置 GATEWAY_HOST / GATEWAY_PORT / GATEWAY_TOKEN 三个都填了才启动 WebSocket 客户端。

重连策略:

  • 从未连上过:连续失败 3 次放弃(配置错误早发现)
  • 曾经连上过:永不放弃,持续重连(网络抖动自动恢复)

不配置 WebSocket 也能用——HTTP API 始终可用,curl 发信号一样跑。


注意事项

  • 买入默认关闭BUY_ENABLED = False,调试确认无误后改为 True 再接实盘信号
  • xtquant 不要 pip 安装。用 QMT 客户端自带的 SDK,broker.py 会自动加载
  • 首次启动如果 QMT 连接失败,会自动重试一次(间隔 QMT_RECONNECT_INTERVAL 秒)
  • 非交易时段(9:00 前 / 15:00 后)信号自动丢弃,策略不会空转
  • 单实例锁:同一台机器不能重复启动,第二个进程会直接退出

⚠️ 免责声明

本项目仅供学习和技术研究使用,不构成任何投资建议

  • 股票交易存在风险,使用本软件进行实盘交易造成的任何损失,由使用者自行承担
  • 作者不对代码的正确性、稳定性、实时性做任何保证
  • 使用前请充分了解 A 股交易规则、QMT 接口特性,并在小资金下充分测试
  • 本项目与任何券商、交易所无关,不提供任何金融服务
  • 请遵守所在地区的法律法规,合规使用

使用本软件即表示你已理解并接受以上风险。


License

MIT

About

轻量级 A 股量化交易执行框架,基于 miniQMT/xtquant,策略插件化,开箱即用

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors