刚跑完三个月的EA实盘,净值曲线基本符合预期,最大回撤控制在8.2%以内,总收益率15.6%。这三个月踩了不少坑,今天把几个核心体会写出来,希望对刚接触自动化交易的朋友有点帮助。
首先是参数优化这事,别迷信回测数据。我一开始用2019-2022年数据跑了个看起来完美的曲线,实盘前两周就被打了脸。原因是回测时没考虑点差波动和滑点,特别是数据时段内遇到非农行情,点差瞬间拉大到5-6个点,EA连续触发假突破止损。后来我改了策略,在参数集里加了滑点补偿逻辑,用MarketInfo(Symbol(),MODE_SPREAD)动态调整入场偏移量,效果明显改善。
其次是资金管理必须写死。我的EA里固定了每单风险比例,用0.5%作为基准,动态根据账户余额计算手数。别用固定手数,否则回撤期资金缩水后仓位比例会失衡。代码实现很简单:double lotSize = NormalizeDouble(AccountBalance() * 0.005 / (stopLossPips * MarketInfo(Symbol(), MODE_TICKVALUE)), 2); 但要注意,某些经纪商的TICKVALUE返回的是浮动值,最好在策略初始化时做一次校验。
然后说说止损设置。很多人喜欢把止损放太大,觉得给行情多点空间,结果碰到震荡市来回扫。我现在的做法是结合ATR指标动态设止损,周期设为14,倍数取1.5到2倍。实盘中这样能过滤掉大部分噪音,同时保留趋势波动的空间。代码里用iATR(NULL,0,14,0)取当前值,再乘以系数即可。
最后提醒一点,EA跑起来后别频繁干预。我有个坏毛病,看到浮亏大了就手动平仓,结果经常错过后续反转行情。后来在代码里加了个日志模块,每次开平仓都记录理由和参数,复盘时对照着看,慢慢就管住了手。三个月下来,发现至少有一半的亏损单其实只要按规则执行,最终是能盈利的。
自动化交易不是一劳永逸,需要持续优化和耐心。如果大家有好的经验,欢迎交流。
首先是参数优化这事,别迷信回测数据。我一开始用2019-2022年数据跑了个看起来完美的曲线,实盘前两周就被打了脸。原因是回测时没考虑点差波动和滑点,特别是数据时段内遇到非农行情,点差瞬间拉大到5-6个点,EA连续触发假突破止损。后来我改了策略,在参数集里加了滑点补偿逻辑,用MarketInfo(Symbol(),MODE_SPREAD)动态调整入场偏移量,效果明显改善。
其次是资金管理必须写死。我的EA里固定了每单风险比例,用0.5%作为基准,动态根据账户余额计算手数。别用固定手数,否则回撤期资金缩水后仓位比例会失衡。代码实现很简单:double lotSize = NormalizeDouble(AccountBalance() * 0.005 / (stopLossPips * MarketInfo(Symbol(), MODE_TICKVALUE)), 2); 但要注意,某些经纪商的TICKVALUE返回的是浮动值,最好在策略初始化时做一次校验。
然后说说止损设置。很多人喜欢把止损放太大,觉得给行情多点空间,结果碰到震荡市来回扫。我现在的做法是结合ATR指标动态设止损,周期设为14,倍数取1.5到2倍。实盘中这样能过滤掉大部分噪音,同时保留趋势波动的空间。代码里用iATR(NULL,0,14,0)取当前值,再乘以系数即可。
最后提醒一点,EA跑起来后别频繁干预。我有个坏毛病,看到浮亏大了就手动平仓,结果经常错过后续反转行情。后来在代码里加了个日志模块,每次开平仓都记录理由和参数,复盘时对照着看,慢慢就管住了手。三个月下来,发现至少有一半的亏损单其实只要按规则执行,最终是能盈利的。
自动化交易不是一劳永逸,需要持续优化和耐心。如果大家有好的经验,欢迎交流。
专注交易策略编程实现,分享MQL开发技巧与代码优化方案