Supply Demand Zones Base Impulse ATR MT4
- 指标
- 版本: 1.1
您是否手动标记供给区和需求区,而每次结果都略有不同?这款免费的 MetaTrader 4 指标按照一条固定规则绘制这些区域,规则全文写在下方,您可以自行核对每一个区域。
思路:一根强K线(实体至少为 ATR 的 X 倍)在其正前方留下由 1 到 10 根小K线组成的"基底"(base)。收于基底上方的阳线强K线使该基底成为需求区;收于基底下方的阴线强K线使该基底成为供给区。本指标只显示这些区域。它不提供买入或卖出信号,不下单,区域也不代表价格会在该处产生反应。
计算方法
1. K线的真实波幅(True Range)= max(high, previous close) - min(low, previous close)。
2. ATR = 强K线之前 N 根K线真实波幅的简单平均值(不包括强K线本身)。
3. 强K线 = |close - open| 至少为 X x ATR。
4. 基底 = 紧邻强K线之前、实体不超过 Y x ATR 的连续K线,向前计数,最多到最大数量。强K线正前方没有小K线 = 不生成区域。
5. 边缘 = 基底K线的最高价和最低价;选择 "Bodies only"(仅实体)时仅使用开盘价/收盘价。
6. 方向:阳线强K线收于上沿之上 = 需求区;阴线强K线收于下沿之下 = 供给区。
7. 从下一根K线开始:收盘价越过远端边缘(需求区为下沿之下,供给区为上沿之上)时,该区域标记为已突破。K线触及近端边缘计为一次触及,每次到访只计一次(前一根K线必须位于区域外)。
所有判断都基于已收盘K线。区域生成后,其价格范围和起始时间保持固定;只有状态会变化(fresh 未触及、touched N 已触及 N 次、broken 已突破)。
功能
- 区域标签,例如 "Demand fresh"、"Supply touched 3" 或 "Supply broken",以及显示两个价格、基底大小和基底起始时间的提示框。
- 未触及区域和已触及区域使用不同颜色;已突破区域可隐藏或以灰色轮廓显示(由您选择)。
- 两个区域重叠时,较早的区域保留填充,较新的区域变为轮廓。
- 更高时间周期区域:可选择一个高于当前图表的时间周期(默认关闭)。这些区域以粗轮廓绘制,并标注时间周期,例如 "D1 Demand touched 1"。
- 价格从区域外进入未触及区域时发出提醒,每个区域一次(默认关闭):弹窗、声音和/或推送。
- 标签颜色自动适应浅色和深色图表背景。英语或日语文字。
主要参数(按 MT4 对话框中显示的名称)
ATR period 14 | Strong bar X 1.5 | Base bar Y 0.5(须小于 X) | Base bars max 3 | Zone edges: wicks | Bars to scan 5000 | Unbroken zones per side 5 | Remove zones older than 1000 bars(0 = 不删除) | Broken zones: hide | Broken zones per side 3 | Extend right 10 bars | Labels on, size 8 | Colors: demand fresh, demand touched, supply fresh, supply touched, broken, label(None = 自动) | Higher timeframe: current(= 关闭) | HTF zones per side 3 | Alert on entering a fresh zone: off | Pop-up on, sound off, push off | Language: Auto
超出对话框中所示范围的数值会导致指标无法加载。
供 EA 使用的缓冲区
六个隐藏缓冲区:0 需求区上沿,1 需求区下沿,2 需求区触及次数,3 供给区上沿,4 供给区下沿,5 供给区触及次数。每根已收盘K线保存该收盘时刻每一侧(需求/供给)最新的未突破区域;shift 0 重复 shift 1 的值。没有区域(或区域早于保留期限)= EMPTY_VALUE。仅保存图表时间周期的区域;不保存更高时间周期的区域。
在 iCustom 中按对话框的顺序传入 26 个参数,然后传入缓冲区编号和 shift:
ATR 周期, X, Y, 最大基底K线数, 区域边缘 (0 含影线 / 1 仅实体), 扫描K线数, 每侧未突破区域数, 保留期限, 已突破区域 (0 隐藏 / 1 显示), 每侧已突破区域数, 延伸K线数, 显示标签, 字号, 六种颜色, 更高时间周期, 每侧更高时间周期区域数, 进入时提醒, 弹窗, 声音, 推送, 语言 (0 自动 / 1 英语 / 2 日语)。
通过 iCustom 调用时,指标不绘制、不使用计时器,也不发出提醒;只填充缓冲区。
注意事项与局限
- 正在形成的K线已进入的区域,在该K线收盘前仍显示 "fresh";触及在收盘时计入。
- 提醒本身逐个报价根据最后一根已收盘K线的区域进行检查,因此可能在标签变化之前到达。加载后的第一个价格只会被保存,不会提醒。
- 只计算最近 "Bars to scan" 根K线。MT4 重新加载图表时(更多历史数据、重新连接、新的参数值),扫描会重新开始,因此最早的区域可能有所不同;近期区域保持不变。
- 不同的参数或不同经纪商的价格会得到不同的区域。平静的横盘行情可能产生许多小区域,而在强趋势中区域常常很快被突破。
- 未触及状态和触及次数是历史记录,不是概率。
- 同一图表上的第二个副本只绘制轮廓,因此不会抹去第一个副本的填充。
- 策略测试器:在可视化模式中,区域的绘制方式与实时图表相同;测试器中不发出提醒。更高时间周期区域可能使测试器日志打印终端自身的 "history cache" 消息,这些并非指标错误。非常大的显示设置会使测试器变慢。
- 图表对象使用前缀 "SDZ#";临时全局变量使用 "SDZ_"。两者都会在移除时清理。图表设置保持不变。
兼容性与支持
- 仅限 MetaTrader 4(另有 MT5 版本单独提供,同样免费)。任意交易品种、任意时间周期;可配合模板使用,重启后仍然有效。
- 不使用 DLL,不连接互联网,不使用文件。
- 关于安装、设置或错误的问题:请发送 MQL5 私信。行情预测和交易建议不在支持范围内。
- 本指标是图表辅助工具。它不保证任何交易结果,过去的图表走势不保证未来的走势。
