TriZone Semafor
- Индикаторы
-
Ahmed Hamed Hamed Eadwan
RUSSIAN TRANSLATION — РУССКИЙ
================================
TITLE:
MQL5 Разработчик и Трейдер | Основатель R protocols
ABOUT:
Здравствуйте, я Ахмед — трейдер и разработчик MQL5 из
Объединенных Арабских Эмиратов, основатель R protocols. - Версия: 1.0
Если вы когда-нибудь смотрели на график, усыпанный стрелками ZigZag, и пытались понять, какие из них действительно важны — этот индикатор создан для решения именно этой проблемы.
TriZone Semafor запускает три независимых алгоритма ZigZag одновременно: быстрый (Period 5), средний (Period 13) и медленный (Period 34). Когда они обнаруживают поворотные точки на одной свече, выживает только самый значимый сигнал. Уровень 3 всегда перекрывает уровень 2. Уровень 2 всегда перекрывает уровень 1. Одна чистая стрелка на свечу в каждом направлении — без наложений, без двойного подсчёта.
Зачем три уровня вместо одного
Обычный ZigZag относится ко всем колебаниям одинаково. Один и тот же индикатор отмечает двухсвечный откат и серьёзный разворот тренда одинаковыми стрелками. TriZone классифицирует каждую поворотную точку по значимости, чтобы вы могли оценить иерархию графика с первого взгляда.
- Уровень 1 — Быстрый: Небольшие откаты и второстепенные повороты. Структура внутри структуры.
- Уровень 2 — Средний: Внутридневные колебания и значимые реакции. Поворотные точки, которые вы фиксируете в торговом журнале.
- Уровень 3 — Медленный: Крупные структурные развороты. Точки, где продолжение тренда действительно под вопросом.
Каждый уровень имеет свою форму и цвет стрелки, чтобы иерархия была видна мгновенно, без обращения к легенде.
Система эксклюзивных сигналов
Каждая свеча проходит через одно правило: если более высокий уровень заявляет поворотную точку на этой свече, все заявки нижних уровней удаляются — не скрываются, а удаляются. Это происходит внутри буфера индикатора до того, как что-либо попадёт на график. График отражает реальное состояние, а не наложенные слои.
Режим без перерисовки
При AntiRepaint = ON сигнал отображается только после прохождения настроенного количества подтверждающих баров. Стрелка, которую вы видите, уже прошла окно стабильности и не переместится. Индикатор показывает текущий режим и глубину подтверждения в заголовке графика — полная прозрачность относительно того, что вы видите.
При AntiRepaint = OFF сигналы появляются мгновенно на формирующемся баре. Полезно для визуального анализа. Не рекомендуется для автоматизированной торговли.
Система оповещений
Оповещения ставятся в очередь во время расчёта и доставляются только после того, как фильтр эксклюзивности подтвердит, что сигнал выжил. Вы никогда не получите всплывающее окно для сигнала уровня 1, который был перекрыт уровнем 3 через мгновение. Один подтверждённый поворот — одно оповещение. Настраивается для каждого уровня отдельно.
Что входит
- Три уровня обнаружения ZigZag с полностью независимыми параметрами
- Эксклюзивный приоритет сигналов на уровне буфера — высший уровень побеждает на каждой свече
- Всплывающие оповещения только по подтверждённым поворотным точкам — никаких ложных сигналов
- Режим без перерисовки с настраиваемыми подтверждающими барами для каждого уровня
- Любой символ, любой таймфрейм — MetaTrader 5
- Один файл — нулевые внешние зависимости, без DLL, без пользовательских включений
Рекомендуемая начальная настройка
Откройте H1 или H4 с параметрами по умолчанию. Стандартные глубины 5 / 13 / 34 следуют классической последовательности Фибоначчи — естественный выбор для большинства инструментов и таймфреймов.
Поворотные точки уровня 3 — ваш структурный ориентир. Уровень 2 — внутридневные контрольные точки. Уровень 1 показывает мелкую структуру между ними. Настройте глубину (Period) и подтверждающие бары (ConfirmBars) под свой стиль.
Совместимость
MetaTrader 5 — любой брокер, любой символ, любой таймфрейм. Без внешних библиотек. Без импорта DLL. Один файл .ex5, полностью автономный.
Справка по 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)
| # | Имя | Тип | По умолч. | Диапазон | Описание |
|---|---|---|---|---|---|
| УРОВЕНЬ 1 — Быстрый ZigZag | |||||
| 0 | Period1 | int | 5 | 2–500 | Глубина поиска поворотных точек (бары) |
| 1 | Deviation1 | int | 1 | 1–100 | Минимальное отклонение в пунктах |
| 2 | Backstep1 | int | 3 | 1–(P-1) | Мин. баров между последовательными поворотами |
| 3 | HighSymbol1 | int | 159 | Wingdings | Стрелка для максимумов (159=точка, 108=круг, 116=ромб) |
| 4 | LowSymbol1 | int | 159 | Wingdings | Стрелка для минимумов |
| 5 | ConfirmBars1 | int | 2 | 1–50 | Подтверждающие бары до фиксации сигнала |
| УРОВЕНЬ 2 — Средний ZigZag | |||||
| 6 | Period2 | int | 13 | 2–500 | Глубина поиска поворотных точек |
| 7 | Deviation2 | int | 8 | 1–100 | Минимальное отклонение в пунктах |
| 8 | Backstep2 | int | 5 | 1–(P-1) | Мин. баров между последовательными поворотами |
| 9 | HighSymbol2 | int | 108 | Wingdings | Стрелка для максимумов |
| 10 | LowSymbol2 | int | 108 | Wingdings | Стрелка для минимумов |
| 11 | ConfirmBars2 | int | 3 | 1–50 | Подтверждающие бары |
| УРОВЕНЬ 3 — Медленный ZigZag | |||||
| 12 | Period3 | int | 34 | 2–500 | Глубина поиска поворотных точек |
| 13 | Deviation3 | int | 21 | 1–100 | Минимальное отклонение в пунктах |
| 14 | Backstep3 | int | 12 | 1–(P-1) | Мин. баров между последовательными поворотами |
| 15 | HighSymbol3 | int | 108 | Wingdings | Стрелка для максимумов |
| 16 | LowSymbol3 | int | 108 | Wingdings | Стрелка для минимумов |
| 17 | ConfirmBars3 | int | 4 | 1–50 | Подтверждающие бары |
| УПРАВЛЕНИЕ ЭКЗЕМПЛЯРОМ | |||||
| 18 | InstanceID | string | "A" | любой | Уникальный тег — должен отличаться от любой копии на графике |
| 19 | DebugMode | ENUM_ONOFF | OFF (0) | 0 / 1 | Вывод диагностики в Журнал |
| 20 | HeadlessMode | ENUM_ONOFF | OFF (0) | 0 / 1 | Установите 1 (ON) при использовании через iCustom — отключает весь интерфейс и оповещения |
| АНТИПЕРЕРИСОВКА | |||||
| 21 | AntiRepaint | ENUM_ONOFF | ON (1) | 0 / 1 | ON = только подтверждённые сигналы — обязательно для стабильной логики EA |
| 22 | SafeArrows | ENUM_ONOFF | OFF (0) | 0 / 1 | ON = стрелки используют полный безопасный ретроактивный сдвиг (строже) |
| СИСТЕМА ОПОВЕЩЕНИЙ | |||||
| 23 | AlertMode | ENUM_ALERT_MODE | 1 (Popup) | 0–3 | 0=Нет 1=Всплывающее 2=Push 3=Все — установите 0 внутри EA |
| 24 | AlertLevel1 | ENUM_ONOFF | OFF (0) | 0 / 1 | Оповещение при поворотах уровня 1 |
| 25 | AlertLevel2 | ENUM_ONOFF | ON (1) | 0 / 1 | Оповещение при поворотах уровня 2 |
| 26 | AlertLevel3 | ENUM_ONOFF | ON (1) | 0 / 1 | Оповещение при поворотах уровня 3 |
Итого: 27 параметров (индексы 0–26)
Пример кода iCustom
//+------------------------------------------------------------------+ //| iCustom handle — TriZone_Semafor | //+------------------------------------------------------------------+ int g_tzsHandle = INVALID_HANDLE; int OnInit() { g_tzsHandle = iCustom( _Symbol, PERIOD_CURRENT, "TriZone_Semafor", // ---- Level 1: Fast ---- 5, // Period1 1, // Deviation1 3, // Backstep1 159, // HighSymbol1 (dot) 159, // LowSymbol1 (dot) 2, // ConfirmBars1 // ---- Level 2: Medium ---- 13, // Period2 8, // Deviation2 5, // Backstep2 108, // HighSymbol2 (circle) 108, // LowSymbol2 (circle) 3, // ConfirmBars2 // ---- Level 3: Slow ---- 34, // Period3 21, // Deviation3 12, // Backstep3 108, // HighSymbol3 (circle) 108, // LowSymbol3 (circle) 4, // ConfirmBars3 // ---- Instance ---- "EA1", // InstanceID false, // DebugMode = OFF true, // HeadlessMode = ON // ---- Anti-Repaint ---- true, // AntiRepaint = ON false, // SafeArrows = OFF // ---- Alerts ---- 0, // AlertMode = ALERT_NONE false, // AlertLevel1 false, // AlertLevel2 false // AlertLevel3 ); if(g_tzsHandle == INVALID_HANDLE) { PrintFormat("[EA] TriZone_Semafor handle failed: err=%d", GetLastError()); return INIT_FAILED; } return INIT_SUCCEEDED; }
Частые ошибки
| Ошибка | Симптом | Исправление |
|---|---|---|
| Одинаковый InstanceID с копией на графике | INIT_PARAMETERS_INCORRECT | Уникальный ID: "EA1" , "EA2" … |
| HeadlessMode = false в EA | Индикатор рисует объекты + оповещения для каждого экземпляра EA | Установите параметр #20 в true |
| Чтение shift = 0 при AntiRepaint ON | EMPTY_VALUE всегда — бар ещё не подтверждён | Читайте на shift ≥ 4 (макс. CB по умолчанию) |
| AlertMode ≠ 0 внутри EA | Всплывающие окна Alert() блокируют выполнение тестера | Установите параметр #23 в 0 |
| Неверное имя файла в iCustom | INVALID_HANDLE | Используйте точное имя: "TriZone_Semafor" |
| Нет IndicatorRelease в OnDeinit | Утечка памяти при перезагрузке EA | Вызовите IndicatorRelease(g_tzsHandle) |
