Files

221 lines
5.0 KiB
Markdown
Raw Permalink Normal View History

# MT5 WebRequest 配置检查清单
## ⚠️ 重要提示
EA无法发送HTTP请求的最常见原因是**WebRequest权限未正确配置**。请按照以下步骤逐一检查。
## ✅ 配置步骤
### 1. 启用WebRequest权限
在MT5终端中:
1. 打开 **工具(Tools)****选项(Options)** (或按 `Ctrl+O`)
2. 切换到 **EA交易(Expert Advisors)** 标签
3. 勾选以下选项:
-**允许自动交易(Allow Automated Trading)**
-**允许WebRequest用于脚本...(Allow WebRequest for scripts and EA)**
### 2. 添加URL到允许列表
在同一页面:
1. 找到 **WebRequest允许的URL列表** 区域
2. 点击 **添加(Add)** 按钮
3. 输入以下URL(根据你的后端配置):
```
http://localhost:8000
```
或如果使用trading_server.py
```
http://localhost:5858
```
**注意**:
- 必须包含 `http://` 前缀
- 不要在末尾加 `/`
- 如果同时使用两个端口,两个都要添加
### 3. 重启EA
配置完成后:
1. 在图表上右键点击EA → **移除(Remove)**
2. 重新从导航器拖拽EA到图表
3. 确保EA显示为 ✅ **启用(Enabled)** 状态
## 🔍 验证配置
### 方法1: 检查MT5日志
1. 打开 **终端(Terminal)****日志(Journal)** 标签
2. 查找以下消息:
-`Expert initialized successfully`
-`Statistics sent successfully` (每分钟发送)
-`WebRequest is disabled!` → WebRequest未启用
-`Failed to send statistics` → URL未添加或服务未启动
### 方法2: 检查后端日志
启动后端服务后,应该看到:
```bash
# 启动后端
python main.py
# 观察日志,应该看到EA的请求:
# GET /get_trades?symbol=GOLD&price=2035.50
# POST /send_statistics
```
### 方法3: 使用测试工具
运行自动化测试验证服务:
```bash
python test_trading_service.py
```
## 🐛 常见问题排查
### 问题1: WebRequest is disabled
**症状**:
```
WebRequest is disabled! Please enable WebRequest in MT5 Options -> Expert Advisors
```
**解决方案**:
- 按照上述步骤1启用WebRequest权限
- 重启MT5
### 问题2: Connection refused
**症状**:
```
Failed to send statistics. Response code: 404
Failed to send statistics. Response code: 500
```
**解决方案**:
1. 确认后端服务正在运行
```bash
# 检查服务是否启动
lsof -i :8000 # 或 lsof -i :5858
# 如果没有运行,启动服务
python main.py # 端口8000
# 或
python trading_server.py # 端口5858
```
2. 确认端口匹配
- EA配置: `wangxxGold.mq5` 第22行
- 后端配置: `main.py` 第67行 (8000) 或 `trading_server.py` 第494行 (5858)
### 问题3: URL not in allowed list
**症状**:
```
Failed to send statistics. Response code: -1
```
**解决方案**:
- 确保已添加 `http://localhost:8000` 到允许列表
- 不要添加 `https://`(除非你的服务器配置了HTTPS
- 重启EA
### 问题4: Timeout
**症状**:
```
Failed to send statistics. Response code: 408
```
**解决方案**:
- 检查后端服务响应时间
- 检查网络连接
- 尝试在浏览器访问 `http://localhost:8000/health` 测试连接
## 📋 快速检查清单
```
□ MT5选项中启用"允许自动交易"
□ MT5选项中启用"允许WebRequest"
□ 添加 http://localhost:8000 到允许列表
□ 后端服务已启动 (python main.py)
□ EA已重启并启用
□ MT5日志显示"Expert initialized successfully"
□ 后端日志显示EA的HTTP请求
```
## 🧪 测试流程
### 完整测试流程:
```bash
# 终端1: 启动后端
python main.py
# 终端2: 测试后端
curl http://localhost:8000/health
# 应该返回: {"status": "healthy", ...}
# MT5终端:
# 1. 配置WebRequest权限
# 2. 加载EA到图表
# 3. 观察MT5日志和后端日志
# 终端3: 发送测试交易指令
python trade_client.py
# 选择1: 发送买入订单
# 检查EA是否执行交易
```
## 💡 调试技巧
### 启用详细日志
在EA代码中,所有HTTP请求都有详细的日志输出。如果你看不到任何WebRequest相关的日志:
1. **检查EA是否真的在运行**
- 图表右上角应该有EA图标和笑脸 😊
- 如果是哭脸 😢,说明EA初始化失败
2. **检查OnTick是否被调用**
- 每次价格变动都会调用OnTick
- 应该看到统计数据变化
3. **手动触发HTTP请求**
```bash
# 测试后端连接
curl -X GET "http://localhost:8000/get_trades?symbol=GOLD&price=2035.50"
# 测试统计接口
curl -X POST "http://localhost:8000/send_statistics" \
-H "Content-Type: application/json" \
-d '{"tickCount":100,"bidPrice":2035.50}'
```
## 📚 相关文档
- [MT5 WebRequest官方文档](https://www.mql5.com/en/docs/network/webrequest)
- [项目README](README.md)
- [快速开始指南](QUICKSTART.md)
## ❓ 需要帮助?
如果按照以上步骤仍无法解决问题:
1. 检查MT5日志文件(通常在 `MQL5/Logs/` 目录)
2. 检查后端服务日志
3. 使用 `curl` 测试后端接口
4. 确认防火墙没有阻止连接
---
**最后更新**: 2026-03-05