Идея коротко
Toby Crabel, основатель Crabel Capital, известный работами об opening range breakout, говорит, что его новая работа всё больше соединяет цену и объём. Бар он читает как отношение размера диапазона к объёму, который на этом диапазоне прошёл. Это старая идея Ричарда Вайкоффа: усилие (объём) против результата (движения цены). По словам Крэбела, систематически её почти не использовали, потому что создателям баз данных объём казался неважным.
Наблюдение Крэбела: сейчас, когда на рынках больше возврата к среднему, у максимумов и минимумов часто бывает относительно высокий объём при сужающихся диапазонах. Много важных дневных экстремумов, по его словам, приходит с такой структурой. Вайкофф назвал бы это churning или laboring: большое усилие без результата. Крэбел подчёркивает, что это только предупреждение. Входить нужно после теста уровня и подтверждения, стоять перед движением без проверки незачем.
Порогов в интервью нет. Крэбел назвал способ нормировки (средняя за 10-20 дней на дневках, то же время суток на внутридневных данных), форму сигнала и порядок действий. Пороги, определение теста и выход наши.
Отличие от prior-extreme-raid-reclaim: там уровень прошлого дня и возврат за него, только цена. Здесь уровень появляется из объёмной подписи у многодневного экстремума, а вход ждёт отдельного ретеста через несколько дней.
Почему это может работать
Логика Вайкоффа в балансе сил. Если на максимуме прошло много контрактов, а цена почти не сдвинулась, покупки встретили такой же объём продаж. Крупный продавец раздаёт позицию в спрос, и следующая попытка вверх, скорее всего, снова встретит его. На минимуме зеркально: большие продажи поглощаются, и цена не уходит ниже.
Крэбел связывает частоту таких экстремумов с общим сдвигом рынков к возврату к среднему. В том же интервью он говорит, что крупные участники всё чаще встают перед движением у одно- и двухдневных экстремумов (это разобрано в prior-extreme-raid-reclaim). Проверки этой связи в открытой части интервью нет.
Объём сам Крэбел ставит ниже цены: цена это реальность рынка, а объём бывает обманчивым. Поэтому в карточке сигнал требует ценового подтверждения.
Правила
Нормированный объём и диапазон, дневки (автор)
// дневные бары ликвидного фьючерса
Range = High - Low
RelVol = Volume / SMA(Volume, 20)[1] // автор: средняя за 10 или 20 дней
RelRange = Range / SMA(Range, 20)[1] // автор: диапазон относительно той же средней
// Finetiq: длина 20, средняя без текущего бара
Внутридневная нормировка (автор)
// автор: у объёма внутри дня есть «улыбка», сравнивать с прошлыми днями в то же время
Slot = время открытия бара по часам биржи, например 10:00-10:30 ET
SlotVol = среднее Volume того же Slot за последние 20 дней // Finetiq: 20 дней
SlotRange = среднее Range того же Slot за последние 20 дней
RelVolI = Volume / SlotVol
RelRangeI = Range / SlotRange
// дальше те же правила, что на дневках, с RelVolI и RelRangeI
Предупреждение: усилие без результата (автор, пороги Finetiq)
AtHigh = High >= Highest(High, 20)[1] // Finetiq: экстремум за 20 баров
AtLow = Low <= Lowest(Low, 20)[1]
Effort = RelVol >= 1.5 // автор: относительно высокий объём; Finetiq: 1.5
NoResult = RelRange <= 0.8 // автор: сужающийся диапазон; Finetiq: 0.8
WarnTop = AtHigh AND Effort AND NoResult
WarnBottom = AtLow AND Effort AND NoResult
// вариант для проверки: подпись из 2-3 баров у экстремума,
// средний RelVol >= 1.3 и RelRange каждого бара меньше предыдущего
IF WarnTop THEN Level = High, WarnBar = текущий бар
IF WarnBottom THEN Level = Low, WarnBar = текущий бар
Тест и подтверждение (Finetiq)
// автор: дождаться теста, получить подтверждение, только потом входить
// всё определение теста ниже наше
// шорт после WarnTop
TestWindow = от 2 до 10 баров после WarnBar // Finetiq
Test = High >= Level - 0.25 * ATR(20) // цена вернулась к уровню
AND High <= Level + 0.5 * ATR(20) // и не ушла далеко выше
AND Close < Level // закрылась под уровнем
Confirm = Test AND Close < (High + Low) / 2 // закрытие в нижней половине бара
IF Confirm внутри TestWindow
SELL SHORT STOP at Low бара теста - 1 тик // подтверждение ценой, ордер живёт 1 бар
StopLoss = MAX(Level, High бара теста) + 0.25 * ATR(20)
IF Close > Level + 0.5 * ATR(20) до теста THEN CANCEL // уровень пробит, сигнал снят
// выход: короткое удержание, как у базовых продуктов фирмы Крэбела (до двух дней)
EXIT на закрытии второго дня после входа
// вариант: цель SMA(Close, 20) или противоположный край диапазона WarnBar
// лонг после WarnBottom зеркально
Подключение к карточкам базы (Finetiq)
// пример 1: prior-extreme-raid-reclaim, вариант C (фейд двухдневного экстремума)
IF DayHigh > H2 AND Close60 < H2 // как в карточке
AND WarnTop хотя бы на одном из последних 5 дней // объёмная подпись у этого экстремума
SELL SHORT AT NEXT BAR OPEN
// сравнить с версией без подписи: добавляет ли объём что-то к ценовому возврату
// пример 2: prev-high-breakout-adx (покупка пробоя вчерашнего максимума)
IF WarnTop на вчерашнем баре
CANCEL BUY STOP // не покупать пробой бара с усилием без результата
Параметры
| Параметр | Значение | Откуда |
|---|---|---|
| Средняя для нормировки на дневках | 10 или 20 дней | автор |
| Выбранная длина | 20 дней | Finetiq |
| Нормировка внутри дня | тот же слот времени прошлых дней | автор |
| Дней в среднем по слоту | 20 | Finetiq |
| Экстремум | 20-дневный максимум или минимум | Finetiq |
| Высокий объём | RelVol от 1.5 | Finetiq |
| Узкий диапазон | RelRange до 0.8 | Finetiq |
| Окно теста | 2-10 баров | Finetiq |
| Зона теста | от 0.25 ATR ниже до 0.5 ATR выше уровня | Finetiq |
| Подтверждение | закрытие в нижней половине и пробой минимума бара теста | Finetiq |
| Стоп | за уровнем или максимумом теста плюс 0.25 ATR | Finetiq |
| Выход | закрытие второго дня | Finetiq (по удержанию до двух дней у фирмы автора) |
Что проверить
- Отмечает ли подпись экстремумы. Разметьте все 20-дневные максимумы на ES, CL, GC и ZN. Сравните долю тех, что остались максимумом следующие 10 дней, среди WarnTop и среди остальных. Это прямая проверка наблюдения Крэбела.
- Окрестность порогов. RelVol 1.2, 1.5 и 2.0; RelRange 0.6, 0.8 и 1.0; средняя 10 и 20 дней. Сигнал редкий, поэтому смотрите и на число событий.
- Нужен ли тест. Шорт на следующий день после WarnTop против входа после теста. Крэбел настаивает на тесте, проверьте, окупает ли он пропущенные сделки.
- Объём против одного диапазона. Тот же сигнал только с NoResult, без условия объёма. Если результат тот же, объём ничего не добавляет, а данные упрощаются.
- Годы. Разбейте результат по пятилеткам. Крэбел говорит о нынешнем рынке с большим возвратом к среднему. Если на старых данных сигнал слабее, это совпадёт с его словами.
- Внутридневная версия. Нормировка по слоту времени против нормировки по средней соседних баров. На барах у открытия и закрытия разница должна быть заметной.
- Издержки. Удержание два дня и стоп в долях ATR на фьючерсах. Добавьте проскальзывание на стоп-входе.
Особенности платформ
TradingView (Pine Script)
- На дневках фьючерса объём есть, RelVol и RelRange считаются через
ta.smaв пару строк. - Для внутридневной нормировки нужны средние по слотам времени, их удобно хранить в
arrayпо номеру слота. Слот задавайте по времени биржи черезtime(timeframe.period, "1000-1030", "America/New_York"), иначе он уедет при переходе на летнее время. - Глубина внутридневной истории ограничена тарифом. 20 дней на слот плюс тест на нескольких годах могут не поместиться.
- На непрерывном фьючерсе объём в дни ролловера делится между контрактами. RelVol у экспирации проваливается или прыгает, проверьте такие даты отдельно.
MultiCharts и TradeStation (EasyLanguage)
- У фьючерсов дневной бар TradeStation закрывается по settlement, а 1440-минутный по последней сделке. Settlement меняет только закрытие. High, Low и диапазон у двух видов бара различаются, лишь если у них разные границы сессии, например дневной бар по регулярной сессии, а 1440-минутный по полной. Сверьте шаблоны сессий, иначе RelRange и WarnTop могут выпасть на разные дни. При одинаковых границах расходятся только расчёты от закрытия.
- На внутридневных барах TradeStation полный объём исторически лежит в
Ticks, аVolumeможет содержать только объём на повышении. В MultiCharts поле задаёт настройка символа (Build Volume On). Sell Short next bar at X stopживёт один бар, что совпадает с правилом подтверждения. Уровень и окно теста храните в переменных.AvgTrueRangeэто простое среднее TR. Зона теста в долях ATR будет чуть другой, чем в Pine.
MetaTrader 5 (MQL5)
- У CFD и форекса только тиковый объём (
iTickVolume): число изменений котировки у брокера, а не контракты. Большой объём без результата по нему не проверяется. Реальный объём (iRealVolume) есть только у биржевых фьючерсов у немногих брокеров. - Без объёма остаётся только ценовая часть, узкий диапазон у экстремума. Это другая идея, её нужно тестировать отдельно (проверка 4).
- Дневной бар CFD и внутридневные слоты строятся по серверному времени брокера. Слот 10:00 ET переводите в серверное время с учётом летнего времени.
- Уровень и стоп задавайте в цене, а не в
_Point.
Где идея может сломаться
- Крэбел описал наблюдение, а не систему. Пороги, тест, подтверждение и выход наши, и слабый результат может быть слабостью формализации.
- Цифр в интервью нет. Разбор графиков с объёмом ушёл в платный бонус-выпуск для участников сообщества ведущего, в открытой части только слова.
- Объём непрерывного фьючерса искажается на ролловерах, и склейка контрактов у поставщиков данных устроена по-разному.
- Сигнал редкий: 20-дневный экстремум с высоким объёмом и узким диапазоном бывает несколько раз в год на рынке. Для выборки нужны десятки рынков.
- Крэбел сам предупреждает, что объём бывает обманчивым, а цена первична.
- В выпуске реклама курса ведущего по крипто-трейдингу.