Ідея коротко
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 з довгим утриманням, від місяців до років. Свопи і комісії за перенесення позиції помітно змінюють підсумок і в тесті на чистих цінах не видні.