Ярослав Суков – Структура против Хаоса: Трендовый индикатор ZigZag (страница 6)
- Недельный цикл (3–10 дней): ZigZag с `Depth = 0.7%` на 4-часовых. Рабочая лошадка свинг-трейдера.
- Дневной цикл (1–5 дней): ZigZag с `Depth = 0.3%` на часовых. Интрадей-структура.
Если ZigZag на H4 показывает вершину на уровне 1.1200, то на M15 цена будет многократно тестировать этот уровень.
Число Фибоначчи как мост между циклами
ZigZag в связке с Фибоначчи автоматически определяет, является ли текущая волна частью более крупного цикла.
Алгоритм (для кода или ручного расчета):
1. Возьмите длины последних трех звеньев ZigZag на H1: `L1, L2, L3`.
2. Вычислите отношение `L2 / L1`. Если оно близко к 0.382, 0.5, 0.618 — это коррекция в рамках того же цикла.
3. Вычислите `L3 / L1`. Если оно близко к 1.0 или 1.618 — третья волна является расширением первой.
4. Если никакие отношения не совпадают с классическими уровнями — вероятно, вы смотрите на пересечение двух разных циклов (например, дневной коррекции и часового тренда).
Это самый важный подраздел главы. 90% трейдеров остаются на уровне «вижу — торгую». Они смотрят на красивую картинку ZigZag и принимают решения интуитивно. Но интуиция обманчива. Нам нужны правила, которые можно запрограммировать или, по крайней мере, записать в торговый план.
4.3.1. Системные паттерны ZigZag (не перерисовывающиеся)
Вот три паттерна, которые имеют статистически значимую предсказательную силу (проверено на 5-летней истории форекса):
Паттерн «Трех касаний» (Triple Touch)
- Условие: три последовательных звена ZigZag (AB, BC, CD) имеют примерно одинаковую длину (±10%).
- Что происходит: рынок находится в диапазоне. Четвертое звено с вероятностью 67% пробьет диапазон в ту же сторону, что и последнее движение внутри диапазона.
- Торговля: Ждите, когда цена выйдет за горизонтальную линию, проведенную через экстремумы B и D (или A и C). Входите в направлении пробоя.
Паттерн «Ускорение/Замедление» (Velocity Shift)
- Условие: текущее звено (скажем, CD) на 20% длиннее предыдущего (BC), но при этом угол наклона уменьшается (волна становится длиннее, но положе).
- Интерпретация: рынок набирает силу по амплитуде, но теряет по времени. Это часто предшествует резкому развороту. (Сравните с бегуном, который удлиняет шаг, но замедляется — он устал.)
- Торговля: Ищите FVG в конце текущего звена для входа против тренда с коротким стопом.
Паттерн «Зигзаг МакКлеллана» (адаптация для форекса)
- Условие: после сильного импульса (длинное звено) следует короткая коррекция (звено не более 38.2% от импульса), потом снова импульс примерно той же длины, что и первый.
- Интерпретация: Это «измеренное движение». Цель третьего звена = точка начала первого импульса + 2*(длина первого импульса).
- Торговля: Вход на откате после второго импульса, цель — измеренное движение.
4.3.2. Количественные фильтры для отбора сигналов
Не всякая вершина ZigZag одинаково полезна. Введите систему взвешивания:
| Признак | Вес (от -5 до +5) | Пояснение |
|Вершина подтверждена объемом выше среднего| +2 | Крупные игроки участвовали |
| Вершина совпадает с уровнем Фибоначчи (0.618, 1.272) | +3 | Психологически значимый уровень |
| Вершина сформирована на круглой цифре (1.1000, 50000) | +1 | Магнетизм круглых чисел |
| За 3 бара до вершины был FVG в направлении движения | +4 | Дисбаланс уже проявился |
| Вершина появилась через 2-3 бара после новостей | -2 | Шум, не структура |
| Длина волны, предшествующей вершине, меньше ATR*1.5 | -1 | Движение недостаточно сильное |Если сумма весов 5 — сигнал высокого качества. Если 0 — игнорируйте.
4.3.3. От ручного к автоматическому: прототип советника
Вот псевдокод простой системы, основанной на правилах выше (для MT5 или TradingView):
// Входные параметры
depth = 30 points (или ATR*0.618)
backstep = 3
// Вычисляем неперерисовывающийся ZigZag
zz_highs[], zz_lows[] = NonRepaintZigZag(bars, depth, backstep)
// Ждем завершения текущего звена
current_leg_type = (последнее звено было вверх или вниз)
current_leg_length = price_move(current_leg_type)
// Паттерн "Трех касаний"
if (последние 4 зигзага имеют длину в диапазоне [avg*0.9, avg*1.1]) {
// Диапазон
range_high = max(zz_highs[-2], zz_highs[-4])
range_low = min(zz_lows[-2], zz_lows[-4])
if (close > range_high) buy()
if (close < range_low) sell()
}
// Паттерн "Ускорение/Замедление"
if (current_leg_length > previous_leg_length * 1.2 AND
current_leg_angle < previous_leg_angle * 0.9) {
// Ищем FVG в конце текущего звена
fvg = FindLastFVG(current_leg_type)
if (fvg exists) {
if (current_leg_type == 'up') sell_at(fvg.lower_bound)
else buy_at(fvg.upper_bound)
}
}
Этот код — упрощение. Но он показывает, как визуальный паттерн превращается в **детерминированное правило**.