Files
mt5_python_ea_suite/README.md
T
songkunling 3f115f1f14 add readme
2025-07-25 17:39:10 +08:00

5.0 KiB

MT5 Python EA Suite (MetaTrader 5 Python量化交易策略套件)

这是一个基于Python与MetaTrader 5 (MT5)平台交互的量化交易策略套件。它提供了一个完整的框架,用于开发、回测、优化和运行由多个交易策略组成的投资组合。

系统的核心思想不是依赖于单一策略,而是将多个不同类型的策略(如趋势跟踪、均值回归、风险管理等)组合起来,通过加权投票和阈值过滤的机制,生成一个更稳健、更可靠的最终交易决策。


核心功能

  • 多策略框架: 支持同时运行任意数量的、不同逻辑的交易策略。
  • 可扩展的策略库: 可以通过在strategies目录下添加新文件来轻松地创建和集成自定义策略。
  • 组合信号生成: 将所有已激活策略的信号(买入/卖出/无操作)根据可配置的权重进行加权求和,并与买卖阈值进行比较,最终形成统一的交易指令。
  • 回测引擎: 内置一个简单的回测引擎 (backtest.py),用于评估策略组合在历史数据上的表现。
  • 遗传算法优化器: 集成了强大的遗传算法 (optimizer.py),能够自动学习和寻找能使历史收益最大化的最佳策略权重组合。
  • 实盘交易模式: 提供了run_realtime()函数,用于连接正在运行的MT5客户端,根据组合信号生成实时的交易决策。
  • 状态管理: 支持有状态的复杂策略,例如需要“记忆”当前持仓状态或趋势状态的策略(如盈利保护、容错趋势等)。

项目结构

mt5_python_ea_suite/
├── main.py               # 项目主入口 (运行回测、优化或实盘)
├── config.py             # 全局配置文件 (策略、权重、阈值)
├── optimizer.py          # 遗传算法优化器
├── backtest.py           # 回测引擎
├── utils.py              # 工具函数 (MT5连接、订单处理等)
├── logger.py             # 日志配置
├── requirements.txt      # Python依赖包
├── logs/                   # 日志文件目录
└── strategies/           # 核心:所有交易策略的存放目录
    ├── ma_cross.py
    ├── rsi.py
    ├── profit_protect.py
    ├── resilient_trend.py
    └── ... (其他策略)

如何使用

1. 环境准备

  • 确保您的电脑上已经安装了MetaTrader 5交易终端。
  • 在MT5中,进入 工具 > 选项 > EA交易,确保勾选了“允许算法交易”和“允许DLL导入”。
  • 安装Python 3.x。
  • 创建并激活虚拟环境:
    python -m venv myenv
    # Windows
    myenv\Scripts\activate
    # macOS/Linux
    source myenv/bin/activate
    
  • 安装依赖:
    pip install -r requirements.txt
    

2. 核心配置 (config.py)

这是您与系统交互的主要文件。

  • STRATEGIES: 这是最重要的配置项。它是一个列表,每一项都是一个 (策略实例, 权重) 的元组。您可以在这里添加、删除策略,或者手动修改它们的权重。
  • BUY_THRESHOLD / SELL_THRESHOLD: 组合信号的触发阈值。所有策略的 (信号 * 权重) 之和,如果超过这个阈值,就会触发交易。

3. 运行模式 (main.py)

打开main.py文件,在文件底部的 if __name__ == "__main__" 部分,您可以选择要执行的任务:

  • 运行回测 (run_backtest()): 使用config.py中当前的权重和参数,对历史数据进行一次回测,并打印最终资金。

  • 运行优化 (run_optimizer()): 这是最推荐的步骤。它会启动遗传算法,自动寻找STRATEGIES中每个策略的最佳权重。这个过程会非常耗时,因为它需要运行成百上千次回测。优化结束后,它会打印出找到的最佳权重组合。 重要: 优化完成后,您需要手动将找到的最佳权重复制回 config.py 文件,以便在回测和实盘中应用。

  • 运行实盘 (run_realtime()): 使用config.py中的权重,连接MT5,根据最新的市场数据生成实时的、组合后的交易信号。


如何添加一个新策略

该框架的扩展性非常强。要添加一个您自己的新策略,只需三步:

  1. strategies/ 目录下,创建一个新的Python文件,例如 my_new_strategy.py
  2. 在该文件中,创建一个名为 Strategy 的类,并至少实现两个核心方法:
    • __init__(self): 初始化策略参数。
    • run_backtest(self, df): 实现回测逻辑,需要返回一个包含 1(买), -1(卖), 0(无操作) 的Pandas Series。
    • generate_signal(self): 实现实盘信号生成逻辑,需要返回 1, -1, 或 0
  3. 打开 config.py 文件:
    • 在文件顶部 import 您的新策略。
    • STRATEGIES 列表中,添加一项 (my_new_strategy.Strategy(), 1.0)

完成!您的新策略已经无缝集成到整个系统中,可以立即参与到回测和遗传算法优化中。