一、系统概述
1.1 系统简介
量化投资交易系统是一套轻量级、易部署、可扩展的量化投资解决方案,整合了股票实时监控、量化策略回测、模拟交易引擎三大核心模块。
适用人群:
🎯 个人投资者
科学决策,风险可控
📈 量化爱好者
策略开发,快速验证
💼 投资顾问
绩效展示,客户服务
🏢 小型机构
策略孵化,低成本部署
1.2 核心功能
| 模块 |
功能 |
端口 |
| 股票监控 |
实时行情、价格预警、飞书通知 |
8315 |
| 量化策略 |
5 种经典策略、回测引擎、信号生成 |
8316 |
| 模拟交易 |
虚拟账户、订单系统、盈亏核算 |
8320 |
技术栈:Python 3.11 + Flask + Streamlit | MySQL 9.0 (端口 9001) | 东方财富 API | 飞书机器人
二、系统架构
┌─────────────────────────────────────────────────────────────────┐
│ 量化投资交易系统 │
├─────────────────────────────────────────────────────────────────┤
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ 股票监控 │ │ 量化策略 │ │ 模拟交易 │ │
│ │ (8315) │→ │ (8316) │→ │ (8320) │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ ↓ ↓ ↓ │
│ ┌──────────────────────────────────────────────────┐ │
│ │ MySQL 数据库 (端口 9001) │ │
│ │ stock_monitor | quant_strategies | sim_trading │ │
│ └──────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌──────────────┐ │
│ │ 东方财富 API │ │
│ └──────────────┘ │
└─────────────────────────────────────────────────────────────────┘
三、快速开始
3.1 访问地址
3.2 服务状态检查
ps aux | grep -E "8315|8316|8320" | grep -v grep
mysql -h 127.0.0.1 -P 9001 -u root -pnew_password -e "SHOW DATABASES;"
3.3 使用流程
1️⃣ 股票监控
添加关注股票,设置预警
2️⃣ 量化策略
选择策略,生成交易信号
3️⃣ 模拟交易
创建账户,执行交易,查看绩效
四、股票监控服务(8315 端口)
4.1 功能特性
✅ 实时监控
每 30 秒自动更新股票行情
✅ 价格预警
涨跌幅超过阈值自动告警
✅ 数据记录
所有行情数据保存到数据库
✅ Web 仪表盘
可视化监控界面
✅ 飞书通知
支持飞书机器人推送预警消息
✅ REST API
提供完整的 API 接口
✅ 板块行情
231 个板块数据(行业/概念/地区)
4.2 Web 界面操作
添加监控股票
- 访问 http://124.221.140.157:8315
- 在页面底部"添加股票"区域填写:
- 股票代码: 如
601377
- 股票名称: 如
兴业证券
- 预警阈值: 如
3.0 (表示涨跌超过 3% 时告警)
- 点击"添加"按钮
查看实时行情
- 首页自动显示所有监控股票的:当前价格、涨跌幅、更新时间
- 每 30 秒自动刷新,也可手动点击"刷新"按钮
板块行情功能
cd /home/projects/quant/stock_monitor
python3 download_sectors.py
python3 query_sectors.py top
python3 query_sectors.py bottom
python3 query_sectors.py all
python3 query_sectors.py industry
4.3 运维命令
cd /home/projects/quant/stock_monitor
./start.sh start
./start.sh stop
./start.sh restart
./start.sh status
./start.sh logs
4.4 配置说明
CONFIG = {
'db': {
'host': '127.0.0.1',
'port': 9001,
'user': 'stock_monitor',
'password': 'Stock2026!',
'database': 'stock_monitor'
},
'monitor': {
'interval_seconds': 30,
'stocks': [
{'code': '601377', 'name': '兴业证券', 'alert_threshold': 3.0},
],
'alert_threshold_default': 3.0
},
'feishu': {
'webhook_url': 'https://open.feishu.cn/open-apis/bot/v2/hook/xxx',
'enabled': True
}
}
五、量化策略系统(8316 端口)
5.1 功能特性
5 种经典策略:
| 策略 |
类型 |
难度 |
适用市场 |
| 📊 双均线策略 |
趋势跟踪 |
⭐ |
趋势市 |
| 📉 MACD 策略 |
趋势 + 动量 |
⭐⭐ |
趋势市 |
| 📈 RSI 策略 |
均值回归 |
⭐ |
震荡市 |
| 📊 布林带策略 |
均值回归 |
⭐⭐ |
震荡市 |
| 🎯 多因子策略 |
综合策略 |
⭐⭐⭐⭐ |
所有市场 |
回测引擎 v1.1:
- 交易成本模型:手续费万 2.5、印花税 1‰、滑点 0.1%
- 仓位管理:支持部分仓位、加仓/减仓
- 完整绩效指标:夏普比率、最大回撤、胜率等
5.2 Web 界面操作
访问 http://124.221.140.157:8316
导航菜单:
- 📈 信号看板 (默认页面) - 输入股票代码和名称,刷新信号
- 🧪 策略回测 - 选择策略,设置参数,运行回测
- 📊 绩效分析 - 查看收益曲线,分析风险指标
- ⚙️ 策略配置 - 配置策略参数,管理策略组合
- 💰 模拟交易 - 链接模拟交易引擎,执行策略交易
5.3 策略使用示例
from strategies import DualMAStrategy, Backtester
import pandas as pd
data = pd.read_csv('stock_data.csv', index_col='date')
strategy = DualMAStrategy(short_window=5, long_window=20)
backtester = Backtester(
initial_capital=100000,
commission_rate=0.00025,
tax_rate=0.001,
slippage_rate=0.001
)
result = backtester.run(data, strategy)
print(f"总收益:{result.total_return:.2f}%")
print(f"夏普比率:{result.sharpe_ratio:.2f}")
print(f"最大回撤:{result.max_drawdown:.2f}%")
print(f"胜率:{result.win_rate:.2f}%")
5.4 运维命令
cd /home/projects/quant/quant_strategies
./start_streamlit.sh start
./start_streamlit.sh stop
./start_streamlit.sh status
./start_streamlit.sh logs
六、模拟交易引擎(8320 端口)
6.1 功能特性
✅ 模拟账户体系
虚拟资金账户 (初始资金可配置)
✅ 订单系统
市价单/限价单,完整订单状态管理
✅ 持仓管理
实时持仓,加权平均成本计算
✅ 交易撮合
复用股票监控服务实时行情
✅ 盈亏核算
浮动盈亏 + 已实现盈亏
6.2 费用标准
| 费用类型 |
费率 |
说明 |
| 手续费 |
0.025% (万 2.5) |
最低 5 元 |
| 印花税 |
0.1% (1‰) |
仅卖出收取 |
买入总成本 = 成交价 × 数量 + 手续费
卖出净收入 = 成交价 × 数量 - 手续费 - 印花税
手续费 = max(成交金额 × 0.00025, 5)
6.3 Web 界面操作
访问 http://124.221.140.157:8320
操作流程:
- 创建账户 - 点击"创建账户",设置初始资金 (默认 100 万)
- 买入股票 - 填写股票代码、买卖方向、订单类型、委托数量
- 卖出股票 - 选择持仓,填写卖出数量和价格
- 查询持仓 - 查看持仓数量、成本价、当前价、浮动盈亏
- 查询订单 - 查看订单状态、成交数量、成交价格
6.4 API 使用示例
curl -X POST http://124.221.140.157:8320/api/sim/account/create \
-H "Content-Type: application/json" \
-d '{"initial_capital": 1000000}'
curl -X POST http://124.221.140.157:8320/api/sim/order \
-H "Content-Type: application/json" \
-d '{
"account_id": "abc123",
"stock_code": "601377",
"direction": "buy",
"order_type": "market",
"quantity": 1000
}'
curl "http://124.221.140.157:8320/api/sim/position?account_id=abc123"
6.5 运维命令
cd /home/projects/quant/sim_trading
./start.sh start
./start.sh stop
./start.sh restart
./start.sh status
./start.sh logs
七、API 接口汇总
7.1 股票监控 API (8315)
| 接口 |
方法 |
说明 |
/api/quotes |
GET |
获取最新行情 |
/api/history/<code>?days=7 |
GET |
获取历史数据 |
/api/alerts?limit=50 |
GET |
获取预警记录 |
/api/config |
GET |
获取股票配置 |
/api/config |
POST |
添加/更新配置 |
/api/status |
GET |
获取服务状态 |
/api/monitor/trigger |
POST |
手动触发监控 |
7.2 模拟交易 API (8320)
| 接口 |
方法 |
说明 |
/api/sim/account/create |
POST |
创建账户 |
/api/sim/account/{id} |
GET |
查询账户 |
/api/sim/order |
POST |
下单交易 |
/api/sim/order/{id} |
GET |
查询订单 |
/api/sim/order/{id} |
DELETE |
撤销订单 |
/api/sim/position |
GET |
查询持仓 |
/api/sim/trades |
GET |
查询成交记录 |
/api/sim/status |
GET |
服务状态检查 |
八、常见问题
8.1 服务无法启动
问题: 服务启动失败
解决方法:
netstat -tlnp | grep 8315
./start.sh logs
pip3 list | grep -i flask
8.2 数据库连接失败
问题: 无法连接 MySQL 数据库
解决方法:
systemctl status mysqld
mysql -h 127.0.0.1 -P 9001 -u root -pnew_password
8.3 行情数据不更新
问题: 股票价格长时间不更新
解决方法:
ping 127.0.0.1
curl http://127.0.0.1:8315/api/quotes?code=601377
tail -f /var/log/stock_monitor.log
8.4 飞书通知不发送
问题: 预警触发但未收到飞书消息
解决方法:
- 检查 webhook URL 是否正确
- 检查 enabled 是否为 True
- 手动测试 webhook
8.5 模拟交易无法获取股价
问题: 下单时提示无法获取实时股价
解决方法:
curl http://127.0.0.1:8315/api/status
cd /home/projects/quant/stock_monitor
./start.sh restart
cd /home/projects/quant/sim_trading
./start.sh restart
⚠️ 风险提示
- 本系统仅供学习和研究使用,不构成投资建议
- 模拟交易不能用于实盘,仅供学习测试
- 股市有风险,投资需谨慎
- 历史回测不代表未来表现
- 从小资金开始,风险控制第一