TriZone Semafor Pro MT4
- 指标
-
Ahmed Hamed Hamed Eadwan
CHINESE TRANSLATION — 中文
============================
TITLE:
MQL5 开发者与交易者 | R protocols 创始人
ABOUT:
您好,我是 Ahmed,来自阿拉伯联合酋长国的交易者和 MQL5 开发者,
R protocols 的创始人。
我自 1984 年开始编写代码,自 2006 年开始交易市场。
多年来,我为自己开发交易工具,通过真实市场经验不断完善它们。
现在,我将这些工具与 MQL5 社区分享。 - 版本: 1.0
- 激活: 5
TriZone Semafor — 3级独占信号 ZigZag(独立运行 — 内置 ZigZag,无外部指标)
如果你曾经目眺过满屏 ZigZag 箭头的图表,并想知道哪些才真正重要 — 这个指标就是为这种困惑而生。
TriZone Semafor 同时运行三个独立的 ZigZag 算法:快速(周期 5)、中速(周期 13)和慢速(周期 34)。当它们在同一根K线上检测到枢轴时,只有最重要的信号存活下来。3 级始终覆盖 2 级。2 约始终覆盖 1 约。每根K线每个方向只有一个清晰的箭头 — 没有叠加,没有重复计数。
为什么用三个约别而不是一个
单个 ZigZag 对所有振荡一视同仁。同一个指标用相同的箭头标记两根K线的回调和重大趋势反转。TriZone 按重要性对每个枢轴进行分类,让你一眼就能读懂图表的层级结构。
- 1 约 — 快速: 小幅回调和次要枢轴。结构之下的结构。
- 2 约 — 中速| 日内振荡和有意义的反应。你的交易日记引用的枢轴。
- 3 约 — 慢速: 重大结构性转折。趋势延续真正受到质疑的点。
每个约别有自己的箭头形状和颜色,让你瞬间看到层级,无需查阅图例。
独占信号系统
每根K线都通过一条规则:如果更高约别在该根K线上声明了枢轴,所有较低约别的声明都被移除 — 不是隐藏,是移除。这在指标缓冲区内就已完成,在任何内容到达图表之前。图表反映的是真实状态,而不是分层叠加。
防重画模式
当 AntiRepaint = ON 时,信号只有在配置的确认样线数过后才会绘制。你看到的箭头已经通过了稳定性窗口,不会移动。指标在图表标题栏显示当前模式和确认深度 —对你所看的内容完全透明。
当 AntiRepaint = OFF 时,信号立即出现在正在形成的K线上。适用于可视参考。不推荐用于自动化逻辑。
提醒系统
提醒在计算期间排队,只有在独占性通过确认信号存活后才发送。你永远不会收到一个 1 约信号的弹窗,而它随后被 3 约覆盖。一个确认的枢轴 — 一个提醒。可按级别独立配置。
包含内容
- 三个 ZigZag 检测约别,参数完全独立
- 缓冲区级别的独占信号优先权 — 每根K线最高约别获胜
- 仅在确认枢轴上的彈窗提醒 — 没有幻影提醒
- 防重画模式,可按约别配置确认样线
- 任何品种,任何时间框架 — MetaTrader 4
- 单文件 — 零外部依赖,无 DLL,无自定义 includes
推荐起点
用默认参数打开 H1 或 H4。默认深度 5 / 13 / 34 遵律标准 Fibonacci 序列 — 对大多数品种和时间框架都是自然的适合。
3 约枢轴是你的结构参考。2 约是你的日内参考点。1 约显示之间的次要结构。调整深度 (Period) 和确认样线 (ConfirmBars) 以适应你的风格。
兼容性
MetaTrader 4 — 任何经纪商,任何品种,任何时间框架。无外部库。无 DLL 导入。单个 .ex4 文件,完全独立。
iCustom 参考 — TriZone_Semafor
输出缓冲区
独占性已由指标实现。
每根K线只有最高的活动约别非空。
EMPTY_VALUE = 该样线/约别无枢轴。
当 AntiRepaint ON 时,在 shift >= max(ConfirmBars1, ConfirmBars2, ConfirmBars3) 处读取 — 默认:shift >= 4。
| 缓冲区 | 索引 | 信号 | 内容 |
|---|---|---|---|
| BufLow1 | 0 | BUY | 1 约低枢轴价 — 快速 ZigZag |
| BufHigh1 | 1 | SELL | 1 约高枢轴价 — 快速 ZigZag |
| BufLow2 | 2 | BUY | 2 约低枢轴价 — 中速 ZigZag |
| BufHigh2 | 3 | SELL | 2 约高枢轴价 — 中速 ZigZag |
| BufLow3 | 4 | BUY | 3 约低枢轴价 — 慢速 ZigZag |
| BufHigh3 | 5 | SELL | 3 约高枢轴价 — 慢速 ZigZag |
输入参数
# = iCustom() 调用中的位置(0 基,在 Symbol / Period / FileName 之后)
在 MT4 中,必须按顺序传递所有参数。不能跳过中间参数。
尾部参数可以略去(使用默认值)。
| # | 名称 | 类型 | 默认 | 范围 | 描述 |
|---|---|---|---|---|---|
| 1 约 — 快速 ZigZag | |||||
| 0 | ColorL1Low | color | clrAqua | color | 1 约低箭头颜色 |
| 1 | ColorL1High | color | clrMagenta | color | 1 约高箭头颜色 |
| 2 | Period1 | int | 5 | 2-500 | 枢轴回看深度 |
| 3 | Deviation1 | int | 1 | 1-100000 | 最小偏差(点) |
| 4 | Backstep1 | int | 3 | 1-(P-1) | 连续枢轴间最小样线 |
| 5 | HighSymbol1 | int | 159 | Wingdings | 高点箭头 (159/108/116) |
| 6 | LowSymbol1 | int | 159 | Wingdings | 低点箭头 |
| 7 | ConfirmBars1 | int | 2 | 1-50 | 确认样线 |
| 2 约 — 中速 ZigZag | |||||
| 8 | ColorL2Low | color | clrDodgerBlue | color | 2 约低箭头色 |
| 9 | ColorL2High | color | clrOrchid | color | 2 约高箭头色 |
| 10 | Period2 | int | 13 | 2-500 | 深度 |
| 11 | Deviation2 | int | 8 | 1-100000 | 偏差 |
| 12 | Backstep2 | int | 5 | 1-(P-1) | 最小样线 |
| 13 | HighSymbol2 | int | 108 | Wingdings | 高点箭头 |
| 14 | LowSymbol2 | int | 108 | Wingdings | 低点箭头 |
| 15 | ConfirmBars2 | int | 3 | 1-50 | 确认 |
| 3 约 — 慢速 ZigZag | |||||
| 16 | ColorL3Low | color | clrGold | color | 3 约低箭头色 |
| 17 | ColorL3High | color | clrOrangeRed | color | 3 约高箭头色 |
| 18 | Period3 | int | 34 | 2-500 | 深度 |
| 19 | Deviation3 | int | 21 | 1-100000 | 偏差 |
| 20 | Backstep3 | int | 12 | 1-(P-1) | 最小样线 |
| 21 | HighSymbol3 | int | 116 | Wingdings | 高点 (116=钻石) |
| 22 | LowSymbol3 | int | 116 | Wingdings | 低点 |
| 23 | ConfirmBars3 | int | 4 | 1-50 | 确认 |
| 实例管理 | |||||
| 24 | InstanceID | string | "A" | 任意 | 唯一标签 |
| 25 | DebugMode | ENUM_ONOFF | OFF (0) | 0 / 1 | 诊断输出 |
| 26 | HeadlessMode | ENUM_ONOFF | OFF (0) | 0 / 1 | iCustom 时设 ON |
| 防重画 | |||||
| 27 | AntiRepaint | ENUM_ONOFF | ON (1) | 0 / 1 | 仅确认信号 |
| 28 | SafeArrows | ENUM_ONOFF | OFF (0) | 0 / 1 | 安全移位 |
| 提醒系统 | |||||
| 29 | AlertMode | ENUM_ALERT_MODE | 1 (Popup) | 0-3 | 0=无 1=彈窗 2=推送 3=全部 |
| 30 | AlertLevel1 | ENUM_ONOFF | OFF (0) | 0 / 1 | 1 约提醒 |
| 31 | AlertLevel2 | ENUM_ONOFF | ON (1) | 0 / 1 | 2 约提醒 |
| 32 | AlertLevel3 | ENUM_ONOFF | ON (1) | 0 / 1 | 3 约提醒 |
总计:33 个参数 (0-32)
iCustom 代码示例
文件名:"TriZone_Semafor"(无 .ex4)— EA 中始终设 HeadlessMode = true。
在 MT4 中,iCustom 直接返回 double。无 handle、CopyBuffer、IndicatorRelease。
double TZS_GetBuffer(int bufferIndex, int shift)
{
return iCustom(Symbol(), Period(), "TriZone_Semafor",
clrAqua, clrMagenta, 5, 1, 3, 159, 159, 2,
clrDodgerBlue, clrOrchid, 13, 8, 5, 108, 108, 3,
clrGold, clrOrangeRed, 34, 21, 12, 116, 116, 4,
"EA1", false, true, true, false,
0, false, false, false, bufferIndex, shift);
}
void OnTick()
{
int safeShift = 4;
double lo1 = TZS_GetBuffer(0, safeShift);
double hi1 = TZS_GetBuffer(1, safeShift);
double lo2 = TZS_GetBuffer(2, safeShift);
double hi2 = TZS_GetBuffer(3, safeShift);
double lo3 = TZS_GetBuffer(4, safeShift);
double hi3 = TZS_GetBuffer(5, safeShift);
double ev = EMPTY_VALUE;
int buyLevel = (lo3 != ev) ? 3 : (lo2 != ev) ? 2 : (lo1 != ev) ? 1 : 0;
int sellLevel = (hi3 != ev) ? 3 : (hi2 != ev) ? 2 : (hi1 != ev) ? 1 : 0;
if(buyLevel > 0 && sellLevel == 0)
PrintFormat("BUY signal | Level %d | shift %d", buyLevel, safeShift);
else if(sellLevel > 0 && buyLevel == 0)
PrintFormat("SELL signal | Level %d | shift %d", sellLevel, safeShift);
}
void OnDeinit(const int reason)
{
// MT4 无 handle — 无需释放。
}
常见错误
| 错误 | 症状 | 解决 |
|---|---|---|
| InstanceID 重复 | INIT_PARAMETERS_INCORRECT | 唯一 ID |
| HeadlessMode = false | 绘图 + 提醒 | #26 = true |
| AntiRepaint 时 shift = 0 | EMPTY_VALUE | shift >= 4 |
| AlertMode != 0 | Alert() 阻塞 Tester | #29 = 0 |
| 文件名错误 | 0 / EMPTY_VALUE | "TriZone_Semafor" |
| 缺少颜色参数 | 值错误 | 传递全部 33 个参数 |
| 参数顺序错误 | 信号错误 | 按表 (0-32) |
