Смотри, как бесплатно скачать роботов
Ищи нас в Telegram!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Индикаторы

Swing Detector by Pullback (Smart Money Concepts) - индикатор для MetaTrader 5

Sandro Begashvili
Sandro Begashvili
Сандро Бегашвили - разработчик MQL5, MQL4, Python и Pine Script
Я создаю торговые программы для MetaTrader 4 и MetaTrader 5: советники, пользовательские индикаторы и графические торговые панели. Опишите свою идею, и я превращу её в рабочий код с документацией.
ЧТО Я РАЗРАБАТЫВАЮ
| Russian English 中文 Español Deutsch 日本語 Português 한국어 Français Italiano Türkçe
Просмотров:
6
Рейтинг:
(1)
Опубликован:
MQL5 Фриланс Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Практически каждый метод, основанный на структуре рынка, начинается с одного и того же вопроса: какие максимумы и минимумы действительно имеют значение? Все последующее — структура рынка, BOS и CHoCH, блоки ордеров, уровни ликвидности — строится на основе ответа на этот единственный вопрос, поэтому выбранное вами определение определяет, что будет видно в ходе остального анализа.


Существует несколько распространенных способов ответить на этот вопрос. Наиболее известен паттерн из 3 свечей (фрактал): свеча, максимум которой выше максимумов обеих соседних свечей, является максимумом колебания. Этот подход симметричен, прост в расчёте и используется большинством индикаторов колебаний. Другие расширяют окно до 5 или 7 свечей либо фильтруют кандидаты по минимальному движению в пунктах или по ATR.

Этот индикатор использует другое определение — определение отката, применяемое в Trading Hub 3.0. Вместо того чтобы спрашивать, выше ли свеча соседних, он проверяет, вернулась ли цена и отклонила ли эту свечу. Максимум становится свинг-максимумом только после того, как рынок вновь пробивает минимум той свечи, которая его сформировала. Ничто не определяется формой; всё определяется тем, как ведёт себя цена впоследствии.


Практическое отличие заключается в следующем: фрактал описывает геометрию, а откат — событие. Поскольку откат является событием, он также указывает, когда колебание стало действительным — и именно эта временная метка делает возможной реализацию без перерисовки.

Как работает правило

Детектор никогда не ищет обе стороны одновременно. Он ищет по одной стороне за раз и хранит ровно три элемента информации:

Состояние Значение
Направление какая сторона в данный момент ищется — высокая или низкая
Отслеживаемое экстремальное значение самый высокий максимум (или самый низкий минимум), зафиксированный на данный момент в текущем отрезке
Ориентир противоположный край свечи, сформировавшей данное экстремум

Ориентир — это важная часть. Когда свеча устанавливает новый максимальный максимум, эта же свеча также определяет уровень, который позже подтвердит его: свой собственный минимум. Цена должна вернуться ниже этого минимума, чтобы максимум считался действительным.


Интерпретация рисунка:

  • A — начинается импульс. Отслеживаемый максимум и эталонный минимум относятся к одной и той же свече.
  • B — каждый последующий более высокий максимум заменяет оба значения. Максимум пока остается предварительным; ничего не отмечается.
  • C — свеча, наконец, торгуется ниже контрольного минимума. Это откат, и он подтверждает отслеживаемый максимум как колебательный максимум.
  • D — подтверждающая свеча немедленно инициирует поиск минимума по аналогичной схеме: отслеживается самый низкий минимум, ориентиром служит его максимум, прорыв выше подтверждает его.

Поскольку подтверждение одной стороны всегда переключает поиск на другую, колебательные максимумы и минимумы чередуются автоматически. Для этого не существует отдельного правила, и не проводится сравнение с предыдущими колебаниями.

Правила, свеча за свечой

При закрытии каждой свечи детектор задает два независимых вопроса: установила ли эта свеча новый экстремум? и пробила ли она ориентир? Возможны четыре комбинации в каждом направлении.


# Текущий тренд Текущая свеча Действие 1 Действие 2
1 В поисках МАКСИМУМА Внутренний бар — нового максимума нет, контрольный минимум сохраняется ничего ничего
2 Ожидается МАКСИМУМ Новый максимум, контрольный минимум сохраняется отслеживаемый максимум = максимум этой свечи базовый минимум = минимум данной свечи
3 Ищем МАКСИМУМ Прорыв — нет нового максимума, но торгуется ниже контрольного минимума подтвердить отслеживаемый максимум как максимум колебания переключение на МИНИМУМ: отслеживаемый минимум = минимум данной свечи, эталонный максимум = максимум данной свечи
4 Ищем МАКСИМУМ Внешний бар — новый максимум и пробой контрольного минимума подтвердить максимум этой же свечи как максимум колебания переключение на НИЗ: отслеживаемый минимум = минимум данной свечи, эталонный максимум = максимум данной свечи
5 Ищем М ИНИМУМ Внутренний бар — нет нового минимума, эталонный максимум сохраняется ничего ничего
6 Ищем М ИНИМУМ Новый минимум, референтный максимум сохранен отслеживаемый минимум = минимум этой свечи референтный максимум = максимум данной свечи
7 Ищем М ИНИМУМ Прорыв — нет нового минимума, но цена торгуется выше контрольного максимума подтвердить отслеживаемый минимум как минимум колебания переход к МАКСИМУМУ: отслеживаемый максимум = максимум данной свечи, эталонный минимум = минимум данной свечи
8 Ищем М ИНИМУМ Внешний бар — новый минимум и пробой контрольного максимума подтвердить минимум данной свечи в качестве минимума колебания переключение на HIGH: отслеживаемый максимум = максимум данной свечи, опорный минимум = минимум данной свечи

Строки 1–4 и 5–8 являются точным зеркальным отражением, поэтому весь алгоритм занимает всего несколько десятков строк.

Редкий случай: свеча, пробивающая в обоих направлениях

Строки 4 и 8 заслуживают отдельного пояснения. Обычно свеча либо продлевает тренд, либо пробивает отсчетный уровень. Внешняя свеча может делать и то, и другое одновременно — она устанавливает новый максимум и торгуется ниже отсчетного минимума в пределах одной и той же свечи.

В этом случае оба правила претендуют на неё, и они противоречат друг другу. Рассматривая её как продолжение, мы упускаем реальный прорыв; рассматривая её как прорыв, мы подтверждаем максимум, который эта самая свеча уже превысила.


Решение заключается в том, чтобы считать саму свечу колебанием:

  1. её собственный максимум подтверждается как максимум колебания — а не более старый отслеживаемый максимум, который она только что преодолела.
  2. Затем эта же свеча открывает противоположный отрезок: отслеживаемый минимум становится её минимумом, а контрольный уровень — её максимумом.

Таким образом, одна свеча несет в себе и максимум колебания, и начало нисходящего участка. На графике это отображается в виде маркеров выше и ниже одного и того же бара с вертикальным участком между ними — что именно и произошло внутри этой свечи.

This is also why the legs are drawn as trend-line objects rather than a DRAW_SECTION buffer. A section plot stores one value per bar and could not hold two points on the same candle.

Она не перерисовывается

Отслеживаемый экстремум является предварительным и никогда не рисуется. Свинг наносится на график только на той свече, которая его подтверждает, и после нанесения он никогда не сдвигается, не перекрашивается и не удаляется. Оцениваются только закрытые свечи; формирующаяся свеча полностью игнорируется.

Компромисс очевиден и заслуживает упоминания: задержка подтверждения. Новейший свинг появляется только после прорыва, который его подтверждает. Если вам нужен маркер в тот самый момент, когда фиксируется новый максимум, этот инструмент вам не подойдет — такой маркер пришлось бы перемещать позже, а это и есть перерисовка.

Параметры

Обнаружение

Входные данные По умолчанию Как работает
Начните с поиска Поиск максимума колебания В какую сторону ищет самый первый отрезок. Это влияет только на самые старые бары на графике; после первого подтверждения направление полностью определяется пробоями. Не трогайте этот параметр, если только первый свинг в вашей истории не выглядит неверным.
Прорыв подтверждается «Wick» «Wick» использует максимум/минимум свечи — буквальное правило Trading Hub и более чувствительную настройку. «Close» требует, чтобы свеча закрылась за отметкой, что игнорирует однократные «проколы» фитиля и дает заметно меньше, но более крупных колебаний.

Как выбрать: начните с «Wick». Если вы работаете на таймфреймах M1–M15 или с инструментом с длинными «шумными» фитилями, таким как золото или CFD на индекс, переключитесь на «Close» — это устраняет большинство колебаний, вызванных единичным всплеском, не изменяя логику в остальном. Ещё один способ получить более крупную структуру — использовать более высокий таймфрейм; у самого правила нет настроек чувствительности или периода, которые нужно регулировать.

Отображение

Входные данные По умолчанию Что делает
Рисует маркеры колебаний true Включает или выключает стрелки. Буферы остаются заполненными в любом случае, поэтому iCustom по-прежнему возвращает каждый размах.
Код стрелки — пик/минимум колебания 217 / 218 Коды шрифта Wingdings. Распространённые альтернативы:234/233,241/242, 159 для точек.
Расстояние от стрелки до шкалы 10 Расстояние в пикселях между свечой и стрелкой. Увеличивайте его на плотных графиках.
Рисовать отрезки между колебаниями true Пунктирная линия зигзага, соединяющая последовательные колебания. Отключите эту опцию, если у вас уже нарисован зигзаг.
Цвет / стиль / ширина отрезков серебристый, пунктирный, 1 Внешний вид отрезков.

Отключение как маркеров, так и линий оставляет чисто вычислительный объект — это полезно, когда советник считывает буферы, а на графике ничего отображать не нужно.

Оповещения

Входные данные По умолчанию Что это делает
Всплывающее оповещение о подтвержденном колебании false Всплывающее окно в терминале при подтверждении колебания.
Push-уведомление о подтверждённом колебании false Отправляется на MetaQuotes ID, заданный в меню «Инструменты» → «Настройки» → «Уведомления».

Сигналы срабатывают только при обновлении данных в реальном времени, никогда — во время загрузки исторических данных индикатором, и только один раз за каждый свинг.

Использование в советнике

Два буфера, оба из которых не пусты только при подтвержденных колебаниях (пустое значение — 0,0):

Буфер Содержимое
0 цена подтверждённого максимума колебания
1 цена подтвержденного минимума колебания
int h = iCustom(_Symbol, _Period, "SMC_Pullback");
double buf[];
CopyBuffer(h, 0, 0, 100, buf);   // максимумы колебаний

Механизм обнаружения реализован в одном автономном классе CPullbackDetector, не зависящем ни от графика, ни от буфера — он принимает массивы цен и сообщает о подтвержденных колебаниях, поэтому его можно скопировать прямо в советник, если вы предпочитаете не использовать iCustom.

Чего он сознательно не делает

Этот индикатор останавливается на точках колебаний. Он не помечает HH/HL/LH/LL и не вычисляет BOS, CHoCH, IDM, блоки ордеров или уровни ликвидности. Это отдельные этапы, для которых сначала требуется надёжный набор колебаний — а именно это и предоставляет данный индикатор.


Проект поддерживается на MQL5 Algo Forge. Код и будущие обновленияможно найти по ссылке ниже.

Репозиторий находится здесь: https://forge.mql5.io/SandroBegashvil/SMC-Pullback-CodeBase

Перевод с английского произведен MetaQuotes Ltd.
Оригинальная публикация: https://www.mql5.com/en/code/76451

SuperTrend Indicator SuperTrend Indicator

Пользовательский индикатор SuperTrend, созданный с нуля, сочетающий в себе полосу волатильности на основе ATR с механизмом «трещотки» для построения четкой линии тренда, не подверженной перерисовке. Управление внутренним рекурсивным состоянием осуществляется с помощью надлежащим образом зарегистрированных буферов вычислений, что позволяет избежать ошибок потери состояния, характерных для реализаций с массивами, управляемыми вручную. Из серии статей «Создание пользовательских индикаторов для начинающих».

Fisher Transform Indicator Fisher Transform Indicator

Осциллятор на основе преобразования Фишера, построенный с учетом основных статистических принципов: цена нормализуется в ограниченный диапазон, после чего к ней применяется логарифмическое преобразование, что позволяет получать четкие и ясно выраженные сигналы разворота вместо постепенных изменений тренда, характерных для традиционных осцилляторов. Внутреннее рекурсивное состояние обрабатывается с помощью специальных буферов вычислений, что обеспечивает надёжную и корректную работу при тестировании на исторических данных. Из серии статей «Создание пользовательских индикаторов для начинающих».

PropFirm Equity Protector — Institutional Risk Manager (с открытым исходным кодом) PropFirm Equity Protector — Institutional Risk Manager (с открытым исходным кодом)

Профессиональный утилитарный советник (EA) для управления рисками в проп-фирмах. Он обеспечивает ежедневный мониторинг собственного капитала, поэтапное снижение рисков по убыточным позициям и абсолютные жесткие стоп-лимиты с помощью самовосстанавливающейся графической панели управления.

YURAZ_MCCH YURAZ_MCCH

Индикатор рассчитывает % роста или падения относительно CLOSE, написан с применением ООП, и легко интегрируется в любой советник или иной индикатор.