51b2f30748
- 新增 Vue 3 + Vuetify 前端界面 - 新增市场分析模块 (market/) - 更新主服务器和路由 - 更新 MT5 EA 文件 - 添加 .gitignore 排除临时文件
9.5 KiB
9.5 KiB
快速开始指南
1. 安装依赖
pip install fastapi uvicorn uvloop pydantic requests
2. 启动服务
# 在workspace目录下运行
python trading_server.py
输出:
============================================================
启动行情分析交易服务
============================================================
[INFO] 服务将运行在 http://localhost:5858
[INFO] API文档: http://localhost:5858/docs
[INFO] 备用文档: http://localhost:5858/redoc
============================================================
3. 验证服务
方式 A: 运行自动化测试
python test_trading_service.py
方式 B: 手动测试 (curl)
# 健康检查
curl http://localhost:5858/health
# 查看服务状态
curl http://localhost:5858/status
方式 C: 访问API文档
打开浏览器访问: http://localhost:5858/docs
4. 启动前端界面 (Vue)
方式 A: 使用启动脚本 (推荐)
cd frontend
./start_vue.sh
方式 B: 手动启动
cd frontend
npm install # 首次运行需要
npm run dev
方式 C: 直接运行
cd frontend
npx vite --host 0.0.0.0 --port 3001
前端访问地址: http://localhost:3001
前端功能
- 📊 仪表板: 实时服务状态和关键指标
- 📋 交易指令: 发送和管理交易指令 (带智能价格验证)
- 📈 统计数据: 数据可视化和历史分析
- ❤️ 服务状态: 实时监控和健康检查
5. 使用交易工具
方式 A: 交互式命令行工具
python trade_client.py
菜单示例:
======================================================
交易指令发送工具
======================================================
✓ 服务已连接
请选择操作:
1. 发送买入订单
2. 发送卖出订单
3. 查看待执行指令
4. 查看统计数据
5. 清空指令
0. 退出
请输入选项 (0-5):
方式 B: 代码调用
from trade_client import TradeInstructionClient
client = TradeInstructionClient()
# 发送买入订单
result = client.send_buy_order("gold", 0.01, 5000, 5100)
print(result)
# 发送卖出订单
result = client.send_sell_order("eurusd", 0.02, 1.0950, 1.0850)
# 查看待执行指令
trades = client.get_pending_trades()
# 查看统计数据
stats = client.get_statistics(count=5)
方式 C: HTTP请求
说明: 对于
POST /send_trade_instructions接口,若指令中未提供tp或tp<=0,服务端会自动设置为0.005;sl缺失则保留为0.0。价格验证规则:
- 买入指令必须满足
sl < price < tp。- 卖出指令必须满足
tp < price < sl。 若同时指定了 sl 与 tp 但不满足条件,该条指令会被拒绝。
# 发送买入订单
curl -X POST "http://localhost:5858/send_trade_instructions" \
-H "Content-Type: application/json" \
-d '[
{
"symbol": "gold",
"action": "b",
"mount": 0.01,
"sl": 5000,
"tp": 5100
}
]'
# 查询待执行指令
curl "http://localhost:5858/query_pending_trades"
# 查询统计数据
curl "http://localhost:5858/query_statistics?count=5"
6. MT5 EA集成
MT5 EA已经配置好,只需确保:
-
MT5已启用WebRequest
- 在MT5中:工具 -> 选项 -> EA交易
- 勾选"WebRequest用于脚本...", 并添加
localhost:5858到允许列表
-
启动EA
- 在黄金(GOLD)品种的图表上加载
wangxxGold.mq5 - 确保EA显示为 ✓ 启用
- 在黄金(GOLD)品种的图表上加载
-
工作流程
交易员发送指令 → Python服务 → EA获取指令 → 执行交易 EA每分钟→ 统计数据 → Python服务 → 交易员查询统计
7. 常见操作
发送一个黄金买入单
命令行:
# 交互式
python trade_client.py
# 选择 1,然后输入参数
# 或直接 Python
python -c "
from trade_client import TradeInstructionClient
client = TradeInstructionClient()
result = client.send_buy_order('gold', 0.01, 5000, 5100)
print(result)
"
HTTP:
curl -X POST "http://localhost:5858/send_trade_instructions" \
-H "Content-Type: application/json" \
-d '[{"symbol":"gold","action":"b","mount":0.01,"sl":5000,"tp":5100}]'
查看待执行指令
python trade_client.py
# 选择 3
或:
curl "http://localhost:5858/query_pending_trades"
查看统计数据
python trade_client.py
# 选择 4
或:
curl "http://localhost:5858/query_statistics?count=10"
清空指令
# 清空所有
curl -X DELETE "http://localhost:5858/clear_trades"
# 只清空黄金指令
curl -X DELETE "http://localhost:5858/clear_trades?symbol=gold"
7. 实时监控
查看服务状态
watch -n 1 'curl -s http://localhost:5858/status | python -m json.tool'
输出示例:
{
"status": "running",
"pending_trades": {
"GOLD": 2,
"EURUSD": 1
},
"total_pending": 3,
"statistics_records": 8,
"timestamp": "2026-03-04T14:35:22.123456"
}
8. 故障排查
问题 1: 连接被拒绝
症状: Connection refused on localhost:5858
解决:
# 检查服务是否运行
ps aux | grep trading_server.py
# 检查端口占用
lsof -i :5858
# 重启服务
pkill -f trading_server
python trading_server.py
问题 2: 指令没有执行
检查步骤:
- 确认指令已发送:
curl http://localhost:5858/query_pending_trades - 检查EA日志: MT5 → 日志标签
- 确认EA已启用: 图表角上有绿色 ✓ 标记
- 检查WebRequest权限已启用
问题 3: 统计数据为空
原因: EA还没有发送统计数据
验证:
- 等待至少1分钟(EA每分钟发送一次)
- 检查EA是否在运行
- 查看EA的日志输出
9. 扩展集成
与外部系统集成
# 与量化分析系统集成
from trade_client import TradeInstructionClient
def your_analysis_function():
# 您的分析逻辑
buy_signal_gold = True
if buy_signal_gold:
client = TradeInstructionClient()
client.send_buy_order("gold", 0.01, 5000, 5100)
定时任务
import schedule
import time
from trade_client import TradeInstructionClient
client = TradeInstructionClient()
def check_and_trade():
# 定期检查并下单
stats = client.get_statistics(1)
# 您的逻辑...
schedule.every(5).minutes.do(check_and_trade)
while True:
schedule.run_pending()
time.sleep(1)
11. Vue 前端详细说明
🎯 技术栈
- Vue 3 + Composition API
- Vuetify 3 (Material Design)
- Vue Router 4
- Axios (HTTP 客户端)
- ECharts (数据可视化)
- Vite (构建工具)
🌟 前端特性
- ✅ 现代化UI: Material Design 设计规范
- ✅ 响应式布局: 支持桌面和移动设备
- ✅ 实时更新: 自动刷新数据和状态
- ✅ 智能验证: 交易指令价格自动验证
- ✅ 数据可视化: ECharts 图表展示
- ✅ 中文界面: 完全本地化
🎨 界面功能
仪表板 (Dashboard)
- 📊 服务状态指示器
- 📈 关键指标卡片 (待执行指令、统计记录、活跃品种)
- 🔄 自动数据刷新 (30秒间隔)
交易指令 (Trade Orders)
- ➕ 交易指令表单 (品种、方向、手数、价格、止损/止盈)
- ✅ 智能价格验证:
- 买入:
止损 < 执行价格 < 止盈 - 卖出:
止盈 < 执行价格 < 止损
- 买入:
- 📋 待执行指令表格
- 🗑️ 一键清空所有指令
统计数据 (Statistics)
- 📊 历史数据表格 (时间、品种、价格、类型)
- 📈 价格趋势线图 (ECharts)
- 📋 汇总统计 (总记录数、平均价格、最高/最低价)
服务状态 (Status)
- ❤️ 健康检查状态
- 📊 系统指标 (运行时间、内存使用等)
- 🔄 连接状态监控 (后端、MT5)
- ⏰ 实时更新 (5秒间隔)
🚀 快速体验
# 启动完整系统
# 终端1: 启动后端
python main.py
# 终端2: 启动前端
cd frontend && ./start_vue.sh
# 访问前端: http://localhost:3001
🔧 开发和部署
开发环境
cd frontend
npm install
npm run dev # 开发服务器
生产构建
cd frontend
npm run build # 构建生产版本
npm run preview # 预览构建结果
项目结构
frontend/
├── src/
│ ├── views/ # 页面组件
│ ├── api/ # API 接口
│ ├── router/ # 路由配置
│ └── plugins/ # Vuetify 配置
├── public/ # 静态资源
└── README.md # 详细文档
12. 下一步
- 详细API文档: README.md
- 自动化测试:
python test_trading_service.py - API交互式文档: http://localhost:5858/docs
- 性能监控:
curl http://localhost:5858/status
13. 后续优化
虽然当前HTTP性能足够,但可考虑:
-
增加日志持久化
- 添加SQLite保存历史数据
- 支持离线分析
-
添加WebSocket支持
- 实时推送行情变化
- 实时订单状态更新
-
前端管理界面
- Web Dashboard
- 实时图表展示
- 一键下单功能
需要帮助?
查看完整文档:
- 主项目文档
- Vue 前端文档
- API交互式文档: http://localhost:8000/docs
- 前端界面: http://localhost:3001
🎉 祝您使用愉快!
现在您拥有了完整的量化交易系统:
- ⚡ 高性能 Python 后端
- 🎨 现代化 Vue 前端界面
- 🤖 智能 MT5 EA 集成
开始您的量化交易之旅吧! 🚀