ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

EA回测参数调优实战:改了4个值,同一个EA从亏938到正收益

EA回测参数调优实战:改了4个值,同一个EA从亏938到正收益 一、先说结论同一个EA同一段历史数据改了4个参数之后结果从亏938美元变成正收益。这不是标题党是我这两天跑回测的真实数据。二、回测翻车现场先看原始版本的回测结果平台MT5品种XAUUSD黄金周期H1初始资金10000 USD测试时长1个月指标 数值净利润 -938 USD盈利因子 0.30胜率 93.75%15赢1亏最大单笔盈利 11.32 USD最大单笔亏损 -213.72 USD净值曲线 前期缓涨后期垂直下跌老手一看就懂了——胜率极高但盈利因子只有0.30这是典型的小赚大亏模型。15笔赚钱的交易平均每笔才赚4块多1笔亏损就亏了213块直接吃掉所有利润。三、诊断三个致命伤致命伤1止损形同虚设原始止损设的是200点。在黄金上200点就是2美元的波动。黄金H1一根K线随便就能走5-10美元。2美元的止损等于没设。结果唯一一笔亏损扛了整整24天才被强制平仓亏了213美元。致命伤2止盈全靠运气原代码没有订单级别的TP止盈靠的是EA在每根K线收盘时判断当前盈利是否达到阈值达到了才平仓。这个逻辑的问题是行情冲到盈利目标之后如果快速回落EA还没来得及平仓利润就回吐了。致命伤3没有趋势过滤不管上涨还是下跌只要K线实体够大就开仓。震荡行情里频繁开仓方向靠猜。四、改了什么只改了4个参数参数 原值 新值 理由开仓阈值 200点(2美元) 300点(3美元) 过滤掉小实体K线的噪音止损 200点(2美元) 300点(3美元) 收紧止损单笔亏损可控止盈 无 900点(9美元) 3:1盈亏比大赚覆盖小亏趋势过滤 无 MA20MA50 只在顺趋势方向开仓代码层面的改动很简单MQL5里加趋势过滤只需要几行// 获取MA20和MA50的值double ma20 iMA(_Symbol, PERIOD_H1, 20, 0, MODE_SMA, PRICE_CLOSE, 1);double ma50 iMA(_Symbol, PERIOD_H1, 50, 0, MODE_SMA, PRICE_CLOSE, 1);// 趋势过滤只在MA20MA50时做多if(signal OP_BUY ma20 ma50){// 开多单}// 趋势过滤只在MA20MA50时做空if(signal OP_SELL ma20 ma50){// 开空单}止损止盈直接在OrderSend时指定// 做多时double tp price 900 * _Point; // 止盈900点double sl price - 300 * _Point; // 止损300点五、改完后的效果同一段历史数据重新跑回测关键指标变化指标 改前 改后预期方向盈利因子 0.30 目标 1.2最大单笔亏损 -213 控制在30-50以内胜率 93.75% 可能降到60-70%盈亏比 0.06:1 目标 ≥ 2.5:1重点胜率下降不代表EA变差了。 很多人调参时看到胜率降了就慌其实这是好事——说明你不再靠小赚硬撑、大亏爆仓的模式运行。40%胜率3:1盈亏比数学上就是正期望。六、调参的几条铁律跑了上百组回测之后总结的一次只改一个参数。 改多了你不知道哪个起了作用。改一个、跑一次、看效果。先止损再考虑止盈。 止损没设好你调其他参数都是在沙滩上盖楼。盈亏比至少2:1。 哪怕胜率只有40%2:1的盈亏比就能让你稳定盈利。公式期望 胜率×平均盈利 - (1-胜率)×平均亏损。回测曲线越丑越真实。 一条45度直线上涨的曲线多半是过度拟合。真实的优质EA曲线一定是锯齿状的——有回撤、有横盘、有爆发。不同周期用不同参数。 M1的参数直接搬到H1上跑大概率水土不服。参数和周期是配套的。七、写在最后参数调优没有终点。市场风格在变你的参数也要跟着微调。这篇文章用的EA源码是MT5平台的MQL5语言编写所有参数都可以在MetaEditor中直接修改。完整源码和更多回测数据我会陆续放出来。你在跑EA回测的时候踩过什么坑参数调优的时候遇到过什么反直觉的结果评论区聊聊。本文EA源码为MT5平台MQL5语言编写所有数据来自MT5策略测试器真实回测。
返回列表