← Все идеи
#005ПробойПозиционная

Пробой канала: что сработает первым, Donchian или Keltner

Вход на пробое 20-дневного канала, выход на пробое 40-дневного вниз. Каналов два, Donchian и Keltner, сигнал даёт тот, который цена заденет первым. Antonacci проверил правило на 48 секторах США за 100 лет, Basso торгует 9-дневную версию.

The Algorithmic Advantage · Gary Antonacci · Смотреть видео

Рынки

Акции, Индексы, Фьючерсы, Криптовалюты

Таймфрейм

D1

Данные

OHLC

Правила

Частично формализовано

Сложность

Средняя

Статус

Не проверено

Часть правил дописали мы, это помечено в тексте.

TradingView есть ловушки
EasyLanguage есть ловушки
MetaTrader 5 есть ловушки

Идея коротко

У классического пробоя один уровень: максимум за N дней. Здесь уровней два. Donchian отмечает максимум и минимум за N дней, Keltner рисует полосу вокруг средней на расстоянии нескольких ATR. Они по-разному реагируют на волатильность, и в разные дни ближе к цене оказывается то один, то другой. Правило простое: сигнал даёт тот канал, который цена задела первой.

Gary Antonacci и Carlo Zarattini применили это к 48 отраслевым секторам США за сто лет. Вход в лонг на первом касании верхней границы 20-дневного канала. Выход на первом касании нижней границы 40-дневного канала: длину выхода удвоили, чтобы дать сделке место и не плодить оборот. Шортов нет, размер позиции нормирован на волатильность.

Tom Basso использует тот же приём с тремя индикаторами (Donchian, Bollinger, Keltner) и короткой длиной 9 дней. Его версия всегда в рынке и переворачивается в обе стороны.

Почему это может работать

Оба автора объясняют каналы как полосу шума. Внутри неё цена ходит без направления, и торговать там незачем: в боковике получаются только пилы. Выход за полосу Antonacci считает признаком продолжения движения, его гипотеза звучит как «новый максимум четырёх недель обещает продолжение». Basso сравнивает это с термостатом, которому нужен запас в пару градусов, чтобы не щёлкать каждую минуту.

Ширина Keltner и Bollinger зависит от волатильности. В тихом рынке линии сходятся, в нервном расходятся автоматически. Basso считает, что поэтому такие индикаторы выдерживают смену условий лучше фиксированных пересечений средних. Первое касание берёт ту меру шума, которая сейчас ближе к цене. Basso прямо говорит, что ему всё равно, какой из индикаторов поставит ордер: все три измеряют один и тот же шум.

В разложении результата у Antonacci главный вклад в Sharpe дал тайминг, а не выбор секторов. Ведущий Rich Brennan объясняет это тем, что пробои пропускают основную массу мелких движений и работают на хвостах распределения. Эти объяснения не проверены нами.

Правила

Каналы

// дневные бары
DonchianUpper(N) = максимум High за N последних закрытых баров
DonchianLower(N) = минимум  Low  за N последних закрытых баров

KeltnerUpper(N) = EMA(Close, N) + K * ATR(N)
KeltnerLower(N) = EMA(Close, N) - K * ATR(N)
// Basso описывает Keltner как EMA 21 плюс ATR примерно за 21 день, умноженный на коэффициент.
// Finetiq: у Antonacci длина Keltner равна длине канала (20 или 40), K = 2 как стартовое значение

BollingerUpper(N) = SMA(Close, N) + B * StdDev(Close, N)
BollingerLower(N) = SMA(Close, N) - B * StdDev(Close, N)
// Finetiq: B = 2, ширина в видео не названа

Первое касание

// первым сработает уровень, ближайший к цене
FirstUp(N)   = min(DonchianUpper(N), KeltnerUpper(N))
FirstDown(N) = max(DonchianLower(N), KeltnerLower(N))

// Finetiq: полоса Keltner или Bollinger может оказаться за ценой уже на закрытии.
// Тогда касание уже случилось: вход по рынку на следующем открытии, без стоп-ордера

Основная система: Antonacci, только лонг

IF position = FLAT
    IF Close > KeltnerUpper(20)
        BUY AT NEXT BAR OPEN                  // Finetiq: уровень пройден на закрытии
    ELSE
        BUY STOP at FirstUp(20)               // автор: первое касание 20-дневного канала

IF position = LONG
    IF Close < KeltnerLower(40)
        EXIT AT NEXT BAR OPEN                 // Finetiq
    ELSE
        SELL STOP at FirstDown(40)            // автор: первое касание 40-дневного канала вниз

// шортов нет: у акций восходящий дрейф (автор)
// отдельного стоп-лосса нет, его роль играет выход по 40-дневному каналу

Размер позиции (автор, числа Finetiq)

Vol    = StdDev(дневные доходности, 20) * sqrt(252)   // Finetiq: окно в видео не названо
Weight = TargetVol / Vol / M                          // автор: нормировка на волатильность
TargetVol = 10%                                       // автор, по памяти
M = число инструментов в корзине                      // Finetiq: M = 1 для одного ETF
Weight = min(Weight, 1 / M)                           // Finetiq: без плеча
// перебалансировка ежедневно (автор)
// корзина: держим все сектора с сигналом, без ранжирования (автор)

Вариант B. Basso: 9 дней, три канала, всегда в рынке

// индексные фьючерсы, всегда лонг или шорт, развороты в обе стороны (автор)
// у Basso та же 9-дневная связка на микро-фьючерсах биткоина и эфира, направление там не уточнено
N = 9                                                          // автор, для всех трёх индикаторов

UpperLevel = min(DonchianUpper(9), BollingerUpper(9), KeltnerUpper(9))
LowerLevel = max(DonchianLower(9), BollingerLower(9), KeltnerLower(9))
// автор: ордер ставит линия, ближайшая к цене, какой индикатор это будет, неважно

IF position = SHORT OR position = FLAT
    BUY STOP at UpperLevel
IF position = LONG OR position = FLAT
    SELL SHORT STOP at LowerLevel
// Finetiq: то же правило про уровень, пройденный уже на закрытии

// размер: общий принцип Basso
Units = Equity * 0.5% / (|EntryPrice - LowerLevel| * PointValue)   // для лонга
// автор: в прибыльной позиции риск может дорасти до 1%, дальше позиция урезается

Вариант C. Basso: трёхдневный Donchian

// около 26–27 фьючерсов, всегда в рынке (автор)
BUY STOP at DonchianUpper(3)
SELL SHORT STOP at DonchianLower(3)
// нижняя линия и есть трейлинг-стоп лонга, отдельный трейлинг не нужен (автор)
// внутренние дни не пробивают канал и игнорируются сами собой (автор)

Параметры

Параметр Значение Откуда
Канал входа (A) 20 дней, Donchian и Keltner автор
Канал выхода (A) 40 дней, Donchian и Keltner автор
Правило срабатывания первое касание любого канала автор
Направление (A) только лонг автор
Множитель Keltner K 2 Finetiq
Середина и ширина Keltner EMA и ATR той же длины Finetiq (у Basso EMA 21 и ATR около 21)
Размер (A) нормировка на волатильность, цель около 10% автор
Перебалансировка (A) ежедневно автор
Окно волатильности 20 дней Finetiq
Уровень пройден на закрытии вход по рынку на следующем открытии Finetiq
Длина (B) 9 дней, три индикатора автор
Ширина Bollinger B 2 стандартных отклонения Finetiq
Направление (B, C) всегда в рынке, развороты автор
Длина (C) 3 дня, только Donchian автор
Риск на позицию (B, C) 0.5% капитала, до 1% в прибыльной позиции автор (общий принцип Basso)

Что проверить

  1. Первое касание против одного канала. Три прогона варианта A: только Donchian 20/40, только Keltner 20/40, первое касание. Если комбинация не лучше лучшего из двух, второй канал только добавляет сделки.
  2. Множитель Keltner. K = 1.5, 2, 2.5, 3. При малом K полоса Keltner почти всегда ближе к цене и фактически заменяет Donchian. Запишите, какая линия дала сигнал в каждой сделке, и посмотрите на доли.
  3. Асимметрия 20/40. Сравните 20/40 с 20/20 и 20/10. Автор удвоил длину выхода ради меньшего оборота. Проверьте, сколько это стоит в отданной прибыли и просадке.
  4. Ежедневная перебалансировка. Нормировка каждый день против перебалансировки только при отклонении веса больше 20%. Автор признаёт, что ежедневная версия заметно увеличивает число сделок.
  5. Окрестность 9 дней у Basso. 7, 9, 12, 15 дней на индексном фьючерсе с полными издержками. Система всегда в рынке и переворачивается часто, издержки здесь решают.
  6. Сектор против индекса. Вариант A на одном секторном ETF против того же правила на S&P 500. Если на широком индексе результат близок, основную работу делает тайминг, как и говорит автор.
  7. Вход по рынку после закрытия за полосой. Посчитайте долю таких входов и среднее проскальзывание от уровня. На гэпах цена входа заметно хуже, чем в идеальном тесте по уровню.

Особенности платформ

TradingView (Pine Script)

  • ta.kc считает середину и ширину по своей реализации, а реализации Keltner различаются. Для совпадения с правилами соберите полосу сами: ta.ema(close, 20) + k * ta.atr(20). ta.atr сглаживает по Уайлдеру.
  • Стоп-ордер на покупку ниже текущей цены исполняется на открытии следующего бара. Если полоса Keltner уже под ценой, strategy.entry(..., stop = firstUp) превращается во вход по рынку. Разделяйте этот случай явно, иначе вход будет выглядеть как пробой уровня.
  • ta.stdev по умолчанию генеральное стандартное отклонение, как StdDev в EasyLanguage и iBands в MQL5. Полосы Bollinger на трёх платформах совпадут при одинаковой длине.
  • Стратегия торгует один символ. Корзину из 48 секторов с общей нормировкой в Pine не протестировать. Вариант A проверяется на одном ETF, корзина собирается вне TradingView.

MultiCharts и TradeStation (EasyLanguage)

  • Keltner соберите сами: XAverage(Close, 20) + K * ATRw, где ATRw посчитан по Уайлдеру вручную. AvgTrueRange это простое среднее TrueRange, полосы с ним будут другими. Выберите одну версию ATR и держите её на всех платформах.
  • Buy next bar at FirstUp stop живёт один бар. Отправляйте его на каждом баре. Если уровень ниже открытия следующего бара, ордер исполнится по открытию.
  • Для фьючерсов (варианты B и C) закрытие дневного бара в TradeStation это settlement, у 1440-минутного бара последняя сделка (Kevin Davey, The Algorithmic Advantage #036). Трёхдневный канал на двух видах бара даёт разные уровни почти каждый день.
  • Корзина секторов с нормировкой по волатильности тестируется в портфельном модуле: Portfolio Trader в MultiCharts, Portfolio Maestro в TradeStation.

MetaTrader 5 (MQL5)

  • Встроенного Keltner нет. Среднюю берите через iMA(..., MODE_EMA, ...), ATR считайте сами: iATR это простое среднее TR.
  • Секторные ETF есть не у каждого брокера. У CFD на ETF начисляется своп, а позиция варианта A держится неделями и месяцами.
  • Ежедневная нормировка упирается в шаг лота SYMBOL_VOLUME_STEP. На небольшом счёте вес меняется ступенями, и часть перебалансировок не происходит.
  • Для вариантов B и C на неттинговом счёте разворот делается одной сделкой двойного объёма, на хеджинговом старую позицию нужно закрыть явно.

Где идея может сломаться

  • Множитель Keltner и ширина Bollinger в видео не названы. От них зависит, какой канал срабатывает первым, то есть суть правила. Antonacci признаёт, что деталей статьи не помнит, точные настройки нужно брать из самой статьи.
  • Столетние данные это отраслевые индексы, а не торгуемые бумаги. История секторных ETF короткая, автор проверял их отдельно.
  • Автор сам показывает неровность: в столетней таблице есть великолепные и слабые периоды, режимы длятся по 15–20 лет. Тест на 5–10 годах может целиком попасть в слабый режим.
  • Хедж шортом улучшал Sharpe и просадку, но снижал итоговую доходность, поэтому модель оставили только длинной. Просадки лонг-версии в медвежьем рынке никто не страхует.
  • У Basso нет цифр результата. Версии B и C описаны как его текущие стратегии, без статистики и без ширины полос.
  • Ежедневная нормировка по волатильности увеличивает оборот. На малом счёте и CFD издержки могут съесть разницу с простым удержанием.

Источники

  • 026 - Gary Antonacci II - New Models & Research Updates

    The Algorithmic Advantage · Gary Antonacci · 2024-09-13

    • 03:44Данные: отраслевые индексы с сайта Кена Френча
    • 05:33Две модели: каналы Donchian и Keltner
    • 06:29Вход на 20 днях, выход на 40 днях
    • 06:45Срабатывает канал, задетый первым
    • 07:30Все сектора с сигналом, размер по волатильности
    • 09:33Новый максимум четырёх недель как гипотеза продолжения
    • 10:53Нормировка волатильности, ежедневная перебалансировка
    • 12:59Издержки и секторные ETF
    • 17:08Только лонг, хедж не добавил доходности
    • 20:33Тайминг как главный вклад в Sharpe
  • 023 - Tom Basso - The Calm Within the Chaos

    The Algorithmic Advantage · Tom Basso · 2024-08-09

    • 26:14Риск 0.5% на позицию, до 1% в прибыльной
    • 35:58Криптофьючерсы: 9-дневный набор, первое касание
    • 55:52Keltner: EMA 21 и ATR, умноженный на коэффициент
    • 56:47Полоса шума: боковик не торгуется
    • 1:23:55Тайминг индексов: 9 дней, всегда в рынке
    • 1:25:073-дневный Donchian на 26–27 фьючерсах
    • 1:26:30Нижняя линия Donchian и есть трейлинг-стоп
    • 1:27:02Ордер ставит линия, ближайшая к цене

Заявлено автором

Эти цифры и утверждения принадлежат автору. Мы их не проверяли.

  • Статья Gary Antonacci и Carlo Zarattini «A Century of Profitable Industry Trends»: 48 отраслевых секторов США, годовые результаты с 1924 по 2024 год. По словам автора, с учётом транзакционных издержек результат заметно лучше buy and hold S&P 500 и подтверждается на секторных ETF SPDR.
  • В разложении результата на вклад рынка, отраслей и тайминга (раздел 4.3 статьи) главным источником максимального Sharpe оказалась модель тайминга, то есть сами правила каналов.
  • Размер позиций нормирован на волатильность с ежедневной перебалансировкой. Целевой уровень автор называет по памяти: возможно, 10%.
  • Tom Basso торгует 9-дневную версию на индексных фьючерсах и микро-фьючерсах CME на биткоин и эфир, 3-дневный Donchian на 26–27 фьючерсах. По его словам, перед записью выпуска (август 2024) 3-дневная версия хорошо взяла падение акций, рост облигаций и какао.

Похожие идеи

Обновлено: 2026-09-10