TriZone Semafor MT4
- Индикаторы
-
Ahmed Hamed Hamed Eadwan
RUSSIAN TRANSLATION — РУССКИЙ
================================
TITLE:
MQL5 Разработчик и Трейдер | Основатель R protocols
ABOUT:
Здравствуйте, я Ахмед — трейдер и разработчик MQL5 из
Объединенных Арабских Эмиратов, основатель R protocols. - Версия: 1.0
TriZone Semafor — 3-уровневый сигнальный ZigZag с исключением (Автономный — встроенный ZigZag, без внешних индикаторов)
Если вы когда-либо смотрели на график, перекрытый стрелками ZigZag, и задавались вопросом, какие из них действительно важны — этот индикатор был создан для этой проблемы.
TriZone Semafor запускает три независимых алгоритма ZigZag одновременно: Быстрый (Период 5), Средний (Период 13) и Медленный (Период 34). Когда они обнаруживают пивоты на одной и той же свече, выживает только самый значимый сигнал. Уровень 3 всегда преобладает над Уровнем 2. Уровень 2 всегда преобладает над Уровнем 1. Одна чистая стрелка на свечу по направлению — никакой накладки, никакого двойного подсчёта.
Почему три уровня, а не один
Один ZigZag относится ко всем разворотам одинаково. Один и тот же индикатор отмечает двухбарный откат и масштабный разворот тренда одинаковыми стрелками. TriZone классифицирует каждый пивот по значимости, чтобы вы читали иерархию графика с одного взгляда.
- Уровень 1 — Быстрый: Малые откаты и незначительные пивоты. Структура под структурой.
- Уровень 2 — Средний: Внутридневные свинги и значимые реакции. Пивоты, на которые ссылается ваш дневник трейдинга.
- Уровень 3 — Медленный: Крупные структурные повороты. Точки, где продолжение тренда действительно под вопросом.
Каждый уровень имеет свою форму и цвет стрелки, чтобы вы видели иерархию мгновенно, без консультаций с легендой.
Система исключительных сигналов
Каждая свеча проходит одно правило: если более высокий уровень заявляет пивот на этой свече, все заявки нижних уровней удаляются — не скрываются, а удаляются. Это происходит внутри буфера индикатора до того, как что-то попадёт на график. График отражает реальное состояние, а не слоистую накладку.
Режим anti-repaint
С AntiRepaint = ON сигнал рисуется только после прохождения настроенного количества баров подтверждения. Стрелка, которую вы видите, уже прошла своё окно стабильности и не сдвинется. Индикатор показывает текущий режим и глубину подтверждения в заголовке графика — полная прозрачность.
С AntiRepaint = OFF сигналы появляются немедленно на формирующейся свече. Полезно для визуальной ссылки. Не рекомендуется для автоматизированной логики.
Система оповещений
Оповещения ставятся в очередь во время расчёта и доставляются только после прохождения исключения, подтверждающего, что сигнал выжил. Вы никогда не получите окно для сигнала Уровня 1, перекрытого Уровнем 3; мгновением позже. Один подтверждённый пивот — одно оповещение. Настраиваемо по уровням независимо.
Что включено
- Три уровня обнаружения ZigZag с полностью независимыми параметрами
- Исключительная приоритетность сигналов на уровне буфера — высший уровень побеждает по свече
- Всплывающие оповещения только на подтверждённых пивотах — никаких фантомных оповещений
- Режим anti-repaint с настраиваемыми барами подтверждения по уровням
- Любой символ, любой таймфрейм — MetaTrader 4
- Один файл — ноль внешних зависимостей, без DLL, без пользовательских includes
Рекомендуемая начальная точка
Откройте H1 или H4 с параметрами по умолчанию. Глубины по умолчанию 5 / 13 / 34 следуют стандартной последовательности Fibonacci — естественное соответствие для большинства инструментов и таймфреймов.
Пивоты Уровня 3 — ваша структурная ссылка. Уровень 2 — ваши внутридневные ориентиры. Уровень 1 показывает мелкую структуру между ними. Настройте глубину (Period) и бары подтверждения (ConfirmBars) под свой стиль.
Совместимость
MetaTrader 4 — любой брокер, любой символ, любой таймфрейм. Никаких внешних библиотек. Никаких импортов DLL. Единый .ex4 файл, полностью автономный.
Справочник iCustom — TriZone_Semafor
Буферы вывода
Исключение уже применено индикатором.
Только самый высокий активный уровень не пуст на свечу.
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 | Диагностика в Journal |
| 26 | HeadlessMode | ENUM_ONOFF | OFF (0) | 0 / 1 | ON для iCustom — подавляет UI |
| ANTI-REPAINT | |||||
| 27 | AntiRepaint | ENUM_ONOFF | ON (1) | 0 / 1 | ON = только подтверждённые сигналы |
| 28 | SafeArrows | ENUM_ONOFF | OFF (0) | 0 / 1 | Ретро-безопасный shift |
| СИСТЕМА ОПОВЕЩЕНИЙ | |||||
| 29 | AlertMode | ENUM_ALERT_MODE | 1 (Popup) | 0-3 | 0=Нет 1=Popup 2=Push 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) — HeadlessMode = true в EA.
В 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 без handles — нечего освобождать.
}
Частые ошибки
| Ошибка | Симптом | Решение |
|---|---|---|
| Тот же InstanceID | INIT_PARAMETERS_INCORRECT | Уникальный ID |
| HeadlessMode = false | Объекты + оповещения | #26 = true |
| shift = 0 с AntiRepaint | EMPTY_VALUE | shift >= 4 |
| AlertMode != 0 | Alert() блокирует Tester | #29 = 0 |
| Неверное имя | 0 / EMPTY_VALUE | "TriZone_Semafor" |
| Нехвата параметров | Неверные значения | ВСЕ 33 параметра |
| Неверный порядок | Неверные сигналы | См. таблицу (0-32) |
