MetaTrader 5 Expert Advisor (EA) 交易机器人介绍及盈利EA策略详解
代码仓库
https://github.com/zhutoutoutousan/profitable-expert-advisor
什么是Expert Advisor?
Expert Advisor(简称EA)是MetaTrader交易平台上的自动交易系统,它能够根据预设的交易策略自动执行交易操作。EA本质上是一个MQL5(MetaQuotes Language 5)程序,可以分析市场数据、生成交易信号并自动执行交易。
EA的主要优势:
- 24/7全天候交易
- 消除人为情绪干扰
- 严格执行交易策略
- 快速响应市场变化
- 可进行历史回测验证
EA的使用方法
-
安装步骤:
- 将EA文件复制到MT5的Experts文件夹
- 在MetaEditor中编译EA
- 将EA附加到交易图表上
- 设置适当的参数
-
基本设置:
- 选择交易品种
- 设置交易时间周期
- 配置风险参数
- 设置资金管理规则
-
注意事项:
- 建议先在模拟账户测试
- 定期监控EA运行状态
- 根据市场情况调整参数
- 设置合理的止损和止盈
项目中的两个EA策略详解
1. RSI背离反弹策略
这是一个结合RSI(相对强弱指标)背离和价格行为分析的策略,专门用于识别市场潜在的反转点。
策略特点:
- RSI背离模式识别(看涨和看跌)
- 价格反弹确认
- 通过止损和止盈进行风险管理
关键参数:
- 交易品种:XAUUSD(黄金)
- 时间周期:H1
- RSI周期:14
- RSI超买:70
- RSI超卖:30
- 基础手数:0.01
- 最大风险:2%
- 最大回撤:10%
2021-2025年回测表现:
绩效指标:
指标 | 数值 |
---|---|
总净利润 | $1,344.74 |
总盈利 | $4,410.51 |
总亏损 | -$3,065.77 |
盈利因子 | 1.44 |
恢复因子 | 4.91 |
预期收益 | $4.87 |
夏普比率 | 1.69 |
AHPR | 1.0033 (0.33%) |
GHPR | 1.0031 (0.31%) |
交易统计:
统计项 | 数值 |
---|---|
总交易次数 | 276 |
总交易笔数 | 552 |
盈利交易 | 81 (29.35%) |
亏损交易 | 195 (70.65%) |
空单胜率 | 26.28% |
多单胜率 | 32.37% |
最大盈利交易 | $144.46 |
最大亏损交易 | -$46.66 |
平均盈利交易 | $54.45 |
平均亏损交易 | -$15.72 |
最大连续盈利 | 3 ($179.71) |
最大连续亏损 | 15 (-$159.89) |
回撤分析:
指标 | 数值 |
---|---|
余额回撤绝对值 | $18.62 |
权益回撤绝对值 | $19.45 |
最大余额回撤 | $231.79 (10.21%) |
最大权益回撤 | $273.75 (11.93%) |
相对余额回撤 | 13.47% ($210.14) |
相对权益回撤 | 15.85% ($250.78) |
余额曲线图:
2008年测试结果:
代码实现详解:
// 主要参数设置
input int RSI_Period = 14; // RSI周期
input int RSI_Overbought = 70; // RSI超买水平
input int RSI_Oversold = 30; // RSI超卖水平
input double BaseLotSize = 0.01; // 基础手数
input int ATR_Period = 14; // ATR周期
input double ATR_SL_Multiplier = 3.0; // ATR止损倍数
input double ATR_TP_Multiplier = 10.0; // ATR止盈倍数
// 背离检测函数
int CheckRSIDivergence()
{
// 获取RSI和价格数据
double rsiBuffer[], highBuffer[], lowBuffer[];
// 检查常规看涨背离(价格创新低,RSI创新高)
if(UseRegularDivergence)
{
for(int i = 1; i < DivergenceLookback; i++)
{
if(lowBuffer[i] < lowBuffer[i+1] && rsiBuffer[i] > rsiBuffer[i+1] &&
rsiBuffer[i] > RSI_Oversold && rsiBuffer[i] < RSI_Overbought)
{
// 确认RSI形成更高的低点
if(rsiBuffer[0] > rsiBuffer[1] && rsiBuffer[1] > rsiBuffer[2])
{
return 1; // 看涨信号
}
}
}
}
// 检查隐藏看涨背离(价格形成更高的低点,RSI形成更低的低点)
if(UseHiddenDivergence)
{
for(int i = 1; i < DivergenceLookback; i++)
{
if(lowBuffer[i] > lowBuffer[i+1] && rsiBuffer[i] < rsiBuffer[i+1] &&
rsiBuffer[i] > RSI_Oversold && rsiBuffer[i] < RSI_Overbought)
{
if(rsiBuffer[0] > rsiBuffer[1] && rsiBuffer[1] > rsiBuffer[2])
{
return 1; // 看涨信号
}
}
}
}
return 0; // 无信号
}
关键功能说明:
- 背离检测:通过比较价格和RSI的走势来识别潜在的转折点
- 风险管理:使用ATR动态计算止损和止盈水平
- 仓位管理:根据账户余额和风险参数动态调整交易手数
- 交易过滤:通过最小交易间隔和最大点差来过滤交易机会
2. EMA交叉策略
这是一个基于指数移动平均线(EMA)交叉的交易系统,具有先进的评分和仓位管理功能。
策略特点:
- EMA交叉信号识别
- 高级评分系统
- 追踪止损管理
- 仓位缩放和反转功能
关键参数:
- 交易品种:XAUUSD
- 时间周期:H1
- EMA周期:64
- 最大持仓时间:9小时
- 追踪止损:5.0
- 最大回撤:10%
2021-2025年回测表现:
绩效指标:
指标 | 数值 |
---|---|
总净利润 | $388.52 |
总盈利 | $391.65 |
总亏损 | -$3.13 |
盈利因子 | 125.13 |
恢复因子 | 11.66 |
预期收益 | $0.72 |
夏普比率 | 41.49 |
AHPR | 1.0006 (0.06%) |
GHPR | 1.0006 (0.06%) |
交易统计:
统计项 | 数值 |
---|---|
历史数据质量 | 82%真实报价 |
总K线数 | 25,283 |
总报价数 | 165,999,507 |
余额回撤绝对值 | $0.00 |
权益回撤绝对值 | $0.10 |
最大余额回撤 | $0.69 (0.05%) |
最大权益回撤 | $33.32 (2.56%) |
相对余额回撤 | 0.05% ($0.69) |
相对权益回撤 | 2.92% ($30.23) |
余额曲线图:
代码实现详解:
// 主要参数设置
input int MagicNumber = 42;
input int scoreThreshold = 5200; // 交易入场分数阈值
input int slopeThreshold = 93; // EMA斜率阈值
input double maxScore = 7900; // 最大分数值
input int cooldownMinutes = 18; // 冷却时间(分钟)
input int emaPeriod = 64; // EMA周期
input double atrMultiplier = 7.6; // ATR倍数(用于动态止损止盈)
// 交易信号生成
void OnTick()
{
// 获取EMA值
double emaBuffer[];
CopyBuffer(emaHandle, 0, 0, 2, emaBuffer);
// 计算EMA斜率
emaSlope = - (emaCurrentValue - emaPrevValue) * 100;
// 检查价格与EMA的交叉
if (closePrev < emaPrevValue && closeCurr > emaCurrentValue) {
currentScore += crossOverStep; // 看涨交叉
}
else if (closePrev > emaPrevValue && closeCurr < emaCurrentValue) {
currentScore -= crossOverStep; // 看跌交叉
}
// 根据分数执行交易
if (currentScore > scoreThreshold) {
// 开多仓
trade.Buy(lotSize, Symbol(), currentPrice, Bid - dynamicSL, 0);
}
else if (currentScore < -scoreThreshold) {
// 开空仓
trade.Sell(lotSize, Symbol(), currentPrice, Ask + dynamicSL, 0);
}
}
关键功能说明:
- 评分系统:通过多个因素(交叉、斜率、距离等)计算交易分数
- 动态止损:使用ATR动态计算止损水平
- 追踪止损:实现移动止损保护盈利
- 仓位管理:根据账户余额和最大回撤动态调整交易手数
- 交易冷却:通过冷却时间避免过度交易
回测数据分析
RSI背离策略
- 平均每笔盈利:$54.45
- 平均每笔亏损:-$15.72
- 最大单笔盈利:$144.46
- 最大单笔亏损:-$46.66
- 最大连续盈利:3次($179.71)
- 最大连续亏损:15次(-$159.89)
EMA交叉策略
- 系统稳定性高
- 回撤控制优秀
- 交易频率适中
- 风险收益比良好
使用建议
-
风险控制:
- 建议使用小资金测试
- 设置合理的止损
- 控制单笔风险
- 监控最大回撤
-
参数优化:
- 根据市场环境调整参数
- 定期进行回测验证
- 避免过度优化
- 保持策略稳定性
-
运行环境:
- 确保网络稳定
- 使用VPS服务器
- 定期检查日志
- 及时处理异常情况
免责声明
本文介绍的EA策略仅供学习和研究使用。过去的业绩不代表未来的表现,请在使用前进行充分的测试和验证。交易有风险,投资需谨慎。