# miniQMT
**Repository Path**: lulu1113/miniQMT
## Basic Information
- **Project Name**: miniQMT
- **Description**: miniQMT for Arthur
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-01-12
- **Last Updated**: 2026-01-18
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# miniQMT - 无人值守量化交易系统
[](https://www.python.org/downloads/)
[](LICENSE)
[](https://dict.thinktrader.net)
**基于迅投QMT API的智能量化交易系统**
[功能特性](#功能特性) • [快速开始](#快速开始) • [系统架构](#系统架构) • [文档](#文档) • [常见问题](#常见问题)
---
## 📖 项目简介
miniQMT 是一个专为A股市场设计的**无人值守量化交易系统**,集成了自动化交易策略执行、智能持仓管理、动态止盈止损等功能。系统采用双层存储架构和线程自愈机制,可7x24小时稳定运行。
### 🎯 核心优势
- **🛡️ 无人值守**: 线程健康监控与自动重启,系统崩溃自动恢复
- **🔄 双层存储**: 内存数据库 + SQLite持久化,高性能与数据安全兼顾
- **🎯 信号分离**: 信号检测与执行分离,策略逻辑清晰可控
- **📈 智能止盈止损**: 动态止盈策略,最大化收益同时控制风险
- **🌐 Web监控**: 实时监控界面,随时掌握系统运行状态
- **🧪 模拟交易**: 完整的模拟交易功能,策略验证零风险
---
## ✨ 功能特性
### 交易功能
- ✅ **自动交易执行**: 支持模拟交易和实盘交易
- ✅ **动态止盈止损**: 首次止盈 + 动态止盈双重保护
- ✅ **网格交易**: 可选的网格交易策略
- ✅ **信号验证机制**: 防止重复执行,确保交易安全
### 系统功能
- ✅ **线程健康监控**: 自动检测线程崩溃并重启
- ✅ **优雅关闭**: 有序关闭各模块,避免数据丢失
- ✅ **超时保护**: API调用超时保护,防止线程阻塞
- ✅ **非交易时段优化**: 自动降低CPU占用(30% → <2%)
### 监控功能
- ✅ **Web实时监控**: 账户信息、持仓列表实时更新
- ✅ **SSE推送**: Server-Sent Events实时数据推送
- ✅ **系统诊断**: 内置多个诊断工具,快速定位问题
---
## 🚀 快速开始
### 环境要求
- **Python**: 3.8+ (推荐 3.9)
- **操作系统**: Windows (QMT仅支持Windows)
- **QMT客户端**: 实盘交易需要安装并登录QMT
### 安装步骤
1. **克隆项目**
```bash
git clone https://github.com/your-repo/miniQMT.git
cd miniQMT
```
2. **安装依赖**
```bash
pip install pandas numpy flask flask-cors xtquant mootdx
```
3. **配置账户** (创建 `account_config.json`)
```json
{
"account_id": "您的交易账号",
"account_type": "STOCK",
"qmt_path": "C:/光大证券金阳光QMT实盘/userdata_mini"
}
```
4. **配置股票池** (可选,创建 `stock_pool.json`)
```json
[
"000001.SZ",
"600036.SH",
"000333.SZ"
]
```
5. **启动系统**
```bash
python main.py
```
6. **访问Web界面**
```
http://localhost:5000
```
### ⚠️ 首次运行建议
**强烈建议先使用模拟模式测试**:
1. 确认 `config.py` 中 `ENABLE_SIMULATION_MODE = True`
2. 运行无人值守功能测试: `python test/test_unattended_operation.py`
3. 观察系统运行稳定后,再切换到实盘模式
---
## 🏗️ 系统架构
### 核心设计
```
┌─────────────────────────────────────────────────────────┐
│ 线程监控器 (60秒) │
│ 检测线程崩溃 → 自动重启 │
└─────────────────────────────────────────────────────────┘
↓
┌──────────────┬──────────────┬──────────────┬────────────┐
│ 数据更新线程 │ 持仓监控线程 │ 策略执行线程 │ Web服务 │
│ (60秒) │ (3秒) │ (5秒) │ (持续) │
└──────────────┴──────────────┴──────────────┴────────────┘
↓ ↓ ↓ ↓
┌─────────────────────────────────────────────────────────┐
│ 双层存储架构 │
│ 内存数据库 (高频更新) ←→ SQLite (持久化) │
└─────────────────────────────────────────────────────────┘
```
### 数据流
**实盘模式**:
```
QMT实盘账户 → 持仓同步(10秒) → 内存数据库 → 定时同步(15秒) → SQLite
```
**模拟模式**:
```
Web界面 → 交易执行器 → 内存数据库 (跳过QMT接口)
```
详细架构说明请查看 [ARCHITECTURE.md](ARCHITECTURE.md)
---
## 📊 核心配置
### 功能开关 (config.py)
```python
# 交易模式
ENABLE_SIMULATION_MODE = True # True=模拟, False=实盘 ⚠️
ENABLE_AUTO_TRADING = False # 自动交易执行开关 ⚠️
# 策略功能
ENABLE_DYNAMIC_STOP_PROFIT = True # 止盈止损功能
ENABLE_GRID_TRADING = False # 网格交易功能
# 系统功能
ENABLE_THREAD_MONITOR = True # 线程健康监控(无人值守必需)⭐
DEBUG = False # 调试模式
```
### 止盈止损配置
```python
# 止损
STOP_LOSS_RATIO = -0.075 # 成本价下跌7.5%触发止损
# 首次止盈
INITIAL_TAKE_PROFIT_RATIO = 0.06 # 盈利6%触发
INITIAL_TAKE_PROFIT_RATIO_PERCENTAGE = 0.6 # 卖出60%
# 动态止盈
DYNAMIC_TAKE_PROFIT = [
(0.05, 0.96), # 最高浮盈5%时,止盈位=最高价*96%
(0.10, 0.93), # 最高浮盈10%时,止盈位=最高价*93%
(0.15, 0.90),
(0.20, 0.87),
(0.30, 0.85),
]
```
---
## 📚 文档
- **[CLAUDE.md](CLAUDE.md)** - 开发指南(面向AI助手和开发者)
- **[ARCHITECTURE.md](ARCHITECTURE.md)** - 详细架构说明
- **[docs/quick_start_unattended.md](docs/quick_start_unattended.md)** - 无人值守运行指南
- **[docs/unattended_operation_summary.md](docs/unattended_operation_summary.md)** - 线程监控详解
---
## 🧪 测试
### 推荐测试顺序
```bash
# 1. 无人值守功能测试(验证线程自愈机制)
python test/test_unattended_operation.py
# 2. 系统综合测试
python test/comprehensive_test.py
# 3. 止盈止损测试
python test/test_stop_loss_buy_param.py
# 4. Web数据刷新测试
python test/test_web_data_refresh.py
```
### 系统诊断工具
```bash
# 检查系统状态
python test/check_system_status.py
# 诊断QMT连接
python test/diagnose_qmt_connection.py
# 诊断系统问题
python test/diagnose_system_issues.py
```
---
## ❓ 常见问题
### Q1: 如何切换到实盘交易?
**A**: 修改 `config.py`:
```python
ENABLE_SIMULATION_MODE = False # 切换到实盘
ENABLE_AUTO_TRADING = True # 启用自动交易
```
**⚠️ 注意**: 确保QMT客户端已启动并登录!
### Q2: 系统崩溃后会自动恢复吗?
**A**: 会的! 系统内置线程健康监控,每60秒检查一次线程状态,检测到崩溃立即重启。详见 [无人值守运行文档](docs/quick_start_unattended.md)
### Q3: 如何查看系统运行日志?
**A**: 日志文件位于 `logs/qmt_trading.log`,可以使用:
```bash
# 实时查看日志
tail -f logs/qmt_trading.log
# 查看最近100行
tail -n 100 logs/qmt_trading.log
```
### Q4: 模拟交易和实盘交易有什么区别?
**A**:
- **模拟交易**: 不调用QMT API,使用虚拟资金,无交易时间限制
- **实盘交易**: 通过QMT API执行真实订单,使用实际账户资金
### Q5: 如何添加新的股票到股票池?
**A**: 编辑 `stock_pool.json` 文件,添加股票代码(格式: `股票代码.交易所`):
```json
[
"000001.SZ", // 深圳交易所
"600036.SH", // 上海交易所
"新增股票.SZ"
]
```
更多问题请查看 [CLAUDE.md - 常见问题](CLAUDE.md#常见问题与解决方案)
---
## 🛡️ 风险提示
**⚠️ 重要提醒**:
1. **量化交易有风险,投资需谨慎**
2. **本系统仅供学习研究使用,不构成投资建议**
3. **实盘交易前请充分测试策略,确保理解系统运行逻辑**
4. **建议设置合理的止损比例,控制单日最大亏损**
5. **定期检查系统运行状态,关注异常日志**
---
## 📄 许可证
本项目采用 MIT 许可证 - 详见 [LICENSE](LICENSE) 文件
---
## 🤝 贡献
欢迎提交 Issue 和 Pull Request!
---
## 📧 联系方式
如有问题或建议,请通过以下方式联系:
- 提交 [GitHub Issue](https://github.com/your-repo/miniQMT/issues)
- 邮箱: your-email@example.com
---
**⭐ 如果这个项目对你有帮助,请给个Star支持一下! ⭐**
Made with ❤️ by miniQMT Team