目录

MT4多开 - MQL4代码实现价格与指标极值背离检测_背离现象的核心逻辑与极值定位

MQL4代码实现价格与指标极值背离检测_背离现象的核心逻辑与极值定位
TITLE: MQL4代码实现价格与指标极值背离检测 在技术分析里,背离现象其实是个挺有意思的信号,说白了就是价格和指标走势“唱反调”。很多交易者靠它抓反转点,但人眼盯着图表看,难免会漏掉或者看走眼。要是能用程序自动识别,那就省心多了。MetaTrader 4平台自带的MQL4语言,正好能帮我们实现这个功能,核心思路就是比较价格和指标的极值点。

背离现象的核心逻辑与极值定位

背离的本质是价格创出新高或新低时,对应的指标却没有同步跟上。比如价格一波比一波高,但RSI或MACD的波峰却越来越低,这就是顶背离,通常预示着上涨动能衰竭。反过来,价格不断创新低,指标的低点却在抬高,那就是底背离,暗示下跌势头可能到头了。程序要识别这个,第一步就得准确找到价格和指标的“极值点”,也就是局部的高点和低点。

在MQL4里定位极值,通常用循环遍历K线数据。对价格来说,可以用High和Low数组,再结合iHighest和iLowest函数来找特定区间的最高价和最低价。但更灵活的做法是自己写个循环,比如从当前K线往前数20根,判断中间那根是不是比前后几根都高或都低。指标数据也一样,通过iCustom或直接调用内置指标函数获取数值,再用同样的逻辑找极值。说实话,这个步骤挺考验耐心的,因为参数设得不对,很容易抓到假极值。

我个人习惯用“摆动低点”和“摆动高点”的概念,就是连续几根K线里,中间那根是最低或最高。比如判断底背离,我会先找出最近的一个价格低点,再往前找更早的一个价格低点,确保这两个低点之间的价格走势是下降的。然后对比对应位置的指标数值,如果指标的低点反而更高,那就符合底背离条件。
这个逻辑听起来简单,但实现时得注意K线数量不能太少,否则噪声太多,太多又可能滞后。

第二步:勾选显示交易水平选项

在“常用”标签页里,向下滚动一下,你会看到一个叫做“显示交易水平”的复选框。这个选项的默认状态是未勾选的,所以你一开始看不到开仓线。只需要用鼠标点击一下这个小方框,给它打上勾,然后点击窗口底部的“确定”按钮,设置就生效了。

勾选之后,你立刻就能在图表上看到变化。所有当前持仓订单的开仓价都会以一条水平虚线显示出来,线的颜色通常是默认的蓝色或者灰色,具体颜色取决于你的图表配色方案。这条线会贯穿整个图表区域,让你一眼就能定位到开仓价位。同时,在线的旁边还会显示开仓价格的具体数字,非常直观。

其实,这个“交易水平”不仅仅显示开仓价,它还会显示你设置的止损价和止盈价。也就是说,如果你同时设了止损和止盈,图表上就会有三条线:一条是开仓线,一条是止损线,一条是止盈线。这样你的整个交易计划就一目了然了,不需要再手动去翻订单列表。

利用账户历史导出功能进行二次筛选

有时候MT4自带的筛选功能并不能完全满足需求,比如你想把某个月的所有交易记录导出来做Excel分析,或者需要统计特定日期范围内的盈亏情况。这时候就要用到账户历史的导出功能了。在账户历史标签页的空白处右键,选择“保存为详细报告”或者“保存为交易报告”,就能生成一个HTML格式的报告文件。

这个报告文件里包含了所有交易记录的详细信息,包括开仓时间、平仓时间、品种、手数、盈亏、手续费、隔夜利息等等。更关键的是,如果你在导出前已经通过自定义时间范围筛选好了日期,那么导出的报告就只包含这个日期范围内的数据。说白了,这就是一个变相的日期筛选导出功能。

导出后的HTML报告用浏览器打开,你会发现它其实是一个结构化的数据表格。你可以直接复制到Excel里进行进一步处理,比如按品种分类、计算胜率、统计最大连续亏损等等。我自己的习惯是每个月月底把所有交易记录按月份导出,然后整理到一个Excel工作簿里,这样年终复盘的时候就非常方便了。

不过要提醒一点:MT4导出的报告是静态的,不会自动更新。如果你在同一天内又做了新的交易,需要重新导出才能包含最新数据。另外,报告里的时间显示的是MT4服务器时间,不是你的本地时间,如果你在跨时区交易,要注意时间转换的问题,否则日期筛选可能会对不上。

优化点差设置的实用建议与注意事项

手动设置点差不是随便填个数就完事了。首先,你得了解你交易品种的典型点差范围。比如,主要货币对在正常交易时段,点差通常比较低,但亚洲盘或者周末开盘时,点差会扩大。你可以用MT4的“市场观察”窗口,右键点击品种,选择“属性”,查看历史点差数据。MT4或者,用第三方工具导出点差记录,算一个平均值。我一般会取一周内点差的中位数,然后在此基础上加50%,作为回测的保守值。

其次,不同时间框架下的点差设置也可以不同。如果你做的是1分钟或者5分钟图的高频策略,点差影响最大,建议设置得高一些。如果是日线级别的策略,点差影响相对小,但也不能完全忽略。我个人的做法是:短线策略用当前平台平均点差的1.5倍,长线策略用平均点差的1.2倍。这样既不会太激进,也不会太保守。

还有一点要注意:MT4的点差设置是全局的,会影响所有交易品种。如果你同时测试多个品种,比如EURUSD和GBPUSD,它们的点差不一样,你不能用一个值覆盖所有。
这时候,建议分别单独测试每个品种,分别设置对应的点差。虽然麻烦一点,但结果更准确。有些EA允许在代码里写死点差,但那样就失去了灵活性,不如在测试器里手动调整。

最后,千万别忘记定期更新点差设置。市场环境在变,点差也在变。比如,疫情那段时间,很多品种的点差翻了倍。如果你还用以前的老数据,回测结果就没意义了。我每隔三个月会重新查一下平台的点差数据,然后调整回测设置。说实话,这个习惯帮我避免了很多不必要的实盘亏损。毕竟,回测是免费的试错机会,把点差这个变量控制好,你的策略才能经得起实盘的考验。

文章目录