四分位侵入探测器EA:用自动化监控解放你的盯盘精力(基础篇)
📡

四分位侵入探测器EA:用自动化监控解放你的盯盘精力(基础篇)

(1/3)·手动盯四分位价位既费神又易漏单,这篇基础篇讲清EA如何自动捕获价格侵入信号

偏理论 第 1/3 篇
手动守着四分位水平等价格触碰,往往一眼没看住就错过关键反应区。很多人以为挂个警报线就够了,但上冲下探的延伸区根本不在普通预警范围内。外汇贵金属波动快、高风险,漏掉一次侵入可能就是一截不该吃的回撤。

用四分之一理论给EA装个侵入探测器

在价格行为工具包里引入四分之一理论后,下一步是把这套空间划分逻辑塞进EA,让它自动识别价格是否侵入了某个四分区间。这里说的侵入,不是简单突破,而是实体或影线真正踩进该区间并触发预期反应。 原文给出的探测器片段基于前一根K线的高低点做四分切割,再判断当前报价落在哪一段。外汇与贵金属杠杆高、滑点随机,任何区间判定都只是概率倾向,不能直接当成反转保证。

MQL5 / C++
class="type">class="kw">double q1 = (high[class="num">1]-low[class="num">1])/class="num">4.0; class="type">class="kw">double level1 = low[class="num">1]+q1; class="type">class="kw">double level2 = low[class="num">1]+class="num">2*q1; class="type">class="kw">double level3 = low[class="num">1]+class="num">3*q1; if(price>level2 && price<level3) intrusion=true;
上面四行先把前一根K线均分成四份,算出三个分界;最后一行判定报价是否落在第三四分区间(即上四分之一带),命中就置 intrusion 为真。开MT5把这段贴进EA的OnTick,接上日志输出,就能肉眼验证哪些K线真正触发了侵入。

MQL5 / C++
class="type">class="kw">double q1 = (high[class="num">1]-low[class="num">1])/class="num">4.0; class="type">class="kw">double level1 = low[class="num">1]+q1; class="type">class="kw">double level2 = low[class="num">1]+class="num">2*q1; class="type">class="kw">double level3 = low[class="num">1]+class="num">3*q1; if(price>level2 && price<level3) intrusion=true;

「从手盯四分位到EA自动盯盘」

上一篇文章里我们放过一款四分位绘图脚本,它把 Ilian Yotov 四分位理论里的价位水平直接画在 MT5 图表上,小四分位、大四分位、主要四分位、上冲与下探线一目了然。实操下来,这套画法确实把价格行为分析压到了更浅的认知负荷。 但真用起来有个坑:价格一旦触碰这些线,你得自己盯着、自己判断反应,耗时且容易漏。约托夫的理论把交互分得很细,人工监控长周期图表基本不可持续。 这次直接给个侵入探测器 EA,后台持续扫图表,价格碰任意一类四分位水平就触发,并按理论框架弹出即时评论,帮你预判市场可能的反应。外汇与贵金属杠杆高、假突破多,这类辅助只降低盯盘成本,不替代风控。 本文后面会先复盘绘图工具,再拆策略逻辑与 MQL5 实现,跑一轮测试看信号分布,最后捞几个关键注意点。

◍ 四分位工具在外汇上的实际反馈

四分位理论由伊利安·约托夫提出并引入交易界,上一篇文章已给出自动绘制脚本的实现细节,本小节不再重复。需要补一句前文没强调透的点:这套水平线对外汇货币对尤其贴合适配,是做汇率价格行为分析时很实用的参照系。 从已绘制的图例看,脚本稳定输出了大四分位、上冲、下探和小四分位四类价位。实盘观察中,价格反复在这些线附近出现停顿、反弹或加速,说明约托夫结构不是纸面模型。 外汇与贵金属杠杆高、波动突发行情多,四分位只作概率区参考,不能当成反转 guaranteed 位。开 MT5 加载上一节的绘图脚本,选 EURUSD 的 H1 图表跑一周,就能验证这些水平是否对你常做的品种有效。

用四分位框架把整数位变成可触发的警报线

侵入探测器 EA 的思路不复杂:把行情按 1000 点(pip)切成区间,以主要整数价位当骨架,再在大区间内标出 250 点间隔的大四分位,可选细化到小四分位,并画出上冲 / 下探带捕捉假突破陷阱。每来一个 tick,它就拿当前价对照这些关键位,在容差内「触及」就写进评论面板并报警,目标是在转折、突破或假突破肉眼可见前先亮灯。 外汇与贵金属波动快、杠杆高,这类预警只降低滞后,不消除方向误判风险;真要信它,先上 MT5 用历史 tick 回放验证触发密度。 代码头部用 #property 写死元数据并强制 strict 编译;输入参数里 MajorStep=0.1000 即定义 1000 点区间,AlertTolerance 默认 0.0025 控制「多近算触及」。布尔开关 DrawLargeQuarters / DrawSmallQuarters / DrawOvershootAreas 决定画不画辅助线,颜色与线型分开配,保证图表分层清楚。 全局布尔 intrusionAlerted 是关键防抖:同一价位侵入只响一次,避免价格贴线来回蹭就刷屏。DrawHorizontalLine 先删同名旧线再建新水平线;DrawQuarters 算完 MathFloor(price/MajorStep)*MajorStep 得下界,加 MajorStep 得上界,随后按开关铺大 / 小四分位和上下冲带。 OnTick 里先取 SYMBOL_BID,为 0 直接退出;调 DrawQuarters 重画后重建边界,拼一个「区域 / 价格 / 原因」三列表格,逐位做容差检查填行。没触发就写「盘整中」加当前价;触发且 intrusionAlerted 为假才 Alert 并置真。最后 CreateOrUpdateLabel 用 Courier New 等宽字更新面板,ChartRedraw 立即刷新。

MQL5 / C++
class=class="str">"cmt">//+------------------------------------------------------------------+
class=class="str">"cmt">//|                                              Intrusion Detector  |
class=class="str">"cmt">//|          Copyright class="num">2025, Christian Benjamin  |
class=class="str">"cmt">//|     [MQL5官方文档]  |
class=class="str">"cmt">//+------------------------------------------------------------------+
class="macro">#class="kw">property copyright "Christian Benjamin"
class="macro">#class="kw">property link      "[MQL5官方文档]
class="macro">#class="kw">property version   "class="num">1.0"
class="macro">#class="kw">property strict
input class="type">class="kw">double MajorStep          = class="num">0.1000;   class=class="str">"cmt">// Difference between Major Whole Numbers(defines the class="num">1000-PIP Range)

「把季度线参数调成自己的盯盘语言」

指标对外暴露的 input 参数,本质是让你把「大级别结构」翻译成肉眼可辨的图层。默认开启 DrawLargeQuarters 与 DrawOvershootAreas,关闭 DrawSmallQuarters——这意味着主图优先呈现大季度线与穿刺区,小季度线当作噪声默认隐藏,符合多数波段交易者的视野取舍。 AlertTolerance 设为 0.0025,即价格进入线位上下 25 点(以报价小数计,对多数直盘约 2.5 个点差阈值)内才触发「触碰」判定。这个值若放到 0.005,在黄金这种平均日波 1500 点的品种上会频繁误报,建议按品种波动率手动压到 0.001 附近。 配色与线型也暗含优先级:Major 线用深石板灰、线宽 4、实线;Large Quarter 用暗红、点线、宽 3;Overshoot 用红、虚线、宽 1。你在 MT5 里改完这些 input,不用动核心逻辑就能让支撑阻力层级一眼分清。 DrawHorizontalLine 这个函数负责清理同名旧线再建新线:先 ObjectFind 找 0 号图表里的对象,命中就 ObjectDelete;随后 ObjectCreate 以 OBJ_HLINE 在 0 号子窗口、时间参数填 0 建水平线,失败则 Print 报错名。复制这段代码到你的 EA 里,挂上不同 name 与 price 就能批量画线,省去手动拖拽。

MQL5 / C++
input class="type">bool   DrawLargeQuarters  = true;     class=class="str">"cmt">// Draw intermediate Large Quarter lines.
input class="type">bool   DrawSmallQuarters  = false;    class=class="str">"cmt">// Draw Small Quarter lines.
input class="type">bool   DrawOvershootAreas = true;     class=class="str">"cmt">// Mark overshoot/undershoot areas for Large Quarter lines.
input class="type">class="kw">double AlertTolerance     = class="num">0.0025;   class=class="str">"cmt">// Tolerance for detecting a "touch"

input class="type">class="kw">color  MajorColor         = 0x2F4F4F; class=class="str">"cmt">// Dark Slate Gray for Major lines.
input class="type">class="kw">color  LargeQuarterColor  = 0x8B0000; class=class="str">"cmt">// Dark Red for Large Quarter lines.
input class="type">class="kw">color  SmallQuarterColor  = 0x00008B; class=class="str">"cmt">// Dark Blue for Small Quarter lines.
input class="type">class="kw">color  OvershootColor     = clrRed;   class=class="str">"cmt">// Red for overshoot/undershoot lines.

input ENUM_LINE_STYLE MajorLineStyle       = STYLE_SOLID;
input class="type">int    MajorLineWidth                = class="num">4;
input ENUM_LINE_STYLE LargeQuarterLineStyle= STYLE_DOT;
input class="type">int    LargeQuarterLineWidth         = class="num">3;
input ENUM_LINE_STYLE OvershootLineStyle   = STYLE_DASH;
input class="type">int    OvershootLineWidth            = class="num">1;
input ENUM_LINE_STYLE SmallQuarterLineStyle= STYLE_SOLID;
input class="type">int    SmallQuarterLineWidth         = class="num">1;

input class="type">class="kw">string MajorSupportReason    = "Key support level. Break below signals range shift.";
input class="type">class="kw">string MajorResistanceReason = "Pivotal resistance. Breakout above may start new range.";
input class="type">class="kw">string LargeQuarterReason    = "Decisive break could trigger next class="num">250-PIP move.";
input class="type">class="kw">string OvershootReason       = "Test of breakout; reversal likely if momentum fails.";
input class="type">class="kw">string UndershootReason      = "Insufficient bullish force; possible bearish reversal.";
input class="type">class="kw">string SmallQuarterReason    = "Minor fluctuation.";
class=class="str">"cmt">// Global flag to avoid repeated alerts class="kw">while price lingers at a level
class="type">bool intrusionAlerted = false;
class="type">void DrawHorizontalLine(class="type">class="kw">string name, class="type">class="kw">double price, class="type">class="kw">color lineColor, class="type">int width, ENUM_LINE_STYLE style)
{
   if(ObjectFind(class="num">0, name) != -class="num">1)
      ObjectDelete(class="num">0, name);
   if(!ObjectCreate(class="num">0, name, OBJ_HLINE, class="num">0, class="num">0, price))
   {
      Print("Failed to create line: ", name);
把价位扫描交给小布盯盘
这些四分位侵入的诊断小布盯盘的 AIGC 已内置,打开对应品种页即可看到实时触碰标注,你只管判断该不该动手。

常见问题

该理论由伊利安·约托夫提出,尤其适用于货币对,对外汇交易者参考价值更高,贵金属也可借用其心理价位结构做辅助判断。
大四分位以250点区域划分主要框架,小四分位是更细粒度的辅助水平,可在设置中启用,用于捕捉更密集的价位反应。
可以,小布盯盘对应品种页已内置四分位水平与侵入检测的可视化,不必自己跑EA也能看到价格触碰提醒。
它们捕捉可能误导交易者的价格延伸情况,EA会单独标记,帮助区分真实突破与假突破性质的刺探。
容差决定价格距水平多近算触发,需结合品种点值和流动性调整,设太窄易漏、太宽易噪,回测后定比较稳妥。