序列块检测器
其背后的原理
在强劲的推动行情出现之前,通常会出现一根走向“相反”方向的最后一根K线——即价格飙升前的最后一根卖出K线,或是价格暴跌前的最后一根买入K线。 该K线被视为推动行情的订单流“足迹”:其所占据的区域,很可能是突破前大额头寸建仓的位置。 该指标通过三个步骤将这一检测过程系统化:确认真实的分形波动点;观察收盘价是否通过实心冲动K线(而非微弱的十字星推动)果断突破其中一个波动点;然后从该突破点向后追溯,找出最后一支反向K线——该K线的波动范围即构成“订单区块”。
与本系列中的缺口和流动性清扫检测器类似,这里的区域是真正动态的: 在未被突破的情况下,该区域会持续向前延伸至当前K线;一旦价格回调至该区域内,该区域便会精确地锁定在该K线上并(默认)变为灰色——因此,您一眼就能分辨出哪些区域尚未“被测试”,哪些区域已被重新触及。
如何解读
- 看涨订单区块(默认绿色/白色)——在价格冲高收于近期震荡高点之上之前,最后一根收盘价下跌的K线。未被测试的“供应转需求”区域;通常被视为回调时的潜在支撑位。
- 看跌订单区块(默认红色)——在价格以推动浪收盘跌破近期震荡低点之前,最后一根收盘价上涨的K线。未被测试的需求转为供应;通常被视为反弹时的潜在阻力位。
- 延伸(彩色)区域—— 尚未被中和;当启用InpExtendUntilMitigated(默认)时,其右边缘会实时向前移动;若禁用该设置,则在经过固定的InpExtendBars 根K线后停止移动。
- 冻结的灰色区域——价格已回调至该区域内——该订单区块已被化解,其框线在该K线处精确停止。将InpHideMitigatedOBs 设为“删除”可移除已化解的区域,而非仅将其灰显。
- “突破”K线与订单区块本身的区别——订单区块是指与之相对的K线,而非推动性K线;推动性K线仅用于确认结构突破,绝不会作为区域本身被绘制出来。
外部变量(输入)
| 输入 | 默认值 | 用途 |
|---|---|---|
| InpSwingLookback | 5 | 候选K线两侧各需多少根K线,才能将其确认为震荡高点/低点。 |
| InpMinBreakPoints | 30 | 收盘价必须突破摆动水平线至少多少点(以点为单位),才算作真正的结构突破。 |
| InpMinImpulseBodyPercent | 50.0 | 突破K线必须具备的最小实体占波动范围的百分比——用于过滤掉弱势且影线过长的“突破”。 |
| InpMaxSearchBarsForOB | 10 | 从突破K线开始向后搜索多少根K线,以查找相反方向的订单阻挡K线。 |
| InpUseBodyOnly | false | 在计算区域时,仅使用订单块K线的实体部分,而非其完整的最高价-最低价影线范围。 |
| InpMinZoneSizePoints | 30 | 检测到的订单区块被绘制所需的最小区域大小(以点为单位)。 |
| InpMaxOBsToTrack | 30 | 图表上同时保留的订单区块最大数量;每当有新的订单区块超过此上限时,系统将移除最旧的那个被追踪的区块。 |
| InpExtendUntilMitigated | true | 当为 true 时,未缓解区块的区域会实时延伸至当前K线;当为 false 时,会在经过固定数量的K线后停止延伸。 |
| InpExtendBars | 40 | 固定的延伸长度(以K线为单位),仅在 InpExtendUntilMitigated 为 false 时使用。 |
| InpRequireFullCloseForMitigation | false | 当为 true 时,K线必须收盘于该区域内才能消除该区域;当为 false 时,任何触及该区域的影线即可。 |
| InpHideMitigatedOBs | false | 当设置为 true 时,阻挡区的区域会在被缓解的瞬间被删除,而不是变灰并保留。 |
| InpBullishOBColor / InpBearishOBColor | 柠檬黄 / 红色 | 未被缓解的多头和空头订单区块区域的颜色。 |
| InpMitigatedColor | 暗灰色 | 区域一旦被缓解(且未被隐藏)后,其颜色将变为该色。 |
| InpFillBox | true | 顺序阻挡区域是填充还是仅绘制轮廓。 |
| InpBoxStyle / InpBoxWidth | 实心 / 1 | 每个区域的边框样式和宽度。 |
| InpShowLabels | true | 在每个订单块旁边显示一个包含该区域价格的文本标签。 |
推荐用途
适用于任何符号和任何时间周期;结构突破和订单区块的概念是纯粹的价格走势,没有任何针对特定符号的假设,但与任何分形枢轴方法一样,InpSwingLookback 像本系列中的“流动性扫荡检测器”一样,在水平重要性和检测频率之间进行了权衡。 根据设计,结构突破和缓冲均仅针对完全收盘的K线进行评估,因此当当前K线的高点/低点/收盘价仍在变化时,订单区块不会在K线形成过程中出现或消失。
InpMinImpulseBodyPercent 的存在正是为了避免将微乎其微的收盘价标记为“突破”——那些仅以长影线和短实体勉强触及摆动价位的K线将被排除,因为这更接近于噪音而非真正的价格位位移。 在非常长的图表历史数据中,InpMaxOBsToTrack 会限制对象数量,而非让每个历史订单块无限期累积。该指标仅读取价格数据,绝不会下单、修改或平仓,因此可在任何账户类型上安全运行。
所有图表对象均以单一内部名称前缀创建,并在指标被解除绑定时,通过 OnDeinit() 中的 ObjectsDeleteAll() 函数被彻底清除,因此不会在图表上留下任何残留。

图 1. XAUUSD M15 图表上由冲动性突破K线确认的看涨订单块,随后该趋势被缓解。根据代码库图像指南(750×500 像素)以黑白形式呈现。
由MetaQuotes Ltd译自英文
原代码: https://www.mql5.com/en/code/76878
经纪商分析工具
打印导致同一EA在另一家经纪商处表现不同的符号属性:交易时间、合约规模、点值、点差统计数据、掉期成本以及真实交易时段覆盖范围。仅供查阅,不进行交易。
Market Structure Swing Map MT5
一款清晰的MT5市场结构指标,可直接在图表上标注已确认的HH、HL、LH和LL波动点。