Идея коротко
Chandelier exit это трейлинг-стоп, который висит под максимумом сделки, как люстра под потолком. Расстояние задаётся не в пунктах и не в процентах, а в ATR. Для лонга стоп равен максимуму цены с момента входа минус несколько ATR. Цена обновляет максимум, стоп поднимается. Волатильность растёт, стоп отходит и даёт цене больше места. Волатильность падает, стоп прижимается к цене.
Richard Brennan, систематический трендследящий трейдер и соведущий канала, называет chandelier своей техникой трейлинга. У него около десяти систем с разными входами, и каждая режет убытки по-своему. Общая мысль: небольшой начальный стоп и трейл, который отпускает прибыль, пока тренд жив, и сам решает, когда тренд закончился.
Brennan не называет ни множитель ATR, ни длину окна. Он описывает, как их ищет: на всём портфеле рынков сразу, на границе между рыночным шумом и хвостами распределения. Название и классическую форму выхода обычно связывают с Chuck LeBeau, в видео он не упоминается. Ниже блок выхода, который встраивается в любую стратегию, и пример на карточке черепах.
Почему это может работать
Brennan исходит из формы распределения доходностей. Большую часть времени рынок колеблется около равновесия, и такие движения похожи на подбрасывание монеты. Изредка случаются длинные направленные движения, это толстые хвосты. Трендследящий трейдер зарабатывает только на хвостах. Поэтому стоп должен стоять там, где кончается шум: ближе он будет выбивать из будущих трендов, дальше будет отдавать лишнее на разворотах.
Расстояние в ATR автоматически следит за этой границей. В нервном рынке шум шире, и стоп отходит. В спокойном шум уже, и стоп прижимается. Один и тот же множитель работает на разных рынках и в разные годы, поэтому его можно подбирать на портфеле из десятков инструментов, а не на одном графике.
Автор показывает, чего ждать от такого выхода. Около 90% сделок заканчиваются мелкими убытками или небольшими прибылями, 5-10% дают крупные выигрыши, которые оплачивают всё остальное. Это его описание своих систем в целом, отдельной статистики по выходу нет.
Правила
Блок выхода (тип автора, параметры Finetiq)
// считается на закрытии каждого бара, новый уровень действует со следующего бара
ATRn = ATR(22) // Finetiq: длина 22, стартовое значение
k = 3 // Finetiq: множитель, стартовое значение
// на баре входа
LongStop = EntryPrice - k * ATRn // автор: начальный стоп по волатильности, он и есть 1R
R = EntryPrice - LongStop
// на каждом следующем баре, пока позиция открыта
HighSince = максимум High от бара входа до текущего бара // Finetiq: отсчёт от максимума сделки
Chand = HighSince - k * ATRn
LongStop = MAX(LongStop[1], Chand) // прочтение 1: стоп движется только вверх
SELL STOP at LongStop // Finetiq: выход по касанию
// прочтение 2: LongStop = Chand без MAX
// автор говорит, что трейл «дышит» при высокой волатильности. Буквально это значит,
// что при росте ATR стоп может отойти вниз. Проверьте оба прочтения
// шорт зеркально
ShortStop = MIN(ShortStop[1], LowSince + k * ATRn)
BUY STOP at ShortStop
Варианты исполнения
// вариант выхода по закрытию (Finetiq): автор не уточняет касание или закрытие
IF Close < LongStop THEN EXIT AT NEXT BAR OPEN
// вариант отсчёта (Finetiq): от максимума последних 22 баров вместо максимума сделки
Chand = Highest(High, 22) - k * ATRn
Калибровка по методу автора
Brennan ищет границу шума на большой выборке, но метрику границы не называет. Ниже наша формализация через MAE, максимальный ход против позиции.
// Finetiq: на всём портфеле рынков сразу, без подбора под отдельный рынок
FOR каждая сделка основной стратегии без трейлинга (выход по времени или по сигналу)
MAE_ATR = (EntryPrice - минимум Low за сделку) / ATRn на входе
// посмотреть распределение MAE_ATR у сделок, которые в итоге дали больше 5R
k = значение, за которым остаются 90% таких сделок // Finetiq: стартовое правило
// затем проверить окрестность k на всём портфеле, выбирать плато, а не пик
Пример: черепахи с chandelier-выходом
Карточка turtle-4w-2w: вход на пробое максимума 20 баров, выход на пробое минимума 10 баров. Меняем только выход.
Entry20 = максимум High за 20 последних закрытых баров // из карточки черепах
IF position = FLAT
BUY STOP at Entry20
IF position = LONG
SELL STOP at LongStop // вместо SELL STOP at Exit10
// размер позиции как в карточке черепах: одинаковый риск в деньгах,
// расстояние до стопа = EntryPrice - (EntryPrice - k * ATRn) = k * ATRn
Contracts = floor(RiskMoney / (k * ATRn * PointValue))
Параметры
| Параметр | Значение | Откуда |
|---|---|---|
| Тип выхода | трейл от экстремума с поправкой на волатильность | автор |
| Начальный стоп | по волатильности, задаёт 1R | автор |
| Калибровка | на всём портфеле, 70-100 рынков | автор |
| Длина ATR | 22 бара | Finetiq |
| Множитель k | 3 | Finetiq |
| Отсчёт | максимум с момента входа | Finetiq |
| Движение стопа | только в сторону сделки | Finetiq |
| Исполнение | стоп-ордер на касание | Finetiq |
| Таймфрейм | D1 | Finetiq |
| Порог калибровки по MAE | 90% сделок больше 5R | Finetiq |
Что проверить
- Окрестность параметров на многих рынках. k = 2, 2.5, 3, 4, 5 и ATR 10, 22, 50 на 20-30 рынках разом. Смотрите медиану по рынкам и форму поверхности. Автор подбирает стопы на портфеле, а не на одном графике, и это главная защита от подгонки.
- Храповик против дыхания. Прочтение 1 (стоп только подтягивается) против прочтения 2 (стоп отходит при росте ATR). Сравните средний убыток на разворотах и число сделок, выбитых перед продолжением тренда.
- От максимума сделки или от окна. Отсчёт от максимума с момента входа против максимума последних 22 баров. На длинных трендах разница небольшая, на коротких сделках заметная.
- Касание против закрытия. Стоп-ордер против выхода на открытии после закрытия за уровнем. Выход по закрытию реже выбивает на шумных барах, но хуже на гэпах.
- Против выхода по каналу. Черепахи с Exit10 против черепах с chandelier на одном портфеле. Сравните не только итог, но и долю сделок больше 10R и вклад лучших 5% сделок. Тезис автора о положительном скосе проверяется именно так.
- Сжатие перед всплеском. Выберите сделки, закрытые на первом широком баре после периода низкой волатильности. Если таких много, стоп в спокойной фазе прижимается слишком близко, и нужен нижний предел расстояния.
- Гэпы. Посчитайте убытки больше 1R из-за гэпов через стоп. На акциях с отчётами и на CFD после выходных они случаются чаще, чем на фьючерсах.
Особенности платформ
TradingView (Pine Script)
ta.atrсглаживает по Уайлдеру. В EasyLanguage и MQL5 встроенный ATR это простое среднее TR, уровни стопа на трёх платформах разойдутся. Выберите одну формулу и считайте её везде одинаково.- Стоп задавайте ценой:
strategy.exit("CH", "L", stop = longStop), пересчитывая уровень на каждом баре. Параметрыtrail_pointsиtrail_offsetзадаются в тиках и держат фиксированное расстояние, ATR они не учитывают. - Максимум с начала сделки удобнее накапливать самим: переменная
var float hh, которая на баре входа равнаhigh, а дальшеmath.max(hh, high). Бар входа:strategy.opentrades.entry_bar_index(0). - Храповик тоже вручную:
longStop := math.max(nz(longStop[1]), hh - k * atr), со сбросом при закрытии позиции.
MultiCharts и TradeStation (EasyLanguage)
AvgTrueRange(22)это простое среднее. Для сглаживания Уайлдера:ATRw = ATRw[1] + (TrueRange - ATRw[1]) / 22.- Выход ценой:
Sell next bar at LongStop stop. Ордер живёт один бар и отправляется на каждом баре, пока позиция открыта. - Максимум с начала сделки:
Highest(High, BarsSinceEntry + 1). На баре входаBarsSinceEntry = 0, окно в один бар. SetDollarTrailingотсчитывает расстояние в деньгах от максимальной открытой прибыли. Это другой выход, ATR он не учитывает.
MetaTrader 5 (MQL5)
iATRтоже простое среднее TR. Для совпадения с Pine считайте Уайлдера сами.- Трейл делается изменением SL позиции на новом баре (
CTrade::PositionModify). Уровень берите с закрытого бара (индекс 1), иначе стоп будет двигаться внутри бара и в тестере, и вживую. - Бары строятся по Bid. SL лонга срабатывает по Bid, SL шорта по Ask. На переходе дня у брокера спред расширяется, и шорт выбивает спредом, хотя на графике цена стопа не касалась.
- Дневные бары идут по времени сервера. Короткие воскресные бары занижают ATR и подтягивают стоп ближе, чем на биржевых данных.
Где идея может сломаться
- Параметров и отдельной статистики по выходу автор не дал. Его цифры (90% шума, крупные выигрыши около 100R) относятся к ансамблю из десяти систем на 70-100 рынках. На одном рынке положительный скос может не проявиться.
- «Граница нормального распределения и хвостов» не формула. Наша калибровка через MAE лишь один из способов её приблизить.
- В боковом рынке трейл по ATR даёт много мелких убытков подряд. Для трендовой системы это нормально, но серия может быть длинной.
- Стоп-ордер не защищает от гэпа: убыток на открытии за стопом может быть в разы больше 1R.
- В спокойной фазе стоп прижимается к цене как раз перед всплеском волатильности. Первый широкий бар может закрыть сделку перед движением.
- Автор торгует CFD с длинным удержанием, от месяцев до лет. Свопы и комиссии за перенос позиции заметно меняют итог и в тесте на чистых ценах не видны.