我之前在 CodeBase 上发布的文章《SMC 回调指标》回答了一个问题:哪些高点和低点才真正重要? 该文章特意止步于此,说明中也明确指出——没有 HH/HL 标签、没有 BoS、没有 CHoCH、没有 IDM。这些都是独立的步骤,首先需要一套可靠的波动数据。
本指标正是这一后续步骤。 它按照“聪明钱概念”(SMC)的描述标记市场结构,并采用相同的回调检测器——该类在此未作任何 修改,因此该文件可独立运行,无需安装任何依赖项——并在其基础上构建市场结构:一个趋势、一个实时高点、一个实时低点,以及推动它们变动的四个事件。BoS、CHoCH、IDM 以及标记为“x” 的流动性扫荡。
| 元素 | 外观 | 含义 |
|---|---|---|
| 回调锯齿线 | 细而淡的线 | 根据回调规则找到的每个波段。这是原始数据,刻意设计得较为隐约——它代表的是市场背景,而非交易信号。 |
| 结构锯齿线 | 粗金线 | 仅包含结构实际采用的高点和低点。这是浅色线条中的一小部分。 |
| 结构标记 | 上方/下方的箭头 | 结构的高点和低点本身。 |
| BoS | 虚线,绿色 | 结构突破——该价位是顺应 趋势形成的。 |
| CHoCH | 虚线,红色 | 走势特征转变 — 该价位是在逆势情况下 被突破的。趋势在此处发生逆转。 |
| x | 实线,紫色 | 流动性清扫——该价位仅被一根影线触及,随后价格反向走动。 |
| IDM | 虚线,蓝色 | 诱因——回调位,其被突破将确认新的结构极端点。 |
每条事件线都是水平的,从设定该价位的K线 延伸到触及该价位的K线,因此线的长度告诉你该价位维持了多长时间。
简而言之,因为前一条目 中已详细记载:只有当价格回调至形成该高点的K线低点下方时, 该高点才成为一个波段。形态本身并不决定任何结论——波段是一种事件,而非几何图形,正因如此,它才具有时间戳。
该层面的两个特性对后续分析至关重要:
这两个层级均以单根收盘K线为单位逐一处理,回调优先,结构次之——因此当结构层评估某根K线时,它已知晓该K线上所有已确认的波动。
结构层仅包含三项内容:
| 状态 | 含义 |
|---|---|
| 趋势 | 无、上涨 或下跌 |
| 结构高点 | 当前唯一重要的高点——突破该水平将预示看涨 |
| 结构低点 | 当前唯一重要的低点——跌破该水平将转为看跌 |
该结构基于首次回调高点和首次回调低点 生成,且趋势设置为“无”。从那一刻起,回调层将不再向结构中写入数据——它仅提供下文所述的参考位。
这一唯一区别产生了四种事件类型中的三种:
A level is broken only when a candle closes beyond it. A candle whose wick alone goes beyond it has swept it.
因此,对于每根收盘K线,在趋势和两个水平位保持不变的情况下:
| 趋势 | K线走势 | 事件 |
|---|---|---|
| 无 | 收盘价高于高点 / 低于低点 | BoS— 趋势转为上涨/下跌 |
| 上涨 | 收盘价高于 结构高点 | BoS— 趋势延续,维持上涨 |
| 上涨 | 收盘价低于 结构低点 | CHoCH— 趋势转为下跌 |
| 下跌 | 收盘价低于 结构低点 | BoS— 趋势延续,维持下跌趋势 |
| 下跌 | 收盘价高于 结构高点 | CHoCH— 趋势转为上涨 |
| 任何 | 影线超出某个水平后,收盘价又回到该水平内 | 扫盘候选——已记下,尚未绘制 |
| 任何 | 始终维持在两个价位区间内 | 无 |
因此,BoS和CHoCH是同一事件——即突破某个价位。唯一决定其标签的因素是:该突破是否符合已形成的趋势。在尚未形成趋势的情况下,根据定义,首次突破即为BoS,因为此时尚无趋势特征可供改变。
穿透价位的影线本身并不 构成独立事件。它会被记录下来并处于待定状态,因为此时情况尚不明确——价格可能只是在下一根K线收盘时穿透该价位,这种情况下,它只是正在形成的普通突破,而非“扫价”。
只有当后续突破发生在相反 方向时,它才成为“x”。在上升趋势中的经典序列如下:
移动高点正是整个操作的核心。反转的起点是扫过K线,而非其穿过的旧高点,此后推导出的每个水平位都应以此为基准进行测量。
X线 从设定该价位的K线延伸至其影线触及该价位的K线,并以旧价位的价格 绘制——这就是当时积聚在该价位的流动性。看跌情况则完全相反:影线位于结构低点下方,随后收盘价高于结构高点。
以下三条规则确保其有效性:
一次突破解答了一个问题,却又引发了另一个问题。当价格在上升趋势中收盘高于结构高点时,你便知道发生了BoS——但你尚不清楚 新高点位于何处。价格仍在运行。若将突破K线视为新高,那么当下根K线收盘价更高时,这一判断便会失效。
诱因 便是答案。在BoS发生的那一刻:
此时,将绘制虚线IDM线——从设定该IDM的回调点延伸至穿透该IDM的K线——并显示结构高点标记。这两者总是同时出现,这使得IDM线成为验证该逻辑的有效依据:每个结构高点都应有一条IDM线,其终点位于该高点标记出现的K线处。
看跌情况则恰好相反:在看跌突破后,IDM即为回调中的最高 点,而触及该点则确认了新的结构低点,即该走势中的最低点。
当极端点位尚未形成时,结构的该侧不存在支撑位,因此只有相反一侧可能被突破。这并非需要规则来规定,而是设计使然:IDM始终位于结构低点处或其上方,因此价格必须先触及IDM——从而确认高点——才能触及低点。
结构点必须交替出现,这与回调层完全一致。连续出现两个高点即为链条断裂,而非结构。
看涨突破正朝着形成新高 迈进。如果链条中的最新点位已经是高点,则两者之间缺少一个低点,因此指标会选取该高点与突破K线之间的最低低点,并首先将其发布。如果最新点位已经是低点,则链条交替排列,无需插入任何内容。
这一条规则涵盖所有情况:既包括已确立趋势中的BoS,也包括CHoCH,以及种子点后的首次突破。看跌情况则与此相反——即扫过区间内的最高高点。
| 情况 | 解决方式 |
|---|---|
| 单根K线既触及IDM又 收盘突破相反方向的价位 | 按此顺序解读:先确认极端点,再记录突破。这正是“扫过区域后出现CHoCH”的情形,且顺序至关重要。 |
| 待确认的极端值永远无法得到确认,因为价格先向相反方向突破 | 已追踪的极端值按其当前位置发布,随后处理突破。没有任何数据丢失,链条仍保持交替。 |
| 突破K线本身会回调至IDM | 确认绝不会发生在突破K线上。最早可能发生在下一根K线上。 |
| 此时尚无回调可作为IDM | 取而代之的是使用该侧的当前结构级别。这仅发生在图表中最古老的K线中。 |
回调层不会重绘,其本身没有任何变化。
结构层会重新绘制,但这并非缺陷——这正是该方法的特性。有两点会发生变化:
一旦极端点通过其IDM得到确认,且没有针对它的待处理“扫除”操作,该点即被确定。事件——BoS、CHoCH、x、IDM——均为“仅追加”类型,绝不会移动。
若在此基础上进行构建,请将结构点视为临时点,直至其IDM线出现;并将事件视为稳定记录。仅对已收盘的K线进行评估;正在形成的K线则完全忽略。
| 输入 | 默认 | 功能说明 |
|---|---|---|
| 首先寻找 | 寻找震荡高点 | 即第一波段的搜索方向。仅影响图表上最旧的K线。 |
| 回调突破由以下条件确认 | K线影线 | 该指标 的灵敏度控制。K线影线是Trading Hub的字面规则。收盘价模式 会产生较少但幅度更大的回调——因此结构性走势也会更少但幅度更大。建议在M1–M15时间周期或黄金、指数差价合约等波动剧烈的标的上切换至此模式。 |
| 输入 | 默认 | 功能说明 |
|---|---|---|
| 当参考值达到以下水平时确认极端值 | 影线 | IDM 必须如何被触发。“Wick”(影线)指价格触及该点位;“Close”(收盘)则要求收盘价穿透该点位,这虽能在后续确认极端点位,但会过滤掉诱导行情中的浅层试探。 |
| 检测流动性扫盘 | true | 对于简单结构,请关闭此功能:此时价位仅由收盘价确定,不包含x值,且点位绝不会重新定位。此设置有助于将两种读数并排比较。 |
系统中没有任何周期、深度或灵敏度设置——该结构本身不具备任何参数。若需更大规模的结构,请延长时间周期或将回撤规则切换为“收盘价”。
| 分组 | 控制内容 |
|---|---|
| 回调锯齿线 | 底层微弱的波动——颜色、样式、宽度,或完全关闭。 |
| 结构锯齿线 | 黄金结构线。 |
| 结构标记 | 结构高点/低点处的箭头:Wingdings代码及距K线的像素距离。当箭头关闭时,缓冲区仍保持填充状态,因此iCustom仍 能显示所有内容。 |
| 分隔线 | 为 BoS、CHoCH、x 和 IDM 设置独立颜色,并调整线宽和图例。在图表内容密集时关闭图例,保留颜色作为图例键。 |
结构事件触发时的弹出窗口和推送通知。这些通知仅在实时更新时触发,绝不会在加载历史数据期间触发,且每个事件仅触发一次。
五个缓冲区。空值为0.0。
| 缓冲区 | 内容 |
|---|---|
| 0 | 结构高点 价格 |
| 1 | 结构价格低 |
| 2 | 每根K线的趋势:1 上涨,-1 下跌,0 无趋势 |
| 3 | 确认回调高点 的价格 |
| 4 | 已确认回调低点 的价格 |
int h = iCustom(_Symbol, _Period, "SMC_MarketStructure");
double trend[];
CopyBuffer(h, 2, 0, 1, trend); // 1 = up, -1 = down, 0 = none 缓冲区2 在每个 K 线(包括正在形成的 K 线)上都会被填充,因此以偏移量0 读取它时,始终会返回当前趋势。其余四个缓冲区本质上是稀疏的。
这两个引擎都是自包含类,不依赖缓冲区或图表——CPullbackDetector 接收价格数组并报告已确认的波动,CMarketStructure 接收K线以及这些波动,并报告点链和事件列表。 如果您不想通过iCustom 进行处理,可以将这两个引擎直接复制到 EA 中,iCustom 也会为您提供这些事件——这些事件不会通过缓冲区暴露出来。
它仅止步于市场结构分析。不处理订单区块、公允价值缺口、溢价/折价区,也不提供入场点或HH/HL/LH/LL标注。这些功能都需要先有一个可靠的趋势和一组可靠的价格水平作为基础——而这正是该引擎所提供的,它做出的每一个决策都会以一条线的形式显示在图表上,供您核查。
由MetaQuotes Ltd译自英文
原代码: https://www.mql5.com/en/code/78245
VelaMayor MTF - Higher Timeframe Candle Overlay
将更高时间周期的K线直接叠加到较低时间周期的图表上,支持自定义实体填充、独立边框和精确的影线。 无需切换屏幕,即可轻松识别宏观走势倾向、交易时段开盘价及流动性区间。 超轻量级引擎,具备独立的框边界和稳如磐石的图表变更自动恢复功能。
Margin Risk Simulator
显示当前交易品种在账户达到保证金追缴和强制平仓时的价格,并提供额外交易量的模拟模式,包括可追加的最大交易量以及在此过程中触发的挂单。
QCL Heikin Flow MT5
QCL Heikin Flow 对 Heikin Ashi 蜡烛图应用了两阶段平滑处理,帮助交易者过滤价格噪音并直观呈现趋势方向。该指标具有可调节的平滑周期、四种移动平均线计算方法以及可自定义的蜡烛图颜色。
离散
离散技术指标由价格和交易量的变化决定。