Supply Demand Zones Base Impulse ATR
- 指标
- 版本: 1.1
Supply & Demand Zones 按照一条固定且完全公开的规则,在 MetaTrader 5 图表上标出供给区和需求区:一根强K线(实体至少为 ATR 的 X 倍),其前方留下由小实体K线组成的短"基底"(base)。当强K线为阳线并收于基底上方时,该基底成为需求区;当强K线为阴线并收于基底下方时,该基底成为供给区。每个区域显示其状态:未触及(fresh)、已触及(附次数)或已突破(broken)。
本指标面向手动绘制此类区域、并希望每次都按同样方式绘制的交易者。本指标仅用于显示:不提供买入或卖出信号,也不下单。区域是根据过去K线得出的价格范围,并不预测价格会在该处停止或转向。
功能
- 按上述规则生成需求区和供给区,仅根据已收盘K线判断。区域一旦生成,其上沿、下沿和起点均不再移动。
- 每个区域带有标签:"Demand fresh"(需求区 未触及)、"Supply touched 2"(供给区 已触及 2 次)、"Demand broken"(需求区 已突破)。将鼠标悬停在区域上,可查看其价格、基底K线数量以及第一根基底K线的时间。
- 按状态着色:未触及、已触及、已突破(灰色轮廓)。已突破的区域默认隐藏,可设置为显示。
- 未被突破的区域向当前K线右侧延伸若干根K线;已突破的区域在突破它的那根K线处结束。
- 区域重叠时:较早的区域以填充显示,较新的区域以轮廓显示,使颜色保持易读。
- 可选一个更高时间周期(默认关闭)。其区域使用相同规则,以较粗的轮廓绘制,标签中带有时间周期,例如 "H4 Supply fresh"。
- 可选一种提醒(默认关闭):价格从区域外进入未触及的区域。支持弹窗、声音和推送通知。
- 标签颜色自动适应图表背景(也可指定一种颜色)。图表文字和提醒可用英语或日语(Auto 跟随终端语言)。
- 六个隐藏缓冲区,供 EA 使用(见下文)。
计算方法
- K线的真实波幅(True Range)= (最高价, 前收盘价) 中较高者 减去 (最低价, 前收盘价) 中较低者。
- ATR = 强K线之前 N 根K线真实波幅的简单平均值(不包括强K线本身)。
- 强K线:实体绝对值 |close - open| >= X x ATR。
- 基底:从强K线前一根K线开始向前计数,实体 <= Y x ATR 的连续K线,最多到最大数量为止。如果强K线前一根K线的实体不够小,则不生成区域。
- 区域上沿和下沿 = 基底K线的最高价和最低价(如果选择 "Bodies only"(仅实体),则为开盘价/收盘价中的最高值和最低值)。
- 需求区:强K线为阳线,且收于区域上沿之上。供给区:强K线为阴线,且收于区域下沿之下。
- 状态从强K线之后的K线开始判断:需求区在某根K线收于其下沿之下时为已突破,在某根K线的最低价触及其上沿时为已触及。供给区在某根K线收于其上沿之上时为已突破,在某根K线的最高价触及其下沿时为已触及。
- 触及次数 = 在前一根K线位于区域外的情况下进入区域的K线数量。"Fresh"(未触及)= 尚未被触及。
- 仅使用 "Bars to scan"(扫描K线数)范围内的K线。早于 "Remove zones older than N bars"(删除早于 N 根K线的区域)的区域会被删除。
主要参数
- 区域规则:ATR 周期(14)、强K线的 X(1.5)、基底K线的 Y(0.5,必须小于 X)、最大基底K线数(3,1-10)、区域边缘(含影线或仅实体)、扫描K线数(5000,300-100000)。
- 显示:每侧(需求/供给各自)显示的未突破区域数(5)、删除早于 N 根K线的区域(1000,0 = 不删除)、已突破区域(隐藏或以灰色轮廓显示)、每侧显示的已突破区域数(3)、向右延伸(10 根K线)、标签开/关、字号(8)、五种区域颜色、标签颜色(None = 自动)。
- 更高时间周期区域:时间周期(current = 关闭)、每侧显示的区域数(3)。
- 提醒:进入未触及区域(关闭)、弹窗、声音、推送、语言。
如果某个参数超出范围,指标不会加载,并将原因写入 Experts(专家)日志。
面向 EA 和 iCustom 用户
- 缓冲区:0 = 需求区上沿,1 = 需求区下沿,2 = 需求区触及次数,3 = 供给区上沿,4 = 供给区下沿,5 = 供给区触及次数。每根K线保存截至该K线收盘时已知的每一侧最新未突破区域;正在形成的K线重复最后一根已收盘K线的值。没有区域时(或最新区域早于 "Remove zones older than N bars")为 EMPTY_VALUE。
- 缓冲区只包含图表时间周期的区域。更高时间周期的区域不在缓冲区中。
- iCustom 参数:在指标名称之后,按以下顺序传入 30 个值,其中包括用于参数分组的 4 个空字符串:
"", ATR 周期, X, Y, 最大基底K线数, 区域边缘 (0 含影线, 1 仅实体), 扫描K线数,
"", 每侧未突破区域数, 删除早于 N 根K线的区域, 已突破区域 (0 隐藏, 1 显示), 每侧已突破区域数, 延伸K线数, 显示标签, 字号, 需求区未触及颜色, 需求区已触及颜色, 供给区未触及颜色, 供给区已触及颜色, 已突破颜色, 标签颜色,
"", 更高时间周期, 每侧更高时间周期区域数,
"", 进入时提醒, 弹窗, 声音, 推送, 语言 (0 自动, 1 英语, 2 日语).
- 通过 iCustom 调用时,只填充缓冲区:不绘制任何内容,也不发出提醒。
- 如果 EA 或脚本通过 ChartIndicatorAdd() 将其添加到图表,MetaTrader 5 会限制其功能:在该程序仍持有句柄期间,已绘制的区域可能留在图表上;在该程序运行图表以外的图表上,不绘制区域(缓冲区仍然可用)。
注意事项与局限
- 区域只在K线收盘时生成。正在形成的K线不会生成区域,也不会改变状态;在进入区域的那根K线收盘之前,标签保持 "fresh"。
- 提醒在每个报价时,根据最后一根已收盘K线时的区域进行检查,因此可能在标签仍显示 "fresh" 时发出。每个区域只提醒一次。刚加载后,第一个价格只会被记录。
- 重新加载后(新的历史数据、重新连接、更改 "Bars to scan"),计算会从范围内的第一根K线重新开始,因此图表最早部分附近的区域可能不同。近期的区域不受影响。
- 结果取决于参数设置和经纪商的价格数据:使用其他数值或其他经纪商可能得到不同的区域。
- 在横盘、清淡的行情中可能出现许多小区域;在强趋势中许多区域会在形成后不久被突破。触及次数和未触及状态只描述过去,并不代表任何结果的概率。
- 同一图表上的第二个及之后的副本只绘制轮廓,因此其区域不会抹去第一个副本的填充。
- 在策略测试器的可视化模式中,区域的绘制方式与图表上相同。测试器中不发出提醒。
- 设置了更高时间周期时,测试器日志中会出现 "history cache" 行。这些行由终端在加载该时间周期时写入,并非指标的错误。
- 较大的显示设置(例如每侧 50 个区域、显示已突破区域以及在 M1 上使用 100000 根K线)会使测试器运行明显变慢。默认设置负担较轻。
- 名称以 "SDZ#" 开头的对象属于本指标,并会随指标一起删除。以 "SDZ_" 开头的临时全局变量用于区分多个副本。不会更改图表设置。
兼容性与支持
- MetaTrader 5,任意交易品种和时间周期。MT4 版本是另一个单独的免费产品。
- 同一图表上可加载多个副本(例如使用不同的 X/Y 数值)。可配合模板使用,终端重启后仍然有效。
- 不使用 DLL,不访问互联网,不写入文件。
- 通过 MQL5 私信提供安装、设置和错误报告方面的支持。无法回答关于行情方向或具体交易的问题。
- 仅用于图表分析。本指标不进行交易,也不保证任何交易结果。过去的图表不保证未来的结果。
