EA-1160 · 马丁格尔
20_200 expert_v4.2_AntS
该EA通过比较两个可配置偏移K线的开盘价,当价差超过阈值时开多或开仓。亏损后采用马丁格尔式加仓倍数放大手数,并在固定交易小时入场。仓位通过止盈、止损或最大持仓时间出场。
打开交互版(权益曲线、切换品种)基本信息
回测结果(H1,约 1 年)
暂未回测:这个 EA 还没能自动转换。
爆仓风险: 偏高
- 亏损后加大仓位(马丁格尔)
高:回测中爆仓,或使用马丁/网格加仓且不设止损。偏高:马丁或网格加仓但有止损,或不设止损且可同时持有多个仓位。 标签的含义和我们的发现 →
策略分析
策略概念基于两根K线开盘价的差值判断方向:当第二根K线开盘价高于第一根K线超过Delta_L个点时做多,当第一根K线开盘价高于第二根K线超过Delta_S个点时做空。入场条件还包括限制在每天指定的小时(TradeTime)才允许开仓,且当前没有持仓。出场条件包括固定点数的止盈止损,以及最大持仓时间(MaxOpenTime)超时后强制平仓。仓位管理方面,提供固定手数和自动手数两种模式,自动手数根据账户余额按阶梯表递增。资金管理采用马丁格尔策略:当检测到上次记录的余额高于当前余额(即亏损后),手数乘以BigLotSize倍数放大;OneMult参数控制是一次性放大还是每笔新仓位都放大。该EA的LotSize函数是一段超长的if-else阶梯,将余额从300到273580分别映射到0.01到10.00手,完全没有使用数学公式计算。
优势
- 止损止盈设置明确,多头止损1470点、空头止损2670点,风控参数透明
- 有最大持仓时间限制,避免长期套牢
- 使用全局变量跟踪上次余额以检测亏损,状态持久化在重启后仍有效
劣势
- 马丁格尔策略在连续亏损时手数指数增长,可能导致爆仓
- LotSize函数用近1000行if-else硬编码,极难维护且容易出错
- SignalOpenSell函数中return(false)永远不会执行,存在死代码
- 每天只在固定一小时开仓,交易机会极少,且不做多时段验证
- 没有点差过滤,在小TP场景下点差波动可能吃掉利润
改进建议
- 用数学公式替换LotSize的1000行if-else阶梯,例如 lot = MathFloor((AcBal - 300) / 273.28) * 0.01 + 0.01
- 增加点差过滤和滑点保护,避免在高点差时段入场
- 增加连续亏损次数限制,防止马丁格尔无限放大手数
风险评估
总体风险: 高风险
- 马丁格尔手数倍增(BigLotSize=6)在连续亏损时将手数放大6倍,极大概率导致爆仓
- 没有检查账户可用保证金是否足够支撑放大后的手数
- SignalOpenSell函数存在死代码bug,sell信号可能工作异常
评估得分
代码质量1.0
策略逻辑2.0
风险管理2.0
稳健性2.0
创新性1.0
文档2.0
综合1.7
参数
| 参数 | 默认值 | 说明 |
|---|---|---|
t1 | 6 | 第一根K线的偏移量 |
t2 | 2 | 第二根K线的偏移量 |
Delta_L | 6 | 做多时两根K线开盘价的最小差值(点) |
Delta_S | 21 | 做空时两根K线开盘价的最小差值(点) |
TakeProfit_L | 390 | 多头止盈(点) |
StopLoss_L | 1470 | 多头止损(点) |
TakeProfit_S | 320 | 空头止盈(点) |
StopLoss_S | 2670 | 空头止损(点) |
Lots | 0.1 | AutoLot=false时的固定手数 |
AutoLot | true | 是否启用根据余额的自动手数 |
BigLotSize | 6 | 亏损后的手数倍增系数 |
OneMult | true | 是否仅一次马丁格尔倍增(否则每笔新仓都倍增) |
TradeTime | 14 | 允许开仓的小时(服务器时间) |
MaxOpenTime | 504 | 最大持仓时间(小时) |
同类 EA:马丁格尔
回测是历史模拟,不代表未来收益,不构成投资建议。