Ідея коротко
Toby Crabel написав книгу про короткострокові цінові патерни й пробій діапазону відкриття (ORB). Головна думка: ринок чергує спокій і рух, і одна фаза породжує іншу. Тому пробій відкриття варто торгувати після дня стиснення, коли діапазон дня вужчий за кілька попередніх, а не після широкого дня.
Стиснення Крейбел міряє простими фільтрами: NR4 (діапазон дня вужчий за кожен із трьох попередніх), NR7 (вужчий за шість попередніх), inside day (діапазон усередині вчорашнього) і їхнє поєднання ID/NR4. Наступного дня він ставить стоп-ордери вище й нижче діапазону відкриття на відстані stretch, середнього за 10 днів відхилення від відкриття до ближнього екстремуму. Ордер, що спрацював, стає позицією, другий слугує захисним стопом.
У картці ще два варіанти тієї самої ідеї стиснення. Jack Corsellis торгує вузькі денні бари в акціях-лідерах через їхній максимум. Trader X, якого проп-фірма IQ Capital розібрала за логами угод, шукає на годинному графіку ES і NQ чотири свічки поспіль, кожна не ширша за попередню.
Чому це може працювати
Вузький день означає, що ні покупці, ні продавці не змогли зрушити ціну. Ринок у рівновазі й чекає нової інформації. Крейбел пише, що учасники діють за першою ознакою напрямку після такого затишшя, тому перший упевнений вихід із діапазону після стиснення частіше переростає в трендовий день. Stretch відсікає шум біля відкриття: ціна має відійти від діапазону на типову для цього ринку величину.
Другий шар пояснення стосується часу. Ідеальна угода в Крейбела одразу йде в плюс, найкраще вхід у перші 10 хвилин. Що більше часу минуло від відкриття до входу, то нижчий шанс. Якщо після входу ціна стоїть на місці, угода підозріла.
Цифри Крейбела взято з його книги. Ринків і періоду тесту у відео не названо. Пояснення Trader X про зміну режимів волатильності дав ведучий за його логами, сам трейдер правил виходу не розкрив.
Правила
Фільтри стиснення (автор)
// денні бари; день 0 = останній закритий день
R(k) = High[k] - Low[k]
NR4 = R(0) < R(1) AND R(0) < R(2) AND R(0) < R(3) // вужчий за кожен із трьох попередніх
NR7 = R(0) < R(k) для всіх k = 1..6
Inside = High[0] <= High[1] AND Low[0] >= Low[1] // Finetiq: рівність екстремумів допускаємо
ID_NR4 = Inside AND NR4 // найкращий фільтр за даними Крейбела
R2(k) = Highest(High, 2)[k] - Lowest(Low, 2)[k]
NR2bar = R2(0) < Lowest(R2, 20)[1] // найвужчий 2-денний діапазон за 20 днів
R3(k) = Highest(High, 3)[k] - Lowest(Low, 3)[k]
NR3bar = R3(0) < Lowest(R3, 28)[1] // 28 днів у відео #14 (27:23);
// у відео #41 (02:25) Джек називає 20 днів. Перевірте обидва
// Finetiq: порівнюємо з вікнами, що закінчилися на днях 1..N, перетин на день допускаємо
Contraction = NR7 OR ID_NR4 OR (Inside AND R(0) < R(k) для k = 1..4)
// автор: ORB ефективний після inside day, вужчого за 4-5 попередніх днів, і після будь-якого NR7
Вхід ORB (автор)
// stretch за 10 попередніми днями
Stretch = Average( MIN(High - Open, Open - Low), 10 )[1]
// день після Contraction
OR_High, OR_Low = максимум і мінімум діапазону відкриття
// Finetiq: довжину діапазону у відео не названо. Стартова версія: перший 5-хвилинний бар,
// варіант для перевірки: ціна відкриття (OR_High = OR_Low = Open)
BuyLevel = OR_High + Stretch
SellLevel = OR_Low - Stretch
BUY STOP at BuyLevel
SELL SHORT STOP at SellLevel
// перший виконаний ордер = позиція, другий залишається захисним стопом
Long: StopLoss = SellLevel
Short: StopLoss = BuyLevel
CANCEL обидва ордери, якщо за 60 хвилин після відкриття жоден не виконано
// Finetiq: автор каже лише, що пізній вхід гірший, а найгірший вхід перед закриттям
ORBp: одна заявка за трендом (автор)
// у ринку з явним напрямком і на будь-якому inside day (автор)
TrendUp = Close > EMA(Close, 21) AND EMA(Close, 21) > EMA(Close, 21)[5]
TrendDown = Close < EMA(Close, 21) AND EMA(Close, 21) < EMA(Close, 21)[5]
// автор: основний тренд важливіший за все інше. EMA 21 узято з прикладу Джека, нахил за 5 днів Finetiq
IF TrendUp THEN лише BUY STOP at BuyLevel
IF TrendDown THEN лише SELL SHORT STOP at SellLevel
// захисний стоп ставиться після входу: Long StopLoss = SellLevel
IF ціна спершу дійшла до протилежного рівня THEN CANCEL заявку // автор
Супровід
// автор: стоп у беззбиток протягом години після входу
IF минуло 60 хвилин після входу
IF позиція в плюсі THEN StopLoss = EntryPrice
ELSE EXIT AT NEXT BAR OPEN // Finetiq: «угода поводиться не як ідеал» трактуємо як вихід
// автор: ціль це рух на 2-3 дні, але переносити лише при суттєвому прибутку наприкінці сесії
IF до кінця сесії 5 хвилин
IF прибуток у пунктах >= Stretch THEN тримаємо, StopLoss = EntryPrice // Finetiq: «суттєвий» = один stretch
ELSE EXIT
IF позиція відкрита 3 дні THEN EXIT на закритті // Finetiq
Варіант B. Денний вузький бар у лідері (Джек)
// денні бари; які акції вважати лідерами, вирішує відбір поза сигналом
Trigger = (NR7 OR NR2bar OR NR3bar OR Inside)
AND бар біля EMA(Close, 10) або EMA(Close, 21) // автор: найчастіше біля EMA 10 і 21
// Finetiq: «біля середньої» = Low <= EMA <= High
ADRpct = 100 * (Average(High / Low, 20) - 1) // автор: 20-денний ADR% без гепів; Finetiq: формула
IF Trigger
BUY STOP at High[0] // автор: через максимум вузького бару
StopLoss = Low[0] // автор
IF (High[0] - Low[0]) / High[0] * 100 > 2/3 * ADRpct THEN CANCEL // автор: ризик 1/2-2/3 ADR%
CANCEL через 3 дні без виконання // Finetiq
SELL 1/2 (або 1/3) LIMIT at EntryPrice + 1R (або + 2R) // автор
залишок: EXIT AT NEXT BAR OPEN при Close < EMA(Close, 10) або EMA(Close, 21) // автор
Варіант C. Монотонне стиснення Trader X
// годинні бари ES і NQ, позиції переносяться через ніч (автор)
Compression = R(0) <= R(1) AND R(1) <= R(2) AND R(2) <= R(3)
// автор: чотири свічки поспіль, кожна не ширша за попередню, остання найвужча
// Finetiq: фразу можна прочитати і як чотири порівняння (п'ять свічок). Перевірте обидва
BUY STOP at High[0] + 1 тік
SELL SHORT STOP at Low[0] - 1 тік // OCO (автор)
після спрацювання обидва рівні стираються, повторного входу за сетапом немає // автор
не більше однієї угоди на день на інструмент // автор
частина великих новин пропускається // автор, які саме, невідомо
// вихід: в автора волатильнісний трейлінг, формулу підібрати не вдалося
InitialStop = протилежний рівень // Finetiq
Trail (long) = Highest(High з моменту входу) - 3 * ATR(14) // Finetiq: стартове значення
SELL 1/2 LIMIT at EntryPrice + 2R, залишок за Trail // Finetiq: автор закриває частинами
Параметри
| Параметр | Значення | Звідки |
|---|---|---|
| NR4 і NR7 | вужчий за 3 і 6 попередніх днів | автор |
| Inside day | діапазон усередині вчорашнього | автор |
| Найкращий фільтр | ID/NR4 | автор |
| Вікно 2-bar NR | 20 днів | автор |
| Вікно 3-bar NR | 28 днів (#14) або 20 днів (#41) | автор, два значення |
| Stretch | середнє MIN(High − Open, Open − Low) за 10 днів | автор |
| Діапазон відкриття | перший 5-хвилинний бар | Finetiq |
| Вікно для входу | 60 хвилин від відкриття | Finetiq |
| Фільтр тренду ORBp | EMA 21, нахил за 5 днів | автор (приклад Джека), нахил Finetiq |
| Беззбиток | протягом години після входу | автор |
| Перенесення позиції | прибуток наприкінці дня від одного stretch, до 3 днів | Finetiq |
| Варіант B: ризик | не більше 1/2-2/3 ADR% за 20 днів | автор |
| Варіант B: частковий вихід | 1/2 або 1/3 на 1R або 2R | автор |
| Варіант B: трейлінг | закриття нижче EMA 10 або 21 | автор |
| Варіант C: стиснення | 4 свічки, кожна не ширша за попередню | автор |
| Варіант C: таймфрейм і ринки | H1, ES і NQ | автор |
| Варіант C: трейлінг | 3 × ATR(14) від максимуму | Finetiq |
| Варіант C: частковий вихід | 1/2 на 2R | Finetiq |
Що перевірити
- Головне твердження Крейбела. ORB у дні після Contraction проти ORB у дні після широкого дня (діапазон більший за три або шість попередніх) і проти ORB щодня. Якщо після стиснення результат не кращий, фільтр не працює на вашому ринку.
- ID/NR4 проти окремих фільтрів. Порівняйте inside day, NR4 і їхнє поєднання на тому самому вході. Крейбел стверджує, що поєднання краще в 15 тестах із 16.
- Околиця stretch. Множник 0, 0.5, 1 і 1.5, вікно 5, 10 і 20 днів. Окремо довжина діапазону відкриття: ціна відкриття, 5, 15 і 30 хвилин. Якщо результат тримається лише на одній комбінації, це підгонка.
- Вікно 3-bar NR. 20 днів проти 28. Розбіжність у двох відео Джека дає готовий тест чутливості.
- Вихід. Беззбиток через годину проти відсутності беззбитку, проти виходу наприкінці дня і проти перенесення на 2-3 дні. Правило години найсильніше змінює відсоток прибуткових угод.
- Trader X і витрати. Три порівняння проти чотирьох, монотонне стиснення проти класичного NR4 на H1. На ES тік коштує $12.50. Додайте по тіку прослизання на кожному стоп-ордері й комісію і подивіться, скільки залишається від середньої угоди.
- Варіант B. Поріг ризику 1/2 ADR проти 2/3 і проти відсутності порога. Якщо без порога результат не гірший, фільтр лише скорочує кількість угод.
Особливості платформ
TradingView (Pine Script)
- Фільтри стиснення і stretch рахуються за денними барами, а вхід на 5-хвилинних. Беріть учорашні значення без зазирання вперед:
request.security(syminfo.tickerid, "D", expr[1], lookahead = barmerge.lookahead_on). - Денний бар ф'ючерсів CME починається о 18:00 ET попереднього дня. Open, High і Low такого бару це не денна сесія, на якій будується ORB. Для ф'ючерсів рахуйте діапазон, NR і stretch за основною сесією з внутрішньоденних барів.
- Пара заявок:
strategy.entryзіstopіoca_type = strategy.oca.cancel, після входу захисний стоп черезstrategy.exit(..., stop = sellLevel). - Година в угоді на 5-хвилинних барах:
bar_index - strategy.opentrades.entry_bar_index(0) >= 12. Якщо вхід і стоп зачеплені однією свічкою, потрібенuse_bar_magnifier = trueабо молодший таймфрейм.
MultiCharts і TradeStation (EasyLanguage)
Timeце час закриття бару: перший 5-хвилинний бар після відкриття о 09:30 маєTime = 935. Денні значення зручно брати з другого потоку (High of Data2).Buy next bar at BuyLevel stopживе один бар, заявки надсилаються заново на кожному барі. Коли позиція відкрита, перестаньте надсилатиSell Shortі виставляйтеSell next bar at SellLevel stop. Інакше зустрічна заявка переверне позицію, а в Крейбела другий ордер лише закриває її.- NR і stretch залежать від Open, High і Low дня, а вони від шаблону сесії (денна чи цілодобова). Тримайте один шаблон для денного і внутрішньоденного потоку.
- Правило години на 5-хвилинних барах:
If BarsSinceEntry >= 12 then .... Для порядку виконання всередині свічки ввімкніть Bar Magnifier або Look-Inside-Bar.
MetaTrader 5 (MQL5)
- Денний бар будується за часом сервера брокера, і його Open це північ сервера, а не відкриття біржі. Stretch за таким баром інший. Рахуйте денні значення самі з M5 за біржову сесію.
- Короткий недільний бар у частини брокерів майже завжди проходить як NR4 і NR7. Це хибні сигнали на понеділок, їх треба виключити.
- Відкриття 09:30 ET переводьте в серверний час з урахуванням літнього часу.
TimeGMT()у тестері дорівнює серверному часу. - «Один тік» у Trader X це крок ціни ES (0.25). У CFD на S&P 500 крок інший, беріть
SYMBOL_TRADE_TICK_SIZE, а не_Point. OCO і стирання рівнів після входу доведеться писати самим.
Де ідея може зламатися
- Статистика Крейбела стара і з книги. Ринків, періоду й витрат тесту у відео не названо. Патерни стиснення відтоді стали широко відомими.
- Крейбел вимагає враховувати весь контекст ринку: тренд, підтримку й опір, характер конкретного інструмента. Механічна версія цього не містить і може працювати гірше за його практику.
- Результати Trader X охоплюють 25 календарних днів і 20 торгових. Їх показала проп-фірма в рекламному ролику зі знижкою на челендж. Ведучий каже, що за кодом стратегія знаходила й посередні пробої, яких Trader X не брав, тобто відбір сигналів у нього ручний. Формула стопа невідома.
- Стоп-ордери на пробої біля відкриття виконуються з прослизанням, а спреди в перші хвилини ширші. На частих внутрішньоденних угодах це помітна частка очікування.
- Варіант B спирається на вибір акцій-лідерів. Які папери вважати лідерами, Джек вирішує сам, і без цього відбору сигнал на випадковій акції може поводитися інакше.