根据特定的价格变化自动侦测极值点(基础篇)
📘

根据特定的价格变化自动侦测极值点(基础篇)

第 1/2 篇

「用价格变动自动抓极值点」

在 MT5 里做价格行为分析,第一步往往是把行情里的局部极值(摆动高点 / 低点)标出来。手工画费时且主观,用代码按「特定价格变化幅度」自动判定,能把这件事变成可复现的规则。 原文作者 Sergey Strutinskiy 于 2017-02-21 发布的方法,在发布后累计获得 8 876 次查看与 14 条讨论,说明这类基础极值侦测在实盘辅助中确有需求。 核心思路是:当价格自最近极值反向变动超过设定点数(或百分比)时,确认前一位置为极值点。外汇与贵金属波动剧烈、杠杆高风险大,参数过窄会频繁重画,过宽则滞后,建议开 MT5 用历史窗口先验证再上模拟盘。

◍ 为什么峰谷识别绕不开

头肩、双顶双底这类形态,本质都建立在图表极值点的准确提取上。手动标注时人眼能容忍模糊,但交给 EA 跑,差一根 K 线的拐点就可能让整组信号错位。 现有 MT5 内置工具(如 ZigZag 指标)按固定回调幅度过滤,无法按你自定义的判定标准稳定抓到想要的峰谷,自动化时经常漏点或多点。 本文给出的思路是:直接基于价格变动序列做极值判定与处理,不依赖现成指标。这样你能在回测里复现每一处拐点,概率上更可控,但外汇与贵金属杠杆高,模型错判仍会带来实亏。

现有极值点侦测工具的硬伤

分形(Fractals)在 MT5 里靠连续 5 根 K 线判定局部高低点,是很多交易者找极值的第一选择。它不挑趋势强弱都能标出极点,但若切到长期平盘,相邻极值的价格差往往不到 50 点,剧烈波动时短短几根 K 线内堆出的峰谷又只能被 5 柱窗口漏掉两个。实测趋势段里极值点间距能拉到 140–420 点,而平盘段普遍 ≤50 点,这种尺度落差让分形不能直接丢进 EA 当主侦测器。 换个思路用移动平均线做偏离过滤:设定价格离 MA 超过 N 点才算极值,微小峰谷确实被滤掉了。可问题没完——当两个极点离得近,MA 法会把它们合并成一个(图 2a);若遇极端烈度行情,贴近均线的谷值直接消失(图 2b)。把分形和 MA 叠用也只是缓解,参数区间仍得人工反复调,否则近距双极必漏一个。 外汇与贵金属杠杆高、滑点突发,这类漏判在实盘可能直接错位进场。现有开箱方案都有盲区,要靠更针对性的算法去补,后面就拆具体怎么补。

「极值点搜索里的三个乱局」

双顶形态在同一张图表上可能因为极值点选取范围不同而被识别或漏掉。图3里两图数据一致,区别只在相邻极值点的判定:若两峰之间无明确底部,系统只会把它当普通极点,双顶直接失效。 用极值点定义趋势方向时也一样分裂。图4的同一图表,取极点1-2-3-4看到的是多头推进,换2-5-6-3就变成了空头排列——变化范围对极点位置有最大话语权,这不是参数微调,是结论反转。 要有效分离两个顶部,中间必须有底部;否则策略标准再漂亮也跑不起来。核心假定是:价格无论朝未来还是过去看,都从顶到底、再从底到顶来回穿。丢掉这个假定,两个顶部可能被识别、只认最高顶、或全漏,底部同理。 从图表末端往回搜极点,最近的极点最重要。ZigZag的通病是最近极点位置不太跟最近波动走;若改从末端先定最近顶/底,其余极点就清晰了。但硬等极点确认会出延迟——价格要走完一个变化范围才「看到」极点。 折中办法是引一个额外比例(如0.5)当触发器:变化范围设140点,比例0.9时需涨落126点才认第一个极点,比例0.7时只需98点。图7实测,0.9下第一个底部距现价205点才确认,0.7下120点就确认,且后续极点按140点范围接续。比例越低,第一个极点越早——0.4比基准提前5根柱(本周期即5分钟)抓到。外汇与贵金属杠杆高,极点误判会直接放大止损滑点,参数请在MT5历史数据里先回测再上实盘。

常见问题

没有固定根数,核心看价格是否出现反向变动阈值;建议先用3~5点反向波动做初筛,再人工复核。
多数因未设最小变动过滤,把噪音当转折;加一个ATR或固定点值阈值可过滤掉大部分假极点。
可以,小布盯盘能按你设的变动阈值自动圈出近期峰谷,并提示是否出现背离或破位。
因为它们等形态走完才确认,天然慢半拍;用未闭合的变动侦测逻辑能提前1~2根K线预警。
指重复标记、跨周期冲突、噪音误判;统一周期、设变动门槛、合并邻近极点即可避开。