Идея коротко
Nicolas Darvas, профессиональный танцор, заработал в 1950-х $2 млн на акциях и описал метод в двух книгах. Jack Corsellis разбирает вторую, «You Can Still Make It in the Market». Она вышла примерно через 15 лет после знаменитой первой и подробнее описывает правила.
Рост сильной акции Дарвас видел как лестницу из ящиков. Вершина ящика: максимум, который цена не превышает три дня подряд. Дно: минимум после падения от вершины, который не пробивается три дня подряд. Зона опасности начинается на 5% ниже дна. Пока бумага колеблется внутри своего верхнего ящика, её держат и колебания игнорируют. Пробой вершины верхнего ящика в новые максимумы даёт покупку со стопом 10%. Когда над входом сложился новый ящик, выход при падении под его дно в зону опасности.
Во второй книге Дарвас поменял правило входа. Первый пробой всё чаще сразу возвращался в ящик, и он стал ждать второго: пробой, откат, затем новый максимум выше максимума первого пробоя. Если после первого пробоя отката нет и бумага просто растёт, он её не преследует.
С weekly-box-breakout метод роднит сама коробка, но там недельные бары, коробка от шести недель и начальный стоп в средней трети коробки. С new-high-breakout-ma10-exit общий вход в новые максимумы, но выход там по 10-дневной средней. У Дарваса уровень задаёт трёхдневная пауза, стоп поднимается ящик за ящиком, а по новым ящикам позиция добирается. У turtle-4w-2w окна фиксированы: 20 и 10 дней.
Почему это может работать
Логика Дарваса в пересказе Джека. Единственная веская причина купить акцию в том, что её цена растёт, а компанию с многообещающим будущим внимательные профессионалы не пропустят. Поэтому он покупал дорого, чтобы продать дороже, у 52-недельных и исторических максимумов. Ящик это ступень тренда: пока цена в верхнем ящике, тренд цел, а падение под дно означает смену характера движения.
Второй пробой Дарвас объяснял поведением профессионалов. Они знают, что пробой сопротивления служит сигналом для чартистов, и продают им бумагу на этом пробое. Откат после первого пробоя снимает эти продажи, а новый максимум выше него показывает, что спрос остался.
Джек добавляет своё наблюдение. Лучше работают пробои из плотной консолидации прямо под уровнем, с сохнущим объёмом. Рывок от дна ящика сразу к вершине упирается в продавцов, купивших наверху раньше.
Дарвас сделал состояние на бычьем рынке, и Джек подчёркивает, что метод требует сильного тренда рынка, отрасли и самой бумаги. Статистики по правилам в видео нет.
Правила
Правила Дарваса помечены как автор. Дополнения Джека помечены как сообщество. Недостающие детали дописаны нами и помечены как Finetiq.
Ящик (автор)
// дневные бары, одна акция
// вершина: максимум, который 3 дня подряд не превышен
IF High > CandTop THEN CandTop = High, TopCount = 0 // новый максимум сбрасывает счёт
ELSE TopCount = TopCount + 1
IF TopCount >= 3 AND вершина не подтверждена
BoxTop = CandTop
CandBottom = минимум Low после бара вершины
// дно: минимум после вершины, который 3 дня подряд не пробит
IF Low < CandBottom THEN CandBottom = Low, BottomCount = 0
ELSE BottomCount = BottomCount + 1
IF BottomCount >= 3 THEN BoxBottom = CandBottom // ящик готов
IF High > BoxTop до готовности дна THEN искать вершину заново // Finetiq
Danger = BoxBottom * 0.95 // автор: зона опасности на 5% ниже дна
// сообщество (Джек, пример ASYS): дно по закрытиям, тени ниже уровня не в счёт
Верхний ящик и новые максимумы (автор)
TopmostOK = BoxTop >= максимум High за всю историю до ящика // автор: обычно только пробой исторического максимума
// автор: после двухлетнего медвежьего рынка ждать исторического максимума не нужно
// Finetiq: если S&P 500 за последние 2 года падал от максимума на 20% и больше,
// достаточно 52-недельного максимума
// автор: бумагу не в своём верхнем ящике не держать и не покупать
Вход A. Первый пробой (автор, ранняя версия)
IF ящик готов AND TopmostOK AND MarketPosition = 0
BUY STOP at BoxTop + Offset // автор: ящик 30-35, ордер на 35¼
InitialStop = EntryPrice * 0.90 // автор: стоп 10% на первом пробое
Вход B. Второй пробой (автор, вторая книга)
// первый пробой: High > BoxTop. Не покупаем
P1High = Highest(High) с бара первого пробоя
IF Close < BoxTop THEN Reaction = TRUE // Finetiq: откат считаем закрытием обратно в ящике
IF Reaction AND MarketPosition = 0
BUY STOP at P1High + Offset // автор: новый максимум выше максимума первого пробоя
IF Close < Danger THEN сетап отменён // Finetiq
// автор: если отката нет и бумага растёт дальше, её не преследовать.
// Finetiq: такой бумаге ждём следующий ящик выше
InitialStop = EntryPrice * 0.90
// сообщество (Джек): начальный стоп можно ставить под дном ящика, если он ближе 10%.
// В его учебной сделке это около 7%
Стоп, выход и добор (автор, детали Finetiq)
// когда над входом сложился новый ящик (автор)
Stop = MAX(Stop, NewBoxBottom * 0.95) // Finetiq: стоп только поднимается
SELL STOP at MAX(InitialStop, Stop)
// сообщество (Джек, учебная сделка): выход при пробое дна ящика без 5% запаса
// правило 20% звучит в видео двумя способами (автор)
A: IF Close < HighestHigh(с входа) * 0.80 THEN EXIT AT NEXT BAR OPEN
// откат цены больше 20% от максимума, пример ASYS
B: IF MaxOpenProfit > 0 AND OpenProfit < 0.80 * MaxOpenProfit THEN EXIT AT NEXT BAR OPEN
// не отдавать больше 20% прибыли
// Finetiq: включать после прибыли от 20%, иначе правило закроет сделку на первом шуме
// добор (автор, пример Джека)
IF новый ящик готов выше EntryPrice
BUY STOP at NewBoxTop + Offset // Finetiq: 50% начального объёма, не больше 2 доборов
Ордер (сообщество)
// Джек: по его пониманию, Дарвас входил стоп-лимитным ордером
BUY STOP at Trigger LIMIT Trigger * 1.01 // сообщество (Джек): лимит в пределах 1% от пивота
// на гэпе выше лимита сделки нет
Отбор бумаг (отдельное правило)
// автор: сначала рынок, затем отрасль, затем бумага, все в восходящем тренде
// автор: новые растущие отрасли, большие прибыли или их ожидания, не крупнейшие компании
// сообщество (Джек), скрин для сегодняшнего рынка:
Close > SMA(Close, 200) AND Close > SMA(Close, 50)
AND Close >= 0.80 * Highest(High, 252) // в пределах 10-20% от 52-недельного максимума
AND малая или средняя капитализация, сильная отрасль, рост прибыли или выручки
// Finetiq: тренд рынка = S&P 500 выше SMA 200
// сообщество (Джек): около 4 бумаг в портфеле
Параметры
| Параметр | Значение | Откуда |
|---|---|---|
| Таймфрейм | дневные бары | автор |
| Вершина и дно | 3 дня подряд без обновления | автор |
| Зона опасности | 5% ниже дна ящика | автор |
| Требование максимума | исторический максимум | автор |
| Исключение после медвежьего рынка | 52-недельный максимум, если S&P 500 падал от 20% за 2 года | автор (исключение), Finetiq (порог) |
| Вход | первый или второй пробой | автор |
| Откат для второго пробоя | закрытие обратно в ящике | Finetiq |
| Offset | ¼ пункта при цене 35 | автор |
| Начальный стоп | 10% от входа | автор |
| Стоп после нового ящика | 5% под его дном | автор |
| Правило 20% | откат цены от максимума или отдача прибыли | автор (две формулировки) |
| Порог для отдачи прибыли | прибыль от 20% | Finetiq |
| Лимит стоп-лимитного ордера | 1% над уровнем | сообщество (Джек) |
| Добор | на пробое нового ящика | автор |
| Объём добора | 50%, не больше 2 раз | Finetiq |
| Скрин | выше SMA 50 и 200, до 20% от 52-недельного максимума | сообщество (Джек) |
| Число бумаг | около 4 | сообщество (Джек) |
Что проверить
- Первый пробой против второго. Главный вопрос книги. На одних и тех же ящиках сравните среднюю сделку, долю пробоев, которые за 5 дней вернулись в ящик, и число сильных движений, пропущенных из-за того, что второго пробоя не было.
- Определение отката. Закрытие обратно в ящике против любого отката на 3-5% от максимума первого пробоя. От этой формализации зависит, сколько сделок получит вход B.
- Три дня и тени. 2, 3, 4 и 5 дней для вершины и дна; дно по минимумам против дна по закрытиям, как у Джека. Если результат резко меняется, ящик неустойчив.
- Стоп. Зона опасности 5% под дном против выхода точно на дне и против фиксированных 10%. Отдельно две формулировки правила 20%.
- Исторический максимум. Исторический против 52-недельного и против отсутствия требования. Смотрите на годы после медвежьих рынков, когда Дарвас сам снимал требование.
- Стоп-лимит. Доля сигналов, пропущенных из-за гэпа выше лимита 1%, и результат этих сигналов по цене открытия. Если пропускаются лучшие сделки на отчётах, лимит вредит.
- Концентрация и добор. 4 бумаги против 10 и 20 на одних сигналах, с добором и без. Дарвас считает, что меньше бумаг значит безопаснее. Проверьте разброс годовых результатов.
Особенности платформ
TradingView (Pine Script)
- Ящик строится как машина состояний на переменных
varс пересчётом на закрытии бара. Ордерstrategy.entry("L", strategy.long, stop = boxTop + offset)висит до исполнения. Снимайте его черезstrategy.cancel, когда ящик сменился или сетап отменён. - Если в
strategy.entryзаданы иstop, иlimit, получается стоп-лимитный ордер, как у Джека. - Добор разрешается параметром
pyramidingвstrategy(), по умолчанию дополнительных входов нет. - Исторический максимум зависит от глубины загруженной истории, она ограничена тарифом. Корректировка на сплиты и дивиденды меняет старые максимумы и вершины ящиков.
MultiCharts и TradeStation (EasyLanguage)
Buy next bar at BoxTop + Offset stopживёт один бар. Пока ящик актуален, ордер нужно отправлять на каждом баре.- Стоп-лимитный вход в тесте проще моделировать условием: если бар открылся выше уровня на 1% и больше, сделки нет. Так результат не зависит от того, как платформа исполняет стоп-лимит на истории.
- Проверьте в свойствах стратегии разрешение нескольких входов в одну сторону. Без него добор на новом ящике не исполнится.
- Стопы задавайте ценой:
Sell next bar at Stop stop.SetStopLossсчитает в деньгах, на акцию или на позицию, и после добора даёт другой уровень. - Исторический максимум храните в переменной
ATH = MaxList(ATH, High[1])и грузите всю доступную историю.
MetaTrader 5 (MQL5)
- CFD на акции у брокеров обычно только по крупным компаниям. Малых и средних растущих бумаг, которые искал Дарвас, там мало, а история короче биржевой, и исторический максимум по ней ненадёжен.
- На неттинговом счёте добор сливается в одну позицию со средней ценой. Стоп 10% от первого входа храните в своей переменной. На хеджинговом счёте у каждого добора свой тикет и свой стоп.
BuyStopчерезCTradeс экспирацией на день пересоздавайте после закрытия каждого бара. Стоп-лимитный тип ордера в MQL5 есть, но его поддержка на CFD на акции зависит от брокера.- Дневной бар строится по времени сервера, у части брокеров в него попадают предторговые котировки. Вершины и дна ящиков тогда отличаются от биржевых.
Где идея может сломаться
- Правила пересказаны из книги 1970-х годов, статистики нет. Состояние Дарвас сделал на бычьем рынке конца 1950-х, и известная история успеха сама по себе отобрана выжившим.
- Дарвас себе противоречит. Правило второго пробоя в книге есть, но в примере с Teledyne он покупает первый пробой со стопом 10%. Джек сам не уверен, всегда ли Дарвас ждал второго.
- Числом откат для второго пробоя в книге не задан. Наша формализация может отбирать другие сделки, чем отбирал бы Дарвас.
- Правило 20% звучит в видео двумя способами: откат цены от максимума и отдача накопленной прибыли. Это разные выходы с разной частотой.
- Отбор бумаг у Дарваса качественный: лидеры новых отраслей, ожидания прибыли, сильная группа. Технический скрин воспроизводит только часть, а тест на сегодняшнем списке акций завышен выжившими.
- Цены в те годы шли дробями, отступ в ¼ пункта при цене 35 это около 0.7%. На современных ценах отступ задавайте в процентах или тиках.
- Около четырёх бумаг в портфеле дают большой разброс результата. Видео рекламирует MarketSmith и платное сообщество Джека.