基于Python的MetaTrader 5智能交易系统,通过多策略组合和动态权重管理实现自动化量化交易。
- 多策略组合: 集成10种量化策略,通过加权投票生成稳健交易信号
- 动态权重管理: 根据市场状态动态调整策略权重,提升适应性
- 完整风控体系: 追踪止损、时间退出、资金管理等多层次风险控制
- 遗传算法优化: 自动寻找最佳策略参数和权重组合
- 多模式运行: 支持回测、实盘交易、模拟运行三种模式
- 架构重构: 采用依赖注入设计,提高代码可维护性和扩展性
mt5_python_ea_suite/
├── core/ # 核心组件
│ ├── data_providers.py # 数据提供者(实盘/回测/模拟)
│ ├── utils.py # 工具函数
│ └── risk/ # 风险管理模块
│ ├── position_manager.py # 持仓管理器
│ ├── market_state.py # 市场状态分析
│ └── __init__.py
├── execution/ # 执行模块
│ ├── realtime_trader.py # 实时交易器
│ ├── backtest_engine.py # 回测引擎
│ ├── dynamic_weights.py # 动态权重管理
│ └── __init__.py
├── strategies/ # 交易策略
│ ├── ma_cross.py # 均线交叉策略
│ ├── rsi.py # RSI策略
│ ├── bollinger.py # 布林带策略
│ ├── macd.py # MACD策略
│ ├── kdj.py # KDJ策略
│ ├── turtle.py # 海龟交易法则
│ ├── mean_reversion.py # 均值回归策略
│ ├── momentum_breakout.py # 动量突破策略
│ ├── daily_breakout.py # 日内突破策略
│ ├── wave_theory.py # 波浪理论策略
│ └── base_strategy.py # 策略基类
├── config.py # 配置文件
├── main.py # 主入口(优化器)
├── start_backtest.py # 回测启动脚本
├── start_realtime.py # 实时交易启动脚本
├── optimizer.py # 遗传算法优化器
├── logger.py # 日志系统
└── requirements.txt # 依赖包
- Python 3.7+
- MetaTrader 5 终端
- 网络连接
-
克隆项目
git clone <repository-url> cd mt5_python_ea_suite
-
创建虚拟环境
python -m venv myenv # Windows myenv\Scripts\activate # macOS/Linux source myenv/bin/activate
-
安装依赖
pip install -r requirements.txt
-
配置MT5终端
- 确保MT5终端已登录
- 启用自动交易(点击"自动交易"按钮或按Ctrl+E)
- 确保账户允许自动交易
- 均线交叉 (MACrossStrategy): 基于快慢均线交叉的买卖信号
- 相对强弱指数 (RSIStrategy): 使用RSI指标判断超买超卖
- 布林带 (BollingerStrategy): 基于价格与布林带的相对位置
- MACD策略: MACD指标的金叉死叉信号
- KDJ策略: KDJ指标的超买超卖信号
- 海龟交易法则 (TurtleStrategy): 基于价格突破的顺势交易
- 均值回归 (MeanReversionStrategy): 价格偏离均值时的回归交易
- 动量突破 (MomentumBreakoutStrategy): 基于动量指标的突破信号
- 日内突破 (DailyBreakoutStrategy): 基于日内价格区间的突破
- 波浪理论 (WaveTheoryStrategy): 结合EMA、ADX、动量等多指标的趋势分析
# 运行历史回测
python start_backtest.py回测结果将生成:
backtest_trades.csv: 交易记录CSV格式backtest_trades.json: 交易记录JSON格式- 详细的性能报告(胜率、盈亏比、最大回撤等)
# 启动实时交易(模拟运行) python start_realtime.py # 启动实盘交易(需要确认) python start_realtime.py # 输入 'YES' 确认实盘交易
# 运行遗传算法优化
python optimizer.py优化结果将生成:
optimization_results_YYYYMMDD_HHMMSS.json: 详细优化结果optimization_best_params_YYYYMMDD_HHMMSS.csv: 最佳参数optimization_history_YYYYMMDD_HHMMSS.csv: 优化历史optimization_report_YYYYMMDD_HHMMSS.txt: 优化报告
# 基础配置 SYMBOL = "XAUUSD" # 交易品种 TIMEFRAME = 1 # 时间周期(1分钟) INITIAL_CAPITAL = 20000 # 初始资金 SPREAD = 16 # 点差 # 回测配置 BACKTEST_COUNT = 30000 # 回测数据量 BACKTEST_START_DATE = "2025-05-01" BACKTEST_END_DATE = "2025-08-01"
RISK_CONFIG = { "stop_loss_pct": -0.01, # 止损阈值(-1%) "take_profit_pct": 0.20, # 止盈阈值(20%) "profit_retracement_pct": 0.10, # 追踪止损回撤阈值(10%) "min_profit_for_trailing": 0.01, # 启动追踪止损的最小盈利(1%) "max_holding_minutes": 60, # 最大持仓时间(分钟) "min_profit_for_time_exit": 0.001 # 时间退出最小盈利(0.1%) }
SIGNAL_THRESHOLDS = { "buy_threshold": 1.5, # 买入信号阈值 "sell_threshold": -1.5 # 卖出信号阈值 }
-
止损保护
- 固定百分比止损
- 追踪止损(基于盈利回撤)
- 动态止损位调整
-
时间管理
- 最大持仓时间限制
- 盈利未达标强制平仓
- 市场状态适应性调整
-
资金管理
- 初始资金分配
- 多空仓位资金分配
- 动态权益更新
-
持仓限制
- 最大持仓数量控制
- 交易方向限制(多/空/双向)
- 信号强度过滤
系统根据市场状态动态调整策略权重:
- 趋势识别: 价格突破、成交量确认、动量指标
- 市场状态: 强趋势、弱趋势、震荡市
- 置信度评估: 高置信度、中等置信度
- 权重调整: 根据市场状态调整各策略权重
- 当前持仓状态
- 浮动盈亏计算
- 策略信号强度
- 账户权益更新
- 交易记录CSV/JSON格式导出
- 性能指标统计
- 参数优化历史
- 峰值盈利数据持久化
-
MT5连接失败
- 确保MT5终端已启动并登录
- 检查网络连接
- 验证MT5终端版本
-
自动交易被禁用
- 点击MT5终端"自动交易"按钮
- 按Ctrl+E快捷键
- 检查账户权限
-
订单执行失败
- 检查账户资金
- 验证品种信息
- 确认交易时间
-
数据获取失败
- 检查日期范围设置
- 验证MT5服务器连接
- 调整数据量设置
logs/error.log: 错误日志logs/strategy.log: 策略执行日志position_peaks.json: 持仓峰值数据
-
参数优化
- 使用遗传算法优化策略参数
- 定期重新优化以适应市场变化
- 保存最佳参数组合
-
策略调整
- 根据市场情况调整策略权重
- 添加新的策略模块
- 优化信号阈值
-
风险控制
- 定期检查止损设置
- 监控最大回撤
- 调整资金分配比例
- 实盘交易前务必充分测试
- 建议先使用模拟运行模式
- 不要投入超过风险承受能力的资金
- 定期监控系统运行状态
- 保持策略的持续优化
- 架构重构,采用依赖注入设计
- 新增动态权重管理模块
- 完善风险控制体系
- 优化持仓管理和数据持久化
- 改进信号组合逻辑
- 基础多策略组合框架
- 遗传算法参数优化
- 回测和实时交易功能
- 基本风险控制
欢迎提交Issue和Pull Request来改进系统!
本项目仅供学习和研究使用,实盘交易风险自负。