# Easy-Deal **Repository Path**: robortl/easy-deal ## Basic Information - **Project Name**: Easy-Deal - **Description**: 这是通过fay agent延伸出来的一个项目。我们为fay提供操作mt5的tool,来代替我们监管外汇量化交易的EA的执行情况。fay通过ReAct方式自主决策调用不同的tool,并基于这些tool执行的结果与我们探讨交易策略如何去改进,甚至介入操作。 - **Primary Language**: Python - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 20 - **Created**: 2025-04-15 - **Last Updated**: 2025-04-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # EasyDeal MT5 交易策略 ## 策略概述 EasyDeal MT5是一个基于MetaTrader 5平台的自动化交易策略。 策略会双向开仓入场,在顺势方向执行爬梯止盈并开新单,在逆势方向会不断开马丁单,直至逆势方向的订单不亏损完结。在第一次爬梯后会锁定方向。开马丁时会同时开一张同向基础单,马丁单的大小为上一次马丁单和基础单加起来的两倍。马丁单受控于两个参数,马丁最小矩离和滤波矩离,上一张逆向单必须达到马丁矩离并回撤达到滤波矩离才会增开马丁单。马丁单结束时会补开一张基础单,形成新一轮双单起步,如此不断循环。在执行的图形变化上会出现,双单锁定的区间由小变大,再突然变窄。在资金方面,在绝对安全的情况下先把浮亏转换成盈利,再通过马丁单去结束浮亏,浮亏转换效率93%以上,风险位在于马丁。 该策略通过Flask提供了Web API接口,使用户可以远程监控和控制策略的运行。 ### 主要特点 - **双向开仓**:同时开立买单和卖单,捕捉市场双向机会 - **马丁格尔策略**:在亏损时自动加仓,通过增加仓位来平衡亏损 - **风险控制**:设置最大亏损限制和最大马丁层数,防止过度亏损 - **Web API接口**:提供完整的REST API,可远程监控和控制策略 - **日志记录**:详细记录交易和API请求,便于回测和分析 ## 安装要求 - Python 3.6+ - MetaTrader 5平台及其Python API - 以下Python库: - MetaTrader5 - pandas - flask - pytz 可以通过以下命令安装所需依赖: ```bash pip install MetaTrader5 pandas flask pytz ``` ## 使用流程 ### 1. 准备工作 - 确保MetaTrader 5已安装并登录到您的交易账户 - 确保您的交易账户中有足够的资金进行交易 ### 2. 配置参数 在`easydeal_mt5.py`文件中,通过修改`EasyDealStrategy`类的`__init__`方法来配置交易参数: ```python def __init__(self): # 直接设置交易参数 self.symbol = "XAUUSDm" # 交易币对 self.first_lots = 0.01 # 首单手数 self.step = 0.1 # 步长 self.martin_interval = 1.6 # 马丁间隔 self.filter = 0.1 # 过滤百分比 self.order_time = 0 # 下单时间 self.magic_number = 999 # 魔术数字 self.max_loss = 3000 # 最大亏损 self.max_martin_level = 5 # 最大马丁层数 ``` ### 3. 启动策略 运行以下命令启动策略: ```bash python easydeal_mt5.py ``` 启动后,策略将自动连接到MetaTrader 5平台,并开始监听8888端口的HTTP请求。 需确保脚本运行机器和MetaTrader 5平台所在机器是同一台,并且已经打开了币对的交易窗口。 ### 4. 监控和控制 策略启动后,您可以通过Web API接口监控和控制策略的运行。 ## 参数配置说明 | 参数名 | 说明 | 默认值 | 建议范围 | |--------|------|--------|----------| | symbol | 交易币对 | EURUSD | 任何MT5支持的币对 | | first_lots | 首单手数 | 0.01 | 0.01-1.0 | | step | 马丁加仓步长 | 0.1 | 0.1-0.5 | | martin_interval | 马丁间隔(点数) | 1.6 | 1.0-5.0 | | filter | 过滤百分比 | 0.1 | 0.05-0.2 | | order_time | 下单时间(0表示立即下单) | 0 | 0或Unix时间戳 | | magic_number | 魔术数字(订单标识) | 999 | 任意整数 | | max_loss | 最大亏损限制(美元) | 3000 | 根据资金量设置 | | max_martin_level | 最大马丁层数 | 5 | 3-10 | ## Web API接口说明 策略通过Flask提供以下REST API接口,默认监听端口为8888: ### 1. 获取策略状态 ``` GET /status ``` 返回当前策略状态,包括市场数据、策略状态和订单信息。 ### 2. 暂停策略 ``` GET /pause ``` 暂停策略运行,策略将停止检查开仓和加仓条件,但不会关闭现有订单。 ### 3. 恢复策略 ``` GET /resume ``` 恢复策略运行。 ### 4. 重新加载策略 ``` GET /reload ``` 重新加载策略,会重新初始化所有参数。 ### 5. 关闭所有订单 ``` GET /close_all ``` 关闭当前所有开仓的订单。 ### 6. 获取当前盈亏 ``` GET /profit ``` 获取当前所有订单的总盈亏。 ### 7. 获取配置信息 ``` GET /config ``` 获取当前策略的配置参数。 ### 8. 获取日志 ``` GET /logs ``` 获取策略运行日志。 ## 风险提示 - 马丁格尔策略在持续趋势市场可能导致严重亏损,请谨慎使用 - 建议在模拟账户中充分测试后再在实盘账户中使用 - 请根据自己的资金量合理设置参数,特别是首单手数、最大亏损和最大马丁层数 ## 日志文件 策略会生成两种日志文件,存放在`logs`目录下: - `easydeal.log`:记录策略运行的主要日志 - `api_requests.log`:记录API请求的日志 ## 故障排除 1. **MT5连接失败**: - 确保MetaTrader 5已启动并登录 - 检查网络连接 2. **交易币对不存在**: - 确保配置的交易币对在您的MT5平台中可用 3. **下单失败**: - 检查账户余额是否充足 - 检查交易时间是否在市场开放时间内 ## 联系方式 ![输入图片说明](23e33a7db411d9fc213e051270d0fa1.jpg) ## 许可证 本项目采用MIT许可证。详情请参阅LICENSE文件。