在 MQL5 市场获取: Supply Demand RSJ PRO
风险提示。 交易存在亏损风险。本指标在图表上标记价格区域;它不预测市场,不下单交易,也不保证任何结果。请结合您自己的分析和风险管理使用,并先在模拟账户上测试。

Supply Demand RSJ PRO 根据波段高点和波段低点绘制供给区(supply)和需求区(demand),将每个区域分为五个等级(weak、strong、verified、proven、turncoat),统计价格回测该区域的次数,将被突破一次的区域翻转,并删除被突破两次的区域。重叠的区域可以合并,每个区域都可以带有文字标签,价格进入区域时可以触发警报。适用于任何交易品种、任何经纪商和任何时间周期。本指标不会开仓。
1. 安装与快速入门
- 在 MQL5 Market 购买或租用本指标,并在终端的 Market 选项卡中安装(Toolbox → Market → Purchased → Install)。
- 打开一个图表,从导航器(Indicators → Market)中将 Supply Demand RSJ PRO 拖到图表上。
- 保留默认参数或进行调整(第 11 节),然后点击 OK。
本指标分析最近 3000 根K线(参数 NUM CANDLES FOR ANALYSIS),并在每根新K线的第一个报价时重建所有区域;如果历史数据尚未就绪,会在随后的报价中重试。开启 Show Labels?(默认)时,会打开图表偏移(chart shift),让标签在最后一根K线右侧有显示空间;如果之前是关闭的,移除指标时会再次关闭(除非图表上仍有另一个副本)。
快速入门
- 查看标签上的等级:Proven 和 Verified 区域已经经受住回测,Strong 区域来自从未被回测过的主要波段,Weak 区域来自次要波段,Turncoat 区域被突破过一次并已转换方向。
- 标签默认颜色为黑色。在深色图表上,请修改 Labels Font Color(例如改为白色或银色)。
- 若想让图表更简洁,首先关闭 Show Weak Zones?。
- 若想在价格进入区域时收到提醒,请设置 Trigger Alert When Enter Zone?(第 10 节)。

2. 图表图例
| 图表上 | 含义 |
|---|---|
| 价格上方的填充矩形(深红 / 栗色 / 兰花紫 / 蓝紫) | 供给区。按等级着色:Verified 深红,Proven 栗色,Strong 兰花紫,Weak 蓝紫。 |
| 价格下方的填充矩形(绿色 / 宝蓝 / 橄榄绿 / 矢车菊蓝) | 需求区。按等级着色:Verified 绿色,Proven 宝蓝,Strong 橄榄绿,Weak 矢车菊蓝。 |
| 深橙色填充矩形 | Turncoat("已突破")区域:被突破过一次,现在在另一侧起作用(原供给区变为需求区,或反之)。 |
| 例如 Verified Demand Zone, Retests = 2 的文字 | 区域标签(可选),绘制在最后一根K线右侧、区域的上三分之一处。 |
每个矩形从形成它的波段所在K线开始,到当前K线结束。将鼠标悬停在矩形上可查看工具提示,例如 SDRSJ#123456#S4 Type = Verified, Test Count = 2 (S = 需求,R = 供给)。本指标的所有对象名称都以 SDRSJ# 开头,后跟一个每个指标副本各不相同的数字,并绘制在背景中、K线之后。
3. 区域如何出现

- 区域围绕在最近 NUM CANDLES FOR ANALYSIS 根K线中找到的市场转折点(波段高点和波段低点)绘制。
- 转折点只有在其右侧收盘若干根K线后才会确认,因此新区域会在转折发生几根K线之后出现,绝不会出现在正在形成的K线上。
- 开启 Extend Zones? 时,区域覆盖范围略大于转折K线的影线。
- ATR Factor 使区域变宽或变窄;分形系数决定转折需要多大才能生成区域(第 11 节)。
4. 区域等级

| 等级(标签) | 含义 | 默认颜色(供给 / 需求) | 过滤参数 |
|---|---|---|---|
| Weak(弱) | 来自次要转折的区域,从未被回测。 | 蓝紫 / 矢车菊蓝 | Show Weak Zones? |
| Strong(强) | 来自主要转折的区域,从未被回测、从未被突破 — 即未测试区域。 | 兰花紫 / 橄榄绿 | Show Untested Zones? |
| Verified(已验证) | 1 到 3 次回测。 | 深红 / 绿色 | 始终显示 |
| Proven(已证实) | 4 次或更多回测。 | 栗色 / 宝蓝 | 始终显示 |
| Turncoat(反转) | 被突破一次并转换方向,突破后尚无回测。 | 深橙 / 深橙 | Show Broken Zones? |
翻转后又被回测的区域会重新评为 Verified 或 Proven。新区域可能先显示为 Weak,在其转折被确认为主要转折后再变为 Strong。等级在每根新K线上更新。
5. 回测、突破与 Turncoat 区域

回测。 当价格之后在区域内、于区域起作用的一侧再次转折时,计为一次回测。
突破。 当之后的某根K线交易到供给区上沿之上(最高价高于上沿)时,供给区被突破;当某根K线交易到需求区下沿之下时,需求区被突破。影线也计算在内。
- weak 区域在第一次被突破时即被删除。
- strong、verified 或 proven 区域被突破一次后会翻转:变为另一侧的 turncoat 区域(被突破的供给区现在视为需求区,反之亦然),其回测计数重新从 0 开始。
- 中间没有回测的第二次突破会删除该区域。翻转后的回测会重置这一条件,因此一个被充分尊重的价位可以翻转不止一次。
Turncoat 区域以深橙色绘制(标签为 Turncoat),直到在新的一侧被回测为止。
6. 供给还是需求?
区域绘制为供给区还是需求区,取决于当前价格相对于区域的位置,而不是形成它的转折:位于价格下方的区域视为需求区,位于价格上方的区域视为供给区。因此,当价格穿过某个区域时,其方向可能会在几根K线之后改变。
7. 合并重叠区域

开启 Merge Zones?(默认)时,重叠的区域会合并为一个更宽的区域;回测次数合并计算,标签显示合并后的等级。
关闭此项可单独查看每个波段区域。
8. 标签
开启 Show Labels? 时,每个可见区域都会显示一个文字标签:等级 + 方向,verified 和 proven 区域还会附加回测次数,例如:
- Weak Supply Zone
- Strong Demand Zone
- Verified Supply Zone, Retests = 2
- Proven Demand Zone, Retests = 5
- Turncoat Demand Zone
标签使用 Courier New 字体、Labels Font Size(默认 9)和 Labels Font Color(默认黑色)。标签放置在当前K线右侧约两根K线处;为此指标会打开图表偏移。
9. 颜色

区域颜色在指标属性的 Colors 选项卡中设置(不在 Inputs 选项卡中)。每一项对应一个等级和一个方向:
| Colors 选项卡项目 | 用于 | 默认 |
|---|---|---|
| Broken Supply Zone | 显示为供给的 Turncoat 区域 | 深橙 |
| Proven Supply Zone | Proven 供给区 | 栗色 |
| Verified Supply Zone | Verified 供给区 | 深红 |
| Strong Supply Zone | Strong(未测试)供给区 | 兰花紫 |
| Weak Supply Zone | Weak 供给区 | 蓝紫 |
| Weak Demand Zone | Weak 需求区 | 矢车菊蓝 |
| Strong Demand Zone | Strong(未测试)需求区 | 橄榄绿 |
| Verified Demand Zone | Verified 需求区 | 绿色 |
| Proven Demand Zone | Proven 需求区 | 宝蓝 |
| Broken Demand Zone | 显示为需求的 Turncoat 区域 | 深橙 |
只使用颜色;样式和宽度不起作用。矩形为填充样式并绘制在背景中。
10. 警报

| 参数 | 触发条件 | 消息 |
|---|---|---|
| Trigger Alert When Enter Zone? | 当前 Bid 进入一个可见区域(下沿 ≤ 价格 < 上沿) | Entered into Demand Zone. 或 Entered into Supply Zone. |
模式:NONE(默认,无警报)、POPUP、SOUND、NOTIFICATION(手机推送)、POPUP_SOUND、NOTIFICATION_SOUND、POPUP_NOTIFICATION、POP_SOUND_NOTIFICATION。Trigger Alert Sound Type 用于选择终端的 13 种声音之一(默认 alert)。
消息文本包含产品名、交易品种和时间周期,例如 RSJ Supply Demand PRO: EURUSD | PERIOD_H1 | Entered into Demand Zone.
触发频率:
- 每个报价都会进行检查。警报在价格进入区域时触发一次;价格停留在区域内时不会重复。价格离开区域后,再次进入可以再次触发。
- 警报触发后,在距该警报经过 Delay between alerts (seconds)(默认 180)秒的时钟时间之前,进入区域的情况都会被忽略。延迟期间发生的进入会被跳过,不会稍后补发。
- 一次警报对应一个区域(找到的第一个价格刚刚进入的区域)。
- 只检查可见区域:被 Show ... Zones? 过滤器隐藏的等级不会触发警报。
- 如果加载指标时价格已位于区域内,或在重新计算时(例如出现新波段或发生合并)区域出现在价格周围,则不会发送警报。
推送通知需要在 Tools → Options → Notifications 中设置 MetaQuotes ID。声音模式播放声音时不会暂停指标。策略测试器中不显示弹窗、不播放声音、不发送通知。
11. 参数
以下标题是 Inputs 选项卡中的分隔行(无需设置任何值)。
ZONES_VIEW_CONFIG
| 参数 | 默认值 | 说明 |
|---|---|---|
| Show Weak Zones? | true | 显示 Weak 区域。 |
| Show Untested Zones? | true | 显示 Strong(未测试)区域。 |
| Show Broken Zones? | true | 显示 Turncoat 区域。 |
| Merge Zones? | true | 合并重叠区域(第 7 节)。 |
| Extend Zones? | true | 区域覆盖范围略大于转折K线的影线(第 3 节)。 |
Verified 和 Proven 区域始终显示。
ZONES_CALC_CONFIG
| 参数 | 默认值 | 说明 |
|---|---|---|
| NUM CANDLES FOR ANALYSIS | NUM_CANDLES_3000 | 搜索区域的K线数:NUM_CANDLES_500 至 NUM_CANDLES_5000,步长 500。 |
| ATR Period | 7 | 使区域大小适应该品种近期的波动性。 |
| ATR Factor | 0.75 | 数值越大,区域越宽,合并越多。 |
| Fast Fractal Factor | 3.0 | 生成区域的次要转折的规模:数值越大,只保留越大的转折。 |
| Slow Fractal Factor | 8.0 | 主要转折(Strong 等级)的规模:数值越大,只保留越大的转折。 |
分形系数按整数使用(3.5 按 3 处理;小于 1 的值按 1 处理)。
ZONES_LABEL_CONFIG
| 参数 | 默认值 | 说明 |
|---|---|---|
| Show Labels? | true | 绘制文字标签并打开图表偏移。 |
| Labels Font Color | Black | 标签颜色。 |
| Labels Font Size | 9 | 标签字号。 |
ALERT_CONFIG
| 参数 | 默认值 | 说明 |
|---|---|---|
| Trigger Alert When Enter Zone? | NONE | 警报模式(第 10 节)。 |
| Trigger Alert Sound Type | alert | alert, alert2, connect, disconnect, email, expert, news, ok, request, stops, tick, timeout, wait. |
| Delay between alerts (seconds) | 180 | 两次警报之间的最小间隔,以时钟秒计。 |
12. 供 EA / 仪表盘使用的缓冲区
本指标提供 8 个缓冲区,可通过 iCustom + CopyBuffer 读取。它们在数据窗口中隐藏。缓冲区 0-3 在新K线上重建区域时写入;缓冲区 4-7 在每个报价时更新。
| 缓冲区 | 内容 | 数值 | 空值 |
|---|---|---|---|
| 0 | 慢速波段低点 | 已确认的慢速(主要)波段低点所在K线上的最低价 | 0 |
| 1 | 慢速波段高点 | 已确认的慢速波段高点所在K线上的最高价 | 0 |
| 2 | 快速波段低点 | 已确认的快速(次要)波段低点所在K线上的最低价 | 0 |
| 3 | 快速波段高点 | 已确认的快速波段高点所在K线上的最高价 | 0 |
| 4 | 上方最近区域 - 上沿 | 完全位于 Bid 上方的最近可见区域的上沿(下沿最低的那个) | 0 |
| 5 | 上方最近区域 - 下沿 | 与缓冲区 4 同一区域的下沿 | 0 |
| 6 | 下方最近区域 - 上沿 | 完全位于 Bid 下方的最近可见区域的上沿(上沿最高的那个) | 0 |
| 7 | 下方最近区域 - 下沿 | 与缓冲区 6 同一区域的下沿 | 0 |
关于缓冲区 4-7 的说明:
- 它们在每个报价时以当前 Bid 写入 第 0 根K线。偏移 1 保留上一根K线的最后数值;更早的K线为 0 。
- "上方"和"下方"是相对区域边界而言,而不是区域方向:价格上方的区域通常是供给区,但也可能是价格刚刚向下离开的需求区(第 6 节)。只考虑完全位于价格上方或完全位于价格下方的区域:包含当前价格的区域不会被报告,缓冲区会显示其外侧的下一个区域。
- 只考虑可见区域(Show ... Zones? 过滤器生效)。
- 在全部四个缓冲区中, 0 表示"不存在这样的区域"。
波段缓冲区 0-3 在最后几根K线上为 0 :转折点只有在确认后才能得知。
加载。 Market 版本安装在 MQL5\Indicators\Market\ ;请在导航器中确认准确的文件名。名称后不带参数时使用默认参数。若要修改参数,请按第 11 节的顺序传入。每个分隔行(ZONES_VIEW_CONFIG、ZONES_CALC_CONFIG、ZONES_LABEL_CONFIG、ALERT_CONFIG)也是一个参数:请在其位置传入空字符串 "" ,否则后面的所有值都会错位。NUM CANDLES FOR ANALYSIS 以数字传入:0 = 500,1 = 1000 … 5 = 3000 … 9 = 5000。末尾省略的参数保持默认值。
```mql5 // "" = ZONES_VIEW_CONFIG, then show weak = false int h = iCustom(_Symbol, PERIOD_H1, "Market\Supply Demand RSJ PRO", "", false);
double up_top[1], up_bot[1], dn_top[1], dn_bot[1]; if (BarsCalculated(h) > 0) { if (CopyBuffer(h, 4, 0, 1, up_top) == 1 && CopyBuffer(h, 5, 0, 1, up_bot) == 1 && up_top[0] != 0.0) Print("nearest zone above ", up_bot[0], " - ", up_top[0]); if (CopyBuffer(h, 6, 0, 1, dn_top) == 1 && CopyBuffer(h, 7, 0, 1, dn_bot) == 1 && dn_top[0] != 0.0) Print("nearest zone below ", dn_bot[0], " - ", dn_top[0]); } ```
说明:通过 iCustom 创建的指标会以自己的对象名称在调用程序的图表上绘制区域和标签,因此不会删除手动加载的副本的区域;区域无法关闭,只能关闭标签(Show Labels? = false)。首次读取前请等待 BarsCalculated(h) > 0 (历史数据可能仍在加载)。区域的等级、方向和回测次数无法通过缓冲区获取 — 只能在图表上查看(标签和工具提示)。
13. 免费版与 PRO 版
免费的 Supply Demand RSJ Zones 以固定设置绘制同类区域。
| Supply Demand RSJ Zones(免费) | Supply Demand RSJ PRO | |
|---|---|---|
| 等级 | 2 个:strong(全色)和 weak(淡色) | 5 个:weak、strong、verified、proven、turncoat |
| 带等级和回测次数的标签 | — | 有 |
| 按等级过滤 | — | weak / 未测试 / turncoat |
| 合并与扩展开关 | 始终开启 | 开启 / 关闭 |
| 分析的K线数 | 300-1500(默认 1000) | 500-5000(默认 3000) |
| ATR 与分形设置 | 固定 | 可调 |
| 颜色 | 供给色和需求色,weak 色调自动生成 | 10 种颜色(等级 × 方向) |
| 警报 | — | 弹窗、声音、推送 |
| 缓冲区 | 8 个(相同布局);上方最近供给区 / 下方最近需求区,无则为 0 | 8 个;完全位于上方 / 下方的最近区域,无则为 0 (第 12 节) |
14. 使用技巧
- 减少杂乱: 关闭 Show Weak Zones?;再关闭 Show Untested Zones?,只保留已经经受住回测的区域(以及 turncoat 区域)。
- 更宽或更窄的区域: 调高或调低 ATR Factor。更宽的区域也更容易合并。
- 只看主要价位: 调高 Fast Fractal Factor,使只有较大的波段才会生成区域。
- 更高时间周期的背景: 在交易图表旁边的 H4 或 D1 图表上打开本指标;较高时间周期的区域不会绘制在较低时间周期上。
- 深色图表: 将 Labels Font Color 设置为浅色。
- 速度: 在许多图表上使用 5000 根K线可能会让终端在每根新K线时变慢;通常 1000-3000 根K线就足够了。
- 同一图表上的多个副本: 每个副本使用自己的对象名称,因此两个或更多设置不同的副本可以在同一图表上运行,互不删除对方的区域。只在一个副本上启用警报,以避免重复。
15. 常见问题与故障排除
- 会重绘吗? 波段在已收盘的K线上确认,且永远不会移动。但区域会在每根新K线上根据历史数据重建:只有在其转折点确认后区域才会出现,其等级可能变化(慢速波段确认时 Weak → Strong、回测增加、翻转),被突破两次时会被删除。正在形成的K线在下一根K线开盘前不会用于区域计算;警报和缓冲区 4-7 跟随实时 Bid。
- 看不到标签。 请检查 Show Labels? 和 Labels Font Color:黑色标签在黑色图表上看不见。
- 区域从供给变成了需求。 价格收盘穿过该区域使其变为 turncoat 区域,或者价格移到了区域的另一侧(第 6 节)。
- 区域消失了。 它在没有回测的情况下被第二次突破,或者是被突破一次的 weak 区域,或者早于 NUM CANDLES FOR ANALYSIS 的范围,或者其等级被过滤掉了。
- 为什么最后几根K线附近缺少 strong 区域? 主要转折需要更多已收盘K线才能确认;在此之前区域为 Weak — 若 Show Weak Zones? 关闭则会被隐藏。
- 警报多久来一次? 每次进入区域触发一次,价格停留在区域内时不会触发,且两次间隔不会短于 Delay between alerts (seconds)(第 10 节)。在短周期上可调大延迟以减少警报。
- 价格在区域内,但没有警报。 加载指标时价格已在区域内;重新计算时区域出现在价格周围;进入发生在上一次警报后的延迟期间;或者区域被 Show ... Zones? 过滤器隐藏(隐藏的区域不会报警)。
- 策略测试器。 可在可视化和非可视化模式下运行;测试器中不发送弹窗、声音和通知。
支持:请在 MQL5 上给作者发送私信。


