RSI EA
该EA基于RSI超买超卖阈值的交叉信号进行交易,RSI上穿下限时做多,下穿上限时做空。支持固定和ATR动态止损止盈、风险比例或固定手数计算、交易时段过滤以及部分减仓功能。出场条件与入场相反,在RSI反向穿越阈值时平仓。
打开交互版(权益曲线、切换品种)基本信息
回测结果(H1,约 1 年)
| 品种 | 盈亏 | 年化 | 最大回撤 | 交易数 | 胜率 | 夏普 | 恢复因子 | 最长连亏 | 每笔期望 | 状态 |
|---|---|---|---|---|---|---|---|---|---|---|
| EURUSD | +1.35% | +1.17% | 5.23% | 6 | 60.00% | — | — | — | — | 交易太少 |
| GBPUSD | +1.43% | +1.24% | 5.52% | 7 | 42.90% | — | — | — | — | 交易太少 |
| USDJPY | +9.68% | +8.36% | 4.05% | 11 | 80.00% | 1.61 | 2.39 | 1 | +$94.96 | 可靠 |
| XAUUSD | -100.00% | -100.00% | 100.00% | 2 | 50.00% | -2.01 | -1.00 | 1 | −$5,880.31 | 账户爆仓 |
在 2 个有可信结果的品种中,1 个盈利。
由 MQL5 自动转换为 Python,所有 EA 使用同一套规则回测:按 MT5 手数计仓(外汇每手 10 万单位、黄金每手 100 盎司),1:100 杠杆,同一时间只有一张挂单,净值跌破初始资金 10% 时强平。夏普比率按权益曲线计算。标为不可靠的结果仅供参考。
和同类(动量)在同一品种上有可信结果的 EA 相比:USDJPY 好于 99%(共 68 个);XAUUSD 好于 0%(共 75 个)
按月看
| 品种 | 盈利月份占比 | 最好的月份 | 最差的月份 |
|---|---|---|---|
| USDJPY | 69% | +3.46% 2026-07 | -1.47% 2026-09 |
| XAUUSD | 33% | +2.67% 2025-11 | -100.00% 2026-01 |
根据回测净值曲线计算(约每两天一个点),只统计可信结果。
爆仓风险: 高
- 没有止损,也没有移动止损
- 在我们的回测中爆仓(净值跌破 10%):XAUUSD
高:回测中爆仓,或使用马丁/网格加仓且不设止损。偏高:马丁或网格加仓但有止损,或不设止损且可同时持有多个仓位。 标签的含义和我们的发现 →
策略分析
策略概念基于RSI动量指标的超买超卖区域交叉信号,属于典型的动量反转混合策略。入场条件为RSI从下方穿越LowerThreshold(默认20)时做多,从上方穿越UpperThreshold(默认80)时做空,即信号线穿越阈值线而非简单的超买超卖判定。出场条件与入场对称,当持仓方向对应的反向信号出现时平仓,例如多头在RSI下穿上限时平仓。仓位管理支持固定手数和基于风险的自动计算两种模式,自动模式下根据账户余额/净值/可用保证金的一定比例与止损距离计算手数。止损止盈支持固定点数和基于ATR波动率的动态计算,动态模式利用ATR值乘以相应系数确定止损止盈距离。此外还提供交易时段过滤和部分减仓(Scale Out)功能,部分减仓在价格达到ATR倍数盈利时按比例平仓一半仓位。
优势
- 支持固定和ATR动态止损止盈,适应不同市场波动环境
- 具备风险比例自动计算仓位功能,资金管理较为完善
- 提供交易时段过滤和部分减仓功能,增加策略灵活性
- 新K线检测机制避免同一根K线重复开仓
- 平仓重试机制(最多10次)提高了订单执行的可靠性
劣势
- AccountBalance/AccountEquity/AccountFreeMargin函数返回类型为bool而非double,存在严重类型错误
- 默认止损止盈均为0,不设止损直接交易风险极大
- MinimumStopLoss和MaximumStopLoss参数定义了但从未在止损计算中使用,形同虚设
- MaxSpreadAllowed参数定义了但入场条件中未检查点差,该参数完全未生效
- LoadIndicatorData中ATR和RSI的CopyBuffer起始索引不一致,ATR从0开始而RSI从1开始,可能导致数据对齐问题
改进建议
- 修复AccountBalance/AccountEquity/AccountFreeMargin的返回类型为double,否则风险仓位计算将完全错误
- 在入场条件中加入MaxSpreadAllowed点差检查,使已有参数真正生效
- 在CalculateStopLoss和CalculateTakeProfit中实际使用MinimumStopLoss/MaximumStopLoss/MinimumTakeProfit/MaximumTakeProfit参数进行范围校验
- 统一LoadIndicatorData中CopyBuffer的起始索引,确保ATR和RSI数据时间对齐
- OnDeinit中应释放指标句柄(IndicatorRelease),避免资源泄漏
风险评估
总体风险: 高风险
- AccountBalance等函数返回bool类型导致自动仓位计算完全错误,可能产生0手或极端手数
- 默认止损止盈均为0,用户若不修改参数将以无止损状态交易
- MaxSpreadAllowed参数未生效,高波动时可能在极大点差下开仓
- MinimumStopLoss/MaximumStopLoss未实际约束止损范围,可能导致过小或过大止损
评估得分
参数
| 参数 | 默认值 | 说明 |
|---|---|---|
MomentumPeriod | 14 | RSI指标周期 |
UpperThreshold | 80 | RSI超买阈值(做空信号线) |
LowerThreshold | 20 | RSI超卖阈值(做多信号线) |
PriceMode | PRICE_CLOSE | RSI应用价格类型 |
EnableSessionFilter | false | 是否启用交易时段过滤 |
SessionStartHour | h07 | 交易时段开始时间 |
SessionEndHour | h19 | 交易时段结束时间 |
VolatilityPeriod | 100 | ATR波动率指标周期 |
VolatilityTimeframe | PERIOD_CURRENT | ATR波动率时间周期 |
VolatilityFactorSL | 2 | 动态止损ATR乘数 |
VolatilityFactorTP | 3 | 动态止盈ATR乘数 |
PositionSizeMode | RISK_DEFAULT_FIXED | 仓位模式:固定手数或风险自动计算 |
FixedLotSize | 0.1 | 固定手数 |
RiskCalculationBase | RISK_BASE_BALANCE | 风险计算基准:余额/净值/可用保证金 |
RiskPercentage | 2 | 风险百分比 |
MinimumLotSize | 0.01 | 最小允许手数 |
MaximumLotSize | 100 | 最大允许手数 |
MaxOpenPositions | 1 | 最大同时持仓数 |
StopLossType | SL_FIXED | 止损类型:固定或ATR动态 |
FixedStopLoss | 0 | 固定止损点数(0=不止损) |
MinimumStopLoss | 0 | 最小止损点数 |
MaximumStopLoss | 5000 | 最大止损点数 |
TakeProfitType | TP_FIXED | 止盈类型:固定或ATR动态 |
FixedTakeProfit | 0 | 固定止盈点数(0=不止盈) |
MinimumTakeProfit | 0 | 最小止盈点数 |
MaximumTakeProfit | 5000 | 最大止盈点数 |
EnableScaleOut | false | 是否启用部分减仓 |
ScaleOutPercent | 50 | 减仓百分比 |
VolatilityFactorSO | 1 | 减仓触发ATR乘数 |
IdentificationNumber | 0 | EA识别号(Magic Number) |
TradeComment | 交易注释 | |
SlippageTolerance | 5 | 滑点容忍度 |
MaxSpreadAllowed | 50 | 最大允许点差 |
同类 EA:动量
回测是历史模拟,不代表未来收益,不构成投资建议。